在化合物列表中处理丙二烯型立体异构体时,重写 SMILES 后也应保留构型的区别。chematic v1.1.3 实现了丙二烯型轴手性的读取、规范化 SMILES 输出和再次读取,让相反构型保持为不同的字符串。
本次比较中,RDKit 2026.09.1 将两个示例输入都写成 CC=C=CCC。RDKit issue #9678记录了 SMILES 读写过程中丙二烯型立体标记丢失的情况。本文使用公开发布的 chematic v1.1.3 npm 包,对相同输入保留立体化学区别。
区分连接关系相同的两种构型
丙二烯骨架含有连续双键 C=C=C。当两个末端碳各自连接两个不同的取代基时,可以通过沿轴的空间排列区分立体异构体。SMILES 可用 @AL1 与 @AL2 指定这两种排列。Daylight 规范的 3.3.4 节说明了丙二烯型手性类别。
比较使用以下两个输入:
CC=[C@AL1]=CCC
CC=[C@AL2]=CCC
在 RDKit 2026.09.1 中,即使指定 isomericSmiles=True,规范化输出仍如下所示。允许非四面体立体化学的设置也已启用。
CC=[C@AL1]=CCC -> CC=C=CCC
CC=[C@AL2]=CCC -> CC=C=CCC
在 chematic 中保留不同的规范 SMILES
在已安装 Node.js 的环境中,将 v113-allene.mjs 保存到空的工作文件夹,再运行:
npm init -y
npm install --save-exact @kent-tokyo/chematic@1.1.3
node v113-allene.mjs
CC=[C@AL1]=CCC -> C(=[C@AL2]=CC)CC
CC=[C@AL2]=CCC -> C(=[C@AL1]=CC)CC
distinct: 2
调用的 API 是 parse_smiles 和 mol.canonical_smiles()。脚本还会再次读取每个输出,确认其返回相同的规范字符串。
输出中的 @AL1 与 @AL2 互换,是因为原子的书写顺序改变了。SMILES 的立体标记相对于字符串中的原子顺序定义。chematic 在规范化输出时调整标记,从而保留相同的空间构型。
在结构读写中传递轴向构型
v1.1.3 的实现从丙二烯中心沿两侧双键追踪到末端,并用末端取代基的顺序表示立体信息。输出时也使用这一顺序,因此重新排列原子、生成 SMILES 时可以保留轴手性。丙二烯型手性实现和 WASM 回归测试提供了处理逻辑与示例。
这对相反构型会得到不同的规范字符串。用作化合物列表的键,或将结构传给后续处理步骤时,都可以保留两种丙二烯型立体异构体的区别。我们还核对了等价的 @ 与 @@ 简写输入,它们会规范化为对应的 @AL 表记。
比较于 2026 年 10 月 13 日在 macOS arm64 上运行。比较数据记录了四种输入及再次读取的结果;RDKit 脚本提供参考调用,运行记录记录了发行包与文件哈希。