01 它能做什么
- 在化学空间中做最大公共子结构搜索,找与查询共享最大化学母题的类似物。
- 用类 Tanimoto 的相似性度量做 MCS 相似性搜索。
- 做经典精确子结构搜索,找含完整母核的分子。
- 识别带定义取代模式的化合物(R 基团搜索)。
- 在传统枚举库中做(最大公共)子结构搜索;可视化查询与命中的公共子结构。
02 前提与授权
需要 SpaceMACS 程序包、命令行环境与有效许可证。测试许可证直接放在 spacemacs 旁。化学空间(.space)从官网下载或用 CoLibri 自建。
./spacemacs --license-info
03 Jump Start:找含公共子结构的命中
默认按 MCS 大小降序返回命中:
./spacemacs -i query.sdf -s chemical_space.space
查询可为文件或 SMILES 串。默认把公共子结构最大的 100 个命中打印到控制台;写文件用 -o / -O。要找含查询完整精确结构的化合物,用 -t 1 切到经典子结构搜索:
./spacemacs -i "CC(C)C(=O)N" -s chemical_space.space -t 1
控制台输出形如 Rank: 1 mcs size: 13 O=C(...)... WXVL021____AN0032——依次是排名、MCS 大小(公共子结构的重原子数)、命中 SMILES、名称。
04 四种搜索类型(-t)
| -t | 类型 | 说明 |
|---|---|---|
0 | R 基团搜索 | 带定义取代模式的子结构搜索。需特殊输入,如 SMILES c1ccccc1[R*] 或 SMARTS [n,c]1ccccc1[?R?]。 |
1 | 精确子结构搜索 | 查询必须作为完整子结构出现在命中分子中。 |
2(默认) | MCS 大小搜索 | 按公共子结构大小(重原子数)降序排序。 |
3 | MCS 相似性搜索 | 用类 Tanimoto 的 MCS 相似性度量排序;可配合 --min-similarity-threshold。 |
05 程序选项
查询(.smi .smiles .mol .mol2 .sdf .sma .smarts)或单个 SMILES/SMARTS 串,可多次使用。注意:不支持递归 SMARTS。
化学空间(.space)或库文件,可多次使用、可混用。
输出基名(.csv/.sdf)。多查询时每个查询单独一个文件。
所有查询结果合并到单个文件。
为每个命中生成高亮公共子结构的 2D 图(.png .pdf .svg)。SMARTS 查询无法生成 match image,且会增加运行时间。
搜索类型,见上表。
配置选项
| 选项 | 默认 | 说明 |
|---|---|---|
--max-nof-results | 100 | 每个查询输出数(1–1,000,000)。 |
--min-similarity-threshold | 0 | 仅在 -t 3(MCS 相似性)时可用,丢弃低于该值的结果。 |
--min-result-size / --max-result-size | — | 限制结果分子的最小/最大重原子数。 |
--expand-alternative-results | — | 展开同一命中的其他反应路径。 |
06 SpaceMACS 的 MCS 是怎么算的
子结构匹配(MCS)问题在化学信息学里有四种变体:公共子结构可以是连接的或非连接的,又可以是诱导的(induced)或非诱导的。SpaceMACS 使用连接的最大公共诱导子结构(connected maximum common induced substructure,cMCIS)变体,有几条具体规则:
- 无环键只映射到无环键(SMARTS 查询有例外,见下)。
- 环键只映射到环键。
- 芳香键只映射到芳香键。
- 环原子允许映射到链(非环)原子,反之亦然。

以 Figure 3 为例:命中分子的环丙基不属于 MCS——这说明查询叔丁基的无环键没有映射到命中的环键;但环丙基中靠近氮的一个碳原子属于 MCS,因为环原子可映射到非环原子。结合"环键/无环键严格分开映射"的限制,这导致环丙基的"入口"环原子与叔丁基的中心原子之间产生映射,MCS 在此终止(禁止环键映射到无环键)。查询的环己烷环没有映射到命中的苯环,说明脂肪环键不会映射到芳香键,MCS 同样在环的"入口"原子处终止。
那个未被映射的脂肪杂环氧原子(查询中是五元 oxazolidine 环、命中中是六元 morpholine 环)是 MCS 诱导性(induced)行为的例子:oxazolidine 环的氧相邻两个已映射碳原子,而 morpholine 环的氧只相邻一个已映射碳原子。在诱导 MCS 算法里,这类原子被视为"不同",不计入 MCS。

当查询是分子(SMILES、SDF 等)时,查询的无环键严格只映射到命中的无环键(Figure 4A)。但当查询是 SMARTS 模式、且未显式指定键类型时,行为不同(Figure 4B):SMARTS 中未指定的"无环"键(如 CCC(C))也能匹配命中分子的环键。
输出字段
输出文件为每个命中提供:result rank、search type(MCSSize / Similarity / Substructure / RGroupSearch)、mcs size、result size、query size、mcs similarity、result name、query name、query(SMILES/SMARTS)、space,以及(仅空间搜索)reaction name 与各 reagent(1–5)的 name/smiles。match image 上还会标注 query coverage 与 result coverage(MCS 占查询/命中重原子数的比例)。
07 四种搜索类型详解
7.1 MCS 大小搜索(-t 2,默认)
默认行为。命中按公共子结构大小(MCS size = 属于 MCS 的重原子数)降序排列(第一排序键)。MCS 大小相同的结果,按其自身大小(result size = 命中重原子数)升序排(第二排序键)。若 MCS 大小与 result size 都相同,再按所有重原子的原子序数之和升序排(第三排序键);若仍相同,则按内部 SMILES 表示排定。

以 ASA(13 个重原子)为查询:rank 1 是 MCS 最大(MCS size 13,正好等于 query size,即精确子结构匹配)且自身最小(result size 24)的结果;rank 2 同样 MCS size 13,但多 2 个重原子;rank 3 与 rank 2 的 MCS、result size、原子序数和都相同,排序只取决于 SMILES。再往下,rank 4–104 都是逐渐变大的完全匹配,到 rank 105 才出现第一个部分匹配(MCS size < query size)。有意思的是,rank 105 反而具有最高的 MCS 相似性,会成为 MCS 相似性搜索的榜首(见下)。
7.2 MCS 相似性搜索(-t 3)
用受指纹 Tanimoto 启发的相似性度量代替 MCS 大小作为排序标准。公式为:
- MCSSize:查询与命中的公共子结构大小(重原子数)。
- ResultSize:命中分子大小(重原子数)。
- QuerySize:查询分子大小(重原子数)。
与经典 Tanimoto 类似,该值在 0(完全不同,MCS size = 0)到 1(查询与命中完全相同)之间,从而把传统筛选相似性与最大公共子结构联系起来。相同相似性的结果按原子序数和(及 SMILES)排定。

对比 Figure 5:MCS 相似性榜首在 MCS 大小搜索里只排在 rank 105,相似性第二名在 MCS 大小搜索里更是排到 rank 1100——默认设置(最多 100 个结果)下两者都不在 MCS 大小搜索的结果集里!这说明 MCS 相似性度量更偏好"MCS 略小但尺寸与查询相当"的结果,而非"MCS 大但尺寸完全不同"的结果。MCS 大小榜首有 24 个重原子,远大于查询(13);而 MCS 相似性榜首只有 16 个重原子,尺寸更接近查询(MCS 仅略小,12 个重原子)。通过把 query size 纳入考量,MCS 相似性在 MCS 大小与 result size 之间取得了平衡。
7.3 精确子结构搜索(-t 1)
"传统"的子结构搜索,只找完整包含查询骨架的化合物。在 SpaceMACS 框架里,它是 MCS 问题的特例,即强制"完全最大公共子结构匹配":query size = MCS size。
多个完整包含查询的命中,按其重原子数(result size)升序排;相同则按原子序数和(及 SMILES)排。由于 query size 恒等于 MCS size,结果也隐式地按 MCS 相似性排序(此时相似性公式退化为 MCSSize / ResultSize)。

7.4 R 基团搜索(-t 0)
搜索带定义取代模式的子结构。需要特殊输入:查询中至少指定一个 R 基团(见 Figure 8)。R 基团代表该位置上任意含至少一个重原子的取代基,且被解释为:只允许、且要求该位置有进一步取代基;其他所有位置必须与查询完全一致(连氢原子数也要相同)。因此 R 基团搜索是一种"只允许在 R 位置修饰"的严格精确子结构搜索。

例中 R 基团位于羧基的对位,因此只有"完整包含查询母题、且仅在对位多一个取代基"的化合物才是有效结果。结果排序同精确子结构搜索(result size 升序)。无效的例子:在间位多取代、或在羧基本身上取代——它们在精确子结构搜索里是有效的,但在 R 基团搜索里不是。
如何写 R 基团查询
可用 MarvinSketch 等绘图工具画好结构、在目标位置加一个或多个 "R",存成 SDF 或导出 SMILES 即可直接用。SMILES 查询有四种写 R 基团的方式(见 Figure 9)。也可用 SMARTS 查询做 R 基团搜索,此时必须把 R 基团写成 [?R?](该语法无法从绘图工具直接导出,需手动调整)。所有情况都支持在单个查询里指定多个 R 基团。


此外可使用单键、双键、三键的 R 基团:键级会被显式解释——单键 R 基团只给出该位置为单键取代基的结果,双键、三键 R 基团则分别只给双键、三键取代基的结果(见 Figure 10)。