用途:在 ChemDraw 的 CDX/CDXML 文件与 RDKit 之间做数据交换,并构建或修改反应式方案。CDXML 是 ChemDraw 对象树的 XML 序列化形式,CDX 是其二进制形式。RDKit 2022.09 起在 rdkit.Chem.rdChemDraw 中提供可选的 Revvity ChemDraw 解析器,可读取分子与反应、写出分子结构;但 RDKit 无法写出箭头、加号、方案或文字,这些需在 XML 层构建或编辑。
主要能力:读取分子(MolsFromChemDrawFile/MolsFromChemDrawBlock,支持 .cdx 与 .cdxml,另有遗留接口 Chem.MolsFromCDXML);读取反应并拆分反应物、试剂与产物(ReactionsFromChemDrawBlock,注意默认 sanitize=False);写出单个分子结构(MolToChemDrawBlock,写 CDX 二进制的 rdChemDraw 路径存在 UnicodeDecodeError,需用遗留写出器);用 CoordGen、StraightenDepiction、NormalizeDepiction、模板对齐改善二维描绘;通过 ElementTree 创建 arrow、graphic、scheme、step、t/s 等元素来添加箭头、加号、条件文字与多步方案;编辑已有文件时 ElementTree 可保留各类对象,避免 Mol 往返丢失;用 epam.indigo 将 CDXML 渲染为 PNG。
使用方式:需 rdkit(2023.03+ 且带 ChemDraw 支持)、epam.indigo、标准库 xml.etree.ElementTree。安装前先运行 python -c "import rdkit";安装 indigo 应针对运行代码的解释器,如 python -m pip install epam.indigo,Jupyter 中用 %pip install epam.indigo,或在 pixi 中 pixi add epam.indigo。写出前必须先 Compute2DCoords。可运行 python -c "from rdkit import Chem; print('ChemDraw write support:', Chem.HasChemDrawCDXSupport())" 检查支持。
限制:CDXML 无法脱离 ChemDraw 查看,因此 PNG 是唯一验证依据,应同时交付同名 .cdxml 与 .png;交付前可用 scripts/check_scheme.py 校验(重建分子、sanitize、检查质量平衡与布局)。不能声称“在 ChemDraw 中可正常打开”已经过测试;除 3 个以上结构的方案外,建议另附中间体的纯 SMILES 列表。Indigo 支持下标(32)但不支持上标(64)。RDKit 自带的 Draw.ReactionToImage 会重新排布并丢弃 ChemDraw 箭头与文字,应改用 Indigo 渲染原文件。其余未在资料中说明的事项暂未提供。