biosolveit::cli
组件 06 · 模糊药效团相似性 · v7.1

FTrees — 特征树相似性搜索

FTrees 用查询分子做超快、模糊的相似性搜索,可横跨万亿级组合化学空间(Chemical Space)或传统枚举库。它把分子表示成"特征树"(Feature Tree):每个节点代表一个子结构,携带空间体积、环成员、药效团样性质(给体/受体/酰胺样/芳香/疏水亲水)。两棵树像序列比对一样对齐,得到 0–1 的全局相似性。由于描述符是模糊的,FTrees 擅长发现指纹方法会漏掉的骨架跃迁(scaffold hops)

可执行文件
ftrees
查询输入
.smi .sdf .mol .mol2 或 SMILES
检索对象
.space 或库文件
默认输出/阈值
100 / 相似性 0.8

01 它能做什么

  • 跨万亿级组合化学空间做超快、模糊的药效团相似性搜索。
  • 在枚举库文件(SMILES/SDF/MOL2)中做模糊相似性搜索。
  • 可视化查询与命中之间映射子结构的局部相似性(match image)。
"Late talkers" — 相似性数值的直觉
特征树相似性是模糊的:0.3 或 0.5 并不意味着分子有一半相似。可感知的相似性大约从 0.8 才开始,化学家通常在 0.85 以上才认可"明显相似"。这也是默认阈值定为 0.8 的原因。另外 FTrees 对立体化学与邻/间/对位取代是不敏感的(R 可能其实是 S,顺式可能其实是反式)。

02 工作原理:特征树(Feature Tree)

FTrees 的基本原理是把分子表示成一棵叫"特征树"的树(Figure 1)。树由节点(图中彩色圆圈,代表某个分子子结构)和描述其连接关系的组成。每个节点编码以下属性:

  • 空间体积(Spatial volume)
  • 环成员关系(Ring membership)
  • 类药效团性质:给体、受体、酰胺样、芳香、疏水/亲水
特征树节点示例
Figure 1:代表某分子子结构的特征树节点(彩色圆圈)

两棵树像序列比对一样相互对齐,给出两棵树上对应节点的映射。被映射的节点根据其性质轮廓比较,得到"局部相似性(Local Similarity)";"全局相似性(Global Similarity)"本质上是整体平均,用 0(不同)到 1(相同)衡量多个分子的相似程度。子结构的着色帮助识别查询的哪个子结构匹配到命中的哪个子结构。FTrees 找到的对齐(映射)是所有可能中全局相似性最高的那个。

两种算法(取决于检索对象)

  • 标准分子库:查询与命中的特征树用动态规划算法对齐,使两棵树(分子)的整体相似性最大化。可输出整体相似性与局部相似性,并把对齐与局部相似性可视化——它直观展示了计算机为何认为两分子的某些部分相似或不相似。
  • 化学空间导航:查询特征树被拆成片段,在遵守查询原有连接性的前提下,从化学空间里搜索相似性尽量接近目标相似性的片段;下一个片段按空间编码的连接/反应规则添加以优化相似性得分。最终从化学空间构建出一个与查询(的特征树)尽可能重叠、并最小化"目标相似性与实际相似性之差"(默认目标=完全相同)的新分子。

FTrees 在幕后用"乐高式"化学反应组合来遍历巨大的化学空间:把反应形式化、编码成带连接子的连接反应(Figure 2)。片段携带特定 linker(图中乐高砖),只能按反应定义所决定的、化学上有意义且可合成的方式组合——例如灰砖只能接红砖、绿砖只能接橙砖。

乐高式 linker 编码的反应与片段
Figure 2:用"乐高式"linker 编码的反应及其相关片段

整体特征树相似性归一化为 0(完全不同)到 1(相同)。由于它源自编码模糊、类药效团性质的特征树节点,因此也被称为药效团相似性。正是这种模糊性,让 FTrees 能找到指纹方法会漏掉的、具有相关化学的命中(骨架跃迁)。

03 前提与授权

需要 FTrees 程序包、命令行环境与有效许可证。测试许可证直接放在 ftrees 旁。可检索的化学空间(.space 文件)从官网 Chemical Spaces 页面下载,或用 CoLibri 自建。

检查 license
./ftrees --license-info

04 Jump Start:在化学空间里找骨架跃迁

最小命令——用查询去搜一个化学空间:

ftrees — 最小搜索
./ftrees -i query.sdf -s chemical_space.space

查询也可直接是 SMILES 串。默认会把 100 个最相似的命中以 SMILES 打印到控制台(STDOUT)。要写文件,用 -o(每个查询一个文件)或 -O(所有查询合并到一个文件):

写出 CSV,调结果数与阈值
./ftrees -i "CC(C)C(=O)N" -s chemical_space.space \
       -o output.csv --max-nof-results 300 --min-similarity-threshold 0.8

控制台输出形如:Rank: 1 sim: 0.933 O=C(N(C(C)C)C)C WXVL021____AN0073____SB0150——依次是排名、相似性、命中 SMILES、命中名称。

05 程序选项

-i / --input 必填

查询分子(.smi .smiles .mol .mol2 .sdf)或单个 SMILES 串。可多次使用 -i

-s / --search-files 必填

要检索的化学空间(.space)或库文件。可多次使用、可混用空间与库。

-o / --output-files

输出基名(.csv / .sdf,可同时给两者)。多查询时每个查询单独一个文件,命名为 base_{querynumber}.ext

-O / --single-output-files

同上,但把所有查询结果合并写到单个文件。

-m / --match-image-base-file

为每个命中生成解释匹配的 2D 图像(.png .pdf .svg)。会显著增加运行时间,每个命中一张图。

--gen-2d-output

为 SDF 输出生成 2D 坐标(增加运行时间)。

--gen-mapping-output

把每个命中的局部相似性值与对应子结构 SMILES 写入输出(即 match image 里那份信息的文本版)。

FTrees 匹配图示例
Figure 3:匹配图示例。左为查询,右为命中分子;右侧色块列出各子结构的局部(特征树)相似性

如 Figure 3:异恶唑环与苯磺酰胺部分(两分子左侧)完全相同(局部相似性 1.0);查询中央的稠合吡啶环在命中里被一个"自由"的吡唑环替代,两个苯环(紫、橙)位置相当但甲基/甲氧基取代模式不同。在 FTrees 算法语境下,这就是一次骨架跃迁。

性能提示
为获得最佳速度,把 .space 文件放在本地磁盘(与可执行文件同机)。空间文件会被缓存到本地 tmp,首次搜索后即与本地文件同速。可用 export TMPDIR=/path(Linux/Mac)或 $Env:TMP="C:\path"(Windows PowerShell)改缓存目录。

06 配置选项

选项默认说明
--max-nof-results100每个查询输出的命中数(1–1,000,000),按相似性降序。
--min-similarity-threshold0.8低于此相似性(0–1)的结果被丢弃。只要高度相似就设到 0.95 等。
--target-similarity1期望与查询的目标相似性(0.5–1,须 ≥ 阈值)。要更接近查询设 ≥0.95;要强制明显骨架跃迁设 0.75–0.9。最接近目标值的结果排在最前。
--total-diversity1结果集中任意两化合物的最大允许相似性(0.9–1)。越小越多样。仅当结果数 ≤ 500 时可用。低于 1.0 会大幅延长运行时间。
--expand-alternative-results展开同一命中分子的其他反应路径/重复匹配(相同排名与相似性,不同试剂/名称)。

07 输出文件里有什么

输出(CSV/SDF)为每个命中提供:结果排名、药效团相似性(特征树相似性)、命中名称、查询名称与 SMILES、被检索空间名,以及(仅空间搜索)构成该命中的反应名称与各试剂(reagent)的名称和 SMILES。这意味着你不仅得到命中分子,还得到它"怎么合成出来"的配方。

与 SpaceLight / SpaceMACS 的分工
FTrees 用模糊药效团找远邻(骨架跃迁);SpaceLight经典指纹(ECFP/CSFP)找近邻;SpaceMACS最大公共子结构。三者互补。FTrees 也是 infiniSee 平台 Scaffold Hopper 模式背后的引擎。