用途
Datamol 是一个基于 RDKit 的 Python 化学信息学库,为分子操作提供轻量级、Pythonic 的抽象层。它以合理的默认值、高效的并行化和现代 I/O 能力简化复杂的分子操作,所有分子对象均为原生 rdkit.Chem.Mol 实例,确保与 RDKit 生态完全兼容。文档将其定位为适用于标准药物发现工作流。
主要能力
文档列出的关键能力包括:
- 分子格式转换(SMILES、SELFIES、InChI)
- 结构标准化与清洗
- 分子描述符与指纹
- 3D 构象生成与分析
- 聚类与多样性选择
- 骨架与片段分析
- 化学反应应用
- 可视化与对齐
- 带并行化的批处理
- 通过 fsspec 支持云存储
分子处理与格式转换
通过 dm.to_mol 从 SMILES 创建分子,无法解析时返回 None;dm.to_smiles 支持规范化及同分异构 SMILES,还可输出 InChI、InChIKey、SELFIES。标准化方面提供 dm.sanitize_mol、dm.standardize_mol(支持 disconnect_metals、normalize、reionize 等参数)以及针对字符串的 dm.standardize_smiles。文档建议对用户提供的分子始终进行标准化。
文件读写
支持读取 SDF、SMI、CSV、Excel 等格式,并提供通用读取器 dm.open_df(自动识别 .sdf、.csv、.xlsx、.parquet、.json)。写入方面提供 dm.to_sdf、dm.to_smi、dm.to_xlsx(可渲染分子图像)。通过 fsspec 支持从 S3、GCS、HTTP 等远程位置读写。
描述符与指纹
dm.descriptors.compute_many_descriptors 计算标准描述符集(如 mw、logp、hbd、hba、tpsa 等),并提供批量并行版本 batch_compute_many_descriptors(支持 n_jobs、progress)。还提供芳香性、立体化学、柔性等专项描述符。文档给出基于 Lipinski 五规则进行类药性过滤的示例。
指纹方面,dm.to_fp 支持 ECFP(默认)、MACCS、topological、atompair 等类型。相似性通过 dm.pdist(集合内成对距离)和 dm.cdist(两集合间距离)计算,支持并行。
聚类与多样性
提供 Butina 聚类 dm.cluster_mols(基于 Tanimoto 距离阈值,文档提示其构建完整距离矩阵,适合约 1000 个分子,不适合 10000+)。多样性选择提供 dm.pick_diverse 和 dm.pick_centroids。
骨架与片段分析
dm.to_scaffold_murcko 提取 Bemis-Murcko 骨架,可用于按骨架分组、统计骨架频率、构建骨架到分子的映射,以及为机器学习做基于骨架的训练/测试拆分。片段化提供 BRICS(16 种键类型)和 RECAP(11 种键类型),可用于片段统计与基于片段的评分。
3D 构象
dm.conformers.generate 生成 3D 构象,支持 n_confs、rms_cutoff、minimize_energy、method(如 ETKDGv3)等参数。还提供构象聚类 dm.conformers.cluster、取代表构象 return_centroids,以及 SASA 计算 dm.conformers.sasa。
可视化
dm.viz.to_image 支持分子网格、输出 PNG/SVG、按共同子结构对齐(align=True)、高亮特定原子和键。dm.viz.conformers 用于展示多个构象。
化学反应
支持从 SMARTS 定义反应并应用,文档给出将羧酸转化为酰氯的示例,并展示批量反应应用及异常处理。
使用方式
安装:uv pip install datamol
导入:import datamol as dm
并行化:许多操作提供 n_jobs 参数(n_jobs=1 串行,-1 使用全部核心,或指定核数),如 read_sdf、batch_compute_many_descriptors、cluster_mols、pdist、conformers.sasa。许多批量操作支持 progress=True 显示进度条。
适用场景
文档给出完整工作流示例,包括:
- 数据加载 → 标准化 → 描述符计算 → 类药性过滤 → 多样性选择 → 可视化的完整流水线
- 构效关系(SAR)分析:按骨架分组并结合活性数据可视化
- 虚拟筛选流水线:生成指纹、计算相似性、排序取 top hits 并可视化
限制与注意事项
文档明确提示:Butina 聚类构建完整距离矩阵,适合约 1000 个分子,不适合 10000+ 规模,更大数据集建议使用多样性选择或层次方法。建议始终标准化外部来源分子、解析后检查 None、大数据集使用并行、为相似性选择合适的指纹、机器学习时按骨架做训练/测试拆分、可视化 SAR 系列时对齐分子。
文档还提及参考文档文件(references/core_api.md、io_module.md、conformers_module.md、descriptors_viz.md、fragments_scaffolds.md、reactions_data.md),但未在资料中提供其内容。关于收费、价格与平台支持情况,资料中暂未提供。