Datamol Cheminformatics Skill 介绍
一、概述
Datamol 是一个 Python 库,在 RDKit 之上提供轻量、Pythonic 的抽象层,用于分子化学信息学。它用合理的默认值、高效的并行化和现代 I/O 能力简化复杂的分子操作。所有分子对象都是原生 rdkit.Chem.Mol 实例,确保与 RDKit 生态完全兼容。
主要能力包括:分子格式转换(SMILES、SELFIES、InChI)、结构标准化与净化、分子描述符与指纹、3D 构象生成与分析、聚类与多样性选择、骨架与片段分析、化学反应应用、可视化与比对、并行化批量处理,以及通过 fsspec 支持云存储。
二、安装与导入
安装命令:uv pip install datamol
导入约定:import datamol as dm
三、核心用法
- 基础分子处理
从 SMILES 创建分子:dm.to_mol("CCO") 得到乙醇;也可对 SMILES 列表逐个转换;遇到非法 SMILES 时返回 None,需判断处理。
分子转 SMILES:dm.to_smiles(mol),isomeric=True 可包含立体化学;其他格式还有 dm.to_inchi、dm.to_inchikey、dm.to_selfies。
标准化与净化(建议对外部来源分子始终使用):dm.sanitize_mol(mol);完整标准化 dm.standardize_mol(mol, disconnect_metals=True, normalize=True, reionize=True);也可直接对 SMILES 调用 dm.standardize_smiles(smiles)。
- 分子文件读写
读取:dm.read_sdf 读 SDF;dm.read_smi 读 SMILES 文件;dm.read_csv 读含 SMILES 列的 CSV;dm.read_excel 读 Excel;dm.open_df 可自动识别 .sdf、.csv、.xlsx、.parquet、.json 等格式。
写出:dm.to_sdf 保存 SDF,dm.to_smi 保存 SMILES 文件,dm.to_xlsx 可输出带分子图像的 Excel。
远程文件:支持 S3、GCS、HTTP,例如 dm.read_sdf("s3://bucket/compounds.sdf")。
- 分子描述符与性质
单个分子:dm.descriptors.compute_many_descriptors(mol) 返回 mw、logp、hbd、hba、tpsa、n_aromatic_atoms 等。
批量计算:dm.descriptors.batch_compute_many_descriptors(mols, n_jobs=-1, progress=True) 并行处理。
特定描述符:芳香性(n_aromatic_atoms、n_aromatic_atoms_proportion)、立体化学(n_stereo_centers、n_stereo_centers_unspecified)、柔性(n_rigid_bonds)。
类药性筛选可按 Lipinski 五规则:mw<=500、logp<=5、hbd<=5、hba<=10。
- 分子指纹与相似性
生成指纹:dm.to_fp(mol, fp_type='ecfp', radius=2, n_bits=2048);也支持 maccs、topological、atompair 等类型。
相似性:集合内距离矩阵 dm.pdist(mols, n_jobs=-1);两个集合间 dm.cdist(query_mols, library_mols, n_jobs=-1)。Tanimoto 距离越小表示相似度越高。
- 聚类与多样性选择
Butina 聚类:dm.cluster_mols(mols, cutoff=0.2, n_jobs=-1),返回各簇的分子索引列表。注意其构建完整距离矩阵,适合约 1000 个分子,不适合 10000 以上。
多样性选择:dm.pick_diverse(mols, npick=100);簇中心选择:dm.pick_centroids(mols, npick=50)。
- 骨架分析
提取 Bemis-Murcko 骨架:dm.to_scaffold_murcko(mol),可转 SMILES。可用 Counter 统计骨架频率、建立骨架到分子的映射;也可按骨架划分机器学习训练/测试集,确保两者骨架不同。
- 分子片段化
BRICS 片段化(16 种键类型):dm.fragment.brics(mol),返回带连接点的片段 SMILES;RECAP 片段化(11 种键类型):dm.fragment.recap(mol)。可统计库中常见片段或做基于片段的打分。
- 3D 构象生成
dm.conformers.generate(mol, n_confs=50, rms_cutoff=0.5, minimize_energy=True, method='ETKDGv3');通过 GetNumConformers、GetConformer、GetPositions 访问构象与坐标。构象聚类:dm.conformers.cluster(mol_3d, rms_cutoff=1.0, centroids=False),中心可用 dm.conformers.return_centroids 获取。SASA 计算:dm.conformers.sasa(mol_3d, n_jobs=-1)。
- 可视化
dm.viz.to_image(mols[:20], legends=..., n_cols=5, mol_size=(300,300)),可保存 PNG 或 SVG;align=True 可按共同子结构对齐,适合 SAR 分析;可高亮指定原子与键;dm.viz.conformers 可展示多个构象。
- 化学反应
用 SMARTS 定义反应后,通过 dm.reactions.apply_reaction(rxn, (reactant,), sanitize=True) 应用并得到产物,可批量应用于化合物库并处理异常。
四、并行化
许多操作支持 n_jobs 参数:n_jobs=1 顺序执行,-1 使用全部 CPU 核心,也可指定核心数。支持并行化的函数包括 read_sdf、batch_compute_many_descriptors、cluster_mols、pdist、conformers.sasa 等;许多批量操作支持 progress=True 显示进度条。
五、常见完整工作流
数据加载 → 标准化 → 描述符计算 → 类药性过滤 → 聚类与多样性选择 → 可视化,可组成完整管道。还给出 SAR 分析(按骨架分组、对齐可视化)、虚拟筛选(指纹 + 距离 + 排序取 Top Hit)等模式。
六、参考文档
references/core_api.md(核心函数)、references/io_module.md(文件 I/O)、references/conformers_module.md(3D 构象)、references/descriptors_viz.md(描述符与可视化)、references/fragments_scaffolds.md(骨架与片段)、references/reactions_data.md(反应与玩具数据集)。
七、最佳实践
外部来源分子始终标准化;解析后检查 None;大数据集使用并行处理;通过 fsspec 使用云存储;按用途选择指纹(ECFP 通用、MACCS 快速、Atom pairs 考虑原子对与距离);注意规模限制(Butina 聚类约 1000 分子,更大数据集用多样性选择或层次方法);机器学习按骨架划分训练/测试集;SAR 系列可视化时对齐分子。
八、限制
未提供关于收费、价格、平台支持范围等具体信息。