在纸上画个苯环,谁都画得出来;可要把两个连在一起的三元环画得键长合理、氢原子一个不漏,就不是随手的事了。化学家日常的难题也不在「画不画得出」,而在「画出来之后能不能被计算」。MuchSci 应用集里的化学信息学,做的正是这一段衔接:你给一行 SMILES 文本,它把分子解析成对象,再从同一个对象上同时长出「图」和「数」。
最近一次对话是个现成的例子。输入 C1CC1C2CC2,问这是什么分子,交回来的是两张 SVG 结构式加一段总结。这不是检索拼出来的答案,而是解析、排坐标、渲染、算性质一步步跑出来的结果。这篇照着这条链拆一遍。
01 同一个分子,为什么需要两种图
先看交付本身。
▲ 图 1|含氢完整式负责逐原子核对,骨架式贴近文献的阅读习惯
两张图不是重复交付,对应的是两种阅读场景。 含氢完整式把每个碳、每个氢都标出来,核对原子计数和价态时不容易看漏;骨架式按有机化学惯例省略碳氢,两个三元环和那根连接键一眼看清,放进论文或组会汇报也不违和。对一个分子来说,这是同一事实的两种投影。
麻烦通常出在只拿到其中一张:只看骨架式,初学者数不清氢;只看完整式,又抓不住环系关系。两张一起给,猜的环节就省了。
02 从一行文本到两张 SVG,中间走几步
把这次解析的过程拆开,大致是下面这样。
▲ 图 2|真正见功夫的是第 3 步:2D 坐标怎么排,决定图能不能用
这里值得多说两句的是坐标排布。SMILES 只描述连接关系,不含坐标;要把结构画出来,得先给每个原子算出一套 2D 坐标,让键长键角合理、环不变形、原子不重叠。双环丙烷这种小分子还好,环系一大,排布质量直接决定结构图能不能用。渲染环节再把同一套坐标按两种画法各出一张,所以两张图的原子位置是对得上的。
界面里能看到这次交付的样子:
▲ 图 3|两张 SVG 可预览可保存,一句话总结与后续建议跟在交付记录里
03 图是画出来的,数是算出来的
结构之外,它还顺手给了一组数值。
▲ 图 4|组成、拓扑、能量三层,数值全部读自同一个分子对象
这次的一句话总结是:C1CC1C2CC2 即双环丙烷(bicyclopropyl),C₆H₁₀,分子量 82.15;两个孤立三元环经一根 C–C 单键相连,非螺环、非桥环、非稠环;全 sp³、无杂原子、无手性;环张力约 27 kcal/mol。这段话里图和数不分家——分子式、张力这些量都从解析出的同一个对象上计算得到,不会出现「图是一个分子、数是另一个分子」的错位。它还列了下一步可做的事:SMILES 规范化与批量解析、计算指纹与相似度、多构象搜索加 MMFF/UFF 能量排序、输出 3D SDF。
04 单个分子手画也行,批量处理才是主场
一个分子画错了还能返工,一整个分子库呢?
▲ 图 5|药物发现场景里,分子库动辄成千上万条,逐个手画不现实
虚拟筛选、相似度聚类的输入都是成批的 SMILES,这时「画得好看」只是末端需求,前端的解析、规范化、去重、批量算描述符才是主要工作量。这也是化学信息学区别于画图软件的地方:画图软件交付一张图,工具链交付一套可重跑的流程——同样的输入再跑一遍,图和数都一致,结果才谈得上可复现。MuchSci 把这条链接进对话,省下的是自己搭环境的那一段,不是你对结果的判断。
05 边界
照例把边界摆在明面上。
① 本篇讲的是功能位置与工作方式,不构成对结果质量的承诺。 解析能否成功、坐标排布是否合理,与分子复杂度和输入写法都有关系。
② 输出需要人工复核。 结构式、性质数值、构象能量都可能因力场或参数选择而有偏差,用于论文或汇报前应回到原始数据核对;专业判断不能外包。
③ 涉及药物设计等受监管方向时,以所在机构与相关法规的现行规定为准。 本篇内容仅用于科研与教学参考。