datamol
基于 RDKit 的 Pythonic 封装,提供简化接口与合理的默认设置。适用于标准药物发现流程,包括 SMILES 解析、标准化、描述符、指纹、聚类、3D 构象生成与并行处理。返回原生的 rdkit.Chem.Mol 对象。若需更高级的控制或自定义参数,请直接使用 rdkit。
Datamol - Python 分子信息学工具
技能概述
Datamol 是 RDKit 的轻量级 Python 封装库,为药物发现和分子信息学任务提供简洁的 API 和合理的默认值。返回原生 rdkit.Chem.Mol 对象,确保与 RDKit 生态系统的完全兼容性。
适用场景
-
虚拟筛选与化合物库分析:从 SDF、SMILES、CSV 或 Excel 加载化合物库,计算分子描述符,应用 Lipinski 规则筛选,通过分子指纹相似性找到潜在活性化合物,支持并行处理大规模数据集。
-
SAR 分析与骨架拆分:提取 Murcko 骨架进行化合物系列分析,按骨架分组并可视化活性差异,或基于骨架拆分训练集和测试集以确保机器学习模型的泛化能力。
-
3D 构象生成与分子可视化:生成低能 3D 构象,计算溶剂可及表面积(SAS),按最大公共子结构(MCS)对齐分子并导出出版物质量的分子图像。
核心功能
-
分子格式转换与标准化:解析 SMILES/SELFIES/InChI,标准化分子结构(断开金属、重原子化、再离子化),并转换为规范格式。推荐对用户提供的分子始终使用
standardize_mol()或standardize_smiles()。 -
描述符、指纹与相似性:批量计算分子量、LogP、氢键供体/受体、TPSA 等描述符;生成 ECFP/MACCS/拓扑指纹;计算 Tanimoto 相似性矩阵;支持
n_jobs=-1并行加速。 -
聚类与多样性选择:使用 Butina 聚类按结构相似性分组化合物(适用于约 1000 分子);或使用
pick_diverse()和pick_centroids()从大库中选择多样子集。
常见问题
Datamol 和 RDKit 有什么区别?
Datamol 是 RDKit 的 Pythonic 封装层,提供更简洁的 API、默认的并行处理和现代化的 I/O 能力。所有分子对象都是原生 rdkit.Chem.Mol 实例,可无缝使用 RDKit 的其他功能。对于标准药物发现任务(SMILES 解析、描述符、指纹、聚类、构象生成),优先使用 Datamol;如需高级控制或自定义参数,可直接调用 RDKit。
Datamol 支持哪些分子指纹类型?
Datamol 支持多种指纹类型:ECFP(默认为 ECFP6,可指定 radius=2 获得 ECFP4)、MACCS、拓扑指纹、原子对指纹和 RDKit 指纹。使用 dm.to_fp(mol, fp_type='ecfp', radius=2, n_bits=2048) 生成指纹。
如何处理大规模化合物数据集?
使用内置的并行处理加速批量操作:dm.descriptors.batch_compute_many_descriptors(mols, n_jobs=-1, progress=True)、dm.cluster_mols(mols, n_jobs=-1)、dm.read_sdf('file.sdf', n_jobs=-1)。对于超过 1000 分子的聚类,建议使用 dm.pick_diverse() 进行多样性选择,而非完整的 Butina 聚类,以避免构建距离矩阵时的内存问题。