deepchem
使用多样化特征提取器的分子机器学习,并配备现成数据集。可用于性质预测(ADMET、毒性),既可以用传统机器学习,也可以用 GNN;当你希望获得丰富的特征化选项并使用 MoleculeNet 基准时尤为合适。适合用预训练模型进行快速实验、覆盖多种分子表征。对于以图为中心的 PyTorch 工作流使用 torchdrug;对于基准数据集使用 pytdc。
DeepChem - 分子机器学习与药物发现深度学习库
技能概述
DeepChem 是一个专门用于化学、材料科学和生物学领域的 Python 机器学习库,支持分子属性预测、药物发现、材料设计和生物分子分析,提供丰富的特征化工具、预训练模型和 MoleculeNet 基准数据集。
适用场景
1. 分子属性预测与药物发现
当您需要预测分子的物理化学性质(如溶解度、毒性、结合亲和力)或 ADMET 性质时,DeepChem 提供完整的建模流程。从 SMILES 字符串或 SDF 文件加载分子数据,通过多种特征化方法转换为机器学习可用的数值表示,使用传统机器学习或图神经网络进行训练和预测。特别适合药物研发中的毒性筛选和候选化合物优化。
2. 分子图神经网络研究
如果您希望将图神经网络(GCN、GAT、MPNN、AttentiveFP)应用于分子建模任务,DeepChem 内置了完整的 GNN 架构和分子图特征化工具。支持从分子结构自动构建图表示,并提供 MoleculeNet 等 30+ 标准基准数据集用于模型评估。适合研究者在自定义分子数据集或标准基准上进行深度学习实验。
3. 小样本迁移学习与快速原型
当您的分子数据集样本量较少(<1000 个分子)或计算资源有限时,DeepChem 提供了多个在大规模分子语料上预训练的模型(如 ChemBERTa、GROVER、MolFormer)。通过迁移学习可以在小数据集上快速获得良好的预测性能,适合需要快速验证想法或原型开发的场景。
核心功能
1. 多样化分子特征化工具
DeepChem 提供丰富的分子特征化方法,包括 Circular Fingerprint(ECFP)、RDKit 描述符、Mordred 描述符、图特征化(用于 GNN)、SMILES 序列化和分子图像等。不同特征化工具适配不同的建模需求:传统机器学习推荐使用指纹或描述符,图神经网络需要专门的图特征化器,序列模型可以使用 SMILES-to-Seq。库中还包含特征化选择决策树,帮助您根据数据集规模和模型类型选择最合适的特征化方法。
2. MoleculeNet 基准数据集集成
内置 30+ 精选的分子机器学习基准数据集,涵盖毒性预测(Tox21、Clintox)、物理化学性质(Delaney、FreeSolv、Lipo)、量子化学性质(QM7、QM8、QM9)和材料性质(Perovskite、Bandgap)等。所有数据集都配置了标准的训练/验证/测试划分,使用 ScaffoldSplitter 防止相似分子在训练集和测试集间泄露,确保模型评估的可靠性。一键加载数据集让模型 benchmark 变得简单高效。
3. 完整的模型架构生态系统
DeepChem 支持从传统机器学习到前沿深度学习的完整模型谱系。对于小数据集,可以使用 SklearnModel 封装的随机森林、XGBoost 等传统算法;中等规模数据集适合 MultitaskRegressor 等深度学习模型;大规模数据集则推荐使用图神经网络(GCN、GAT、AttentiveFP、DMPNN)。此外还集成了 HuggingFace 兼容的预训练模型(ChemBERTa、GROVER、MolFormer)和专门的晶体材料预测模型(CGCNN、MEGNet),满足不同研究场景的需求。
常见问题
DeepChem 支持哪些深度学习框架?如何安装?
DeepChem 采用分层安装设计。核心包(uv pip install deepchem)只包含数据加载器、特征化工具和 MoleculeNet,不需要任何深度学习框架。如果您要使用图神经网络或预训练模型,需要先安装相应的后端(PyTorch、TensorFlow 或 JAX),然后安装对应的 extra:
uv pip install 'deepchem[torch]'支持 GCN、GAT、AttentiveFP、HuggingFaceModel、GroverModeluv pip install 'deepchem[tensorflow]'支持 Keras/TensorFlow 模型uv pip install 'deepchem[jax]'支持 JAX/Haiku 模型
GPU 用户注意:安装深度学习框架时要选择与 CUDA 版本匹配的构建。
如何防止分子数据泄露?应该使用哪种数据划分方法?
在药物发现任务中,必须使用 ScaffoldSplitter 而不是 RandomSplitter。ScaffoldSplitter 根据分子的骨架结构进行划分,确保相似的分子不会同时出现在训练集和测试集中,避免数据泄露导致的模型性能虚高。DeepChem 默认为 MoleculeNet 数据集使用 scaffold 划分,您在自定义数据集上也应遵循这一最佳实践。此外,DeepChem 还提供了 ButinaSplitter(基于聚类)、MaxMinSplitter(最大化多样性)和 RandomStratifiedSplitter(保持类别分布)等其他划分方法。
小数据集如何获得良好的预测性能?
对于小样本分子数据集(<1000 个分子),DeepChem 提供了多种解决方案:
- 迁移学习:使用 ChemBERTa(在 7700 万分子上预训练)、GROVER(在 1000 万分子上预训练)或 MolFormer 等预训练模型,通过微调获得良好性能
- 简单模型:优先使用随机森林 + CircularFingerprint,这类组合在小数据集上往往优于复杂的深度学习模型
- 强正则化:如果使用深度学习,增加 dropout(至 0.5)并使用更小的网络
- 数据增强:考虑使用平衡变换器处理类别不平衡问题
DeepChem 内置的 scripts/transfer_learning.py 脚本提供了完整的迁移学习工作流,可以快速上手。