验证与基准测试
当前发布版本:v1.0.13
功能成熟度和已知局限性针对当前版本说明。对比基准测试使用 v1.0.1 测量,并不是对 v1.0.13 性能的直接测量。v1.0.3 还新增了独立的 MMFF94/3D 本地测量。
chematic 是一个开源的原生 Rust 化学信息学引擎(MIT OR Apache-2.0),覆盖 SMILES/SMARTS 解析、 分子描述符、指纹与 2D 结构绘制。本页概述了 chematic 的输出如何针对 RDKit 进行检验、哪些功能稳定、 哪些仍是实验性的,以及其基准测试数字实际衡量与不衡量的内容。完整的方法论、语料库和复现步骤保存在 chematic 仓库中 —— 本页是附带来源的摘要,不能替代仓库中的原始文档。
如何选择 chematic 或 RDKit
适合选择 chematic 的情况
- 希望在浏览器或本地环境中轻量地运行分子分析。
- 希望在 Python、Rust 和浏览器之间共享同一个核心。
- 希望无需 C++ 工具链构建小型化学工具。
适合选择 RDKit 的情况
- 最需要丰富的周边生态和长期生产环境经验。
- 需要经过长期验证的高级 3D、反应处理或插件兼容性。
- 需要兼容现有 RDKit 工作流。
这不是一方取代另一方的比较。请根据项目所需功能和验证历史进行选择。
功能成熟度
| 功能 | 状态 | 备注 |
|---|---|---|
| SMILES / SMARTS parsing | stable | — |
| Molecular descriptors (physicochemical core) | stable | — |
| Fingerprints (ECFP, MACCS, etc.) | stable | — |
| 3D conformer generation (distance geometry + MMFF94) | experimental | — |
| pKa / ADMET profiling | experimental | 基于规则的筛查启发式方法,未针对临床用途进行验证。 |
| IUPAC name generation | partial | 覆盖 25 种以上的结构类别;超出支持范围时返回空字符串。 |
| InChI (default pure-Rust engine) | approximate | — |
| InChI (optional native-inchi feature) | stable | 通过内置的 IUPAC C 语言参考实现,生成位精确的标准 InChI。 |
对比基准测试(v1.0.1 测量)
测量范围:对比结果使用 chematic v1.0.1(提交 bfaf1d52f9094702eda011451d6479ff0265d3cf)、 RDKit 2025.09.3 和 macOS arm64 环境测量。目前发布的软件包版本是 v1.0.13。 请勿将以下数字视为 v1.0.13 的性能数据。
在一个5,000-molecule diverse corpus上,chematic 生成 ECFP4 指纹的速度是 RDKit 的 3.0×(测量方式:chematic 与 RDKit 生成 ECFP4 指纹的 每分子实际耗时)。这是本站发布的唯一速度数字 —— 它仅适用于该语料库上的 ECFP4 指纹生成, 不代表 chematic 的整体性能。
完整方法论、硬件环境与原始结果:https://github.com/kent-tokyo/chematic/blob/main/docs/benchmark.md。
v1.0.3 新增的 MMFF94/3D 本地测量:基准记录。 这是同一环境下的 Criterion 测量,不是与 RDKit 的对比。
与 RDKit 的描述符一致性
Mol.descriptors() 总共返回 194 个值。这个数字本身 并不能说明准确性 —— 这些值分为两个性质截然不同的群组:
- 物理化学核心描述符:物理化学核心部分(分子量、LogP、TPSA、 氢键供体/受体数量、芳香环数)在一个包含 4,999 个分子的 ChEMBL 语料库上与 RDKit 达到 100% 一致。
- 扩展描述符:一个扩展描述符家族(Kappa 形状指数、BertzCT、BalabanJ、 BCUT2D、VSA 描述符、MQN、SA Score)在语料库规模上与 RDKit 存在显著差异,不应仅因其属于
Mol.descriptors()返回的 194 个值之一就被视为已验证。
请不要将"194 个描述符"这个数字本身当作验证结论 —— 在依赖某个 描述符之前,请先确认它属于哪一个群组。
CIP 立体中心(R/S)准确性
在默认引擎下,CIP 分配结果与 RDKit 的一致率为 96.30%。
一个独立的、需要显式启用的高精度引擎可将一致率提升至 ~99.6–99.8% —— 但这需要显式调用该高精度 CIP 引擎(cip_assignments_accurate_json),并非默认行为。 除非显式调用该引擎,否则这个更高的数字并不适用。
已知局限性
canonical_smiles() 不是安全的去重或缓存键
在一个 5,000 个分子的 ChEMBL 样本中,约每 18 个分子中就有 1 个会为同一结构生成两种不同的 (但各自都有效的)canonical SMILES 字符串。这只是表面现象(不会造成结构性损坏),但意味着 目前不应将 canonical_smiles() 的输出作为稳定的标识符或缓存键来依赖。