这个库在做什么
做药物发现的同学都知道,RDKit功能强大但接口繁琐,写几行分子处理代码动不动就要查文档。datamol就是专门解决这个痛点的——它把RDKit最常用的操作封装成Pythonic接口,默认参数都调好了,你只需要关心业务逻辑。底层返回的还是原生rdkit.Chem.Mol对象,和现有RDKit代码完全兼容,没有任何迁移成本。
核心功能
datamol覆盖了药物发现全链路的分子操作需求,主要包括以下几个方向:
- 分子格式转换:SMILES、SELFIES、InChI之间互转,一行代码搞定,
dm.to_mol()、dm.to_smiles()、dm.to_inchi()直接调用。 - 结构标准化:
dm.standardize_mol()支持断开金属键、归一化、重新离子化,外部数据集进来先跑一遍是标准操作。 - 分子描述符与指纹:
dm.descriptors.batch_compute_many_descriptors()批量计算MW、LogP、HBD、HBA、TPSA等,支持n_jobs=-1全核并行。 - 相似度与聚类:
dm.pdist()、dm.cdist()计算Tanimoto距离矩阵,dm.cluster_mols()做Butina聚类,dm.pick_diverse()直接挑多样性子集。 - 3D构象生成:
dm.conformers.generate()用ETKDGv3方法生成并用UFF力场优化,还能算SASA。 - 骨架与片段分析:Bemis-Murcko骨架提取、BRICS/RECAP片段化,SAR分析和ML数据集划分都用得上。
- 文件I/O:读写SDF、CSV、Excel、Parquet,还支持S3、GCS等云存储,通过fsspec透明访问。
- 可视化:
dm.viz.to_image()生成分子网格图,支持MCS对齐、子结构高亮,输出PNG或SVG。
适用平台
datamol Skill作为AI编程助手的上下文增强工具,完美适配当前主流的AI编程环境。无论你用的是Cursor、GitHub Copilot、Claude Code还是OpenAI Codex,加载这个Skill之后,AI能直接理解datamol的API约定、参数含义和最佳用法,生成的代码质量会有明显提升。
对于国内用户,文心快码、腾讯云CodeBuddy、华为云CodeArts同样支持,这个Skill相当于给AI装了一本datamol专属手册,让它在化学信息学场景下不再乱猜API。Gemini Code Assist用户也可以直接使用,效果一样稳定。
实操代码示例
下面是一个完整的药物筛选流水线,从加载SDF文件到输出多样性化合物图,核心步骤都在这里:
import datamol as dmnn# 加载并标准化ndf = dm.read_sdf('compounds.sdf')ndf['mol'] = df['mol'].apply(lambda m: dm.standardize_mol(m) if m else None)ndf = df[df['mol'].notna()]nn# 批量计算描述符(全核并行)ndesc_df = dm.descriptors.batch_compute_many_descriptors(n df['mol'].tolist(), n_jobs=-1, progress=Truen)nn# Lipinski五规则过滤ndruglike = (n (desc_df['mw'] <= 500) &n (desc_df['logp'] <= 5) &n (desc_df['hbd'] <= 5) &n (desc_df['hba'] <= 10)n)nfiltered_mols = df[druglike]['mol'].tolist()nn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







暂无评论内容