概览
DeepMol 是一个用于药物发现和计算化学的 Python 机器学习与深度学习框架。它将分子数据准备与预测建模连接起来,使用 RDKit 进行分子操作,并通过封装器支持 Scikit-Learn、Keras 和 DeepChem 模型。它是一个工作流工具包,而非单一预测模型:用户可以组合预处理和建模组件,也可以使用文档介绍的 pipeline 接口将这些组件整合起来。
输入包括包含 SMILES 以及可选标识符、标签或现有特征的 CSV 数据集,以及包含分子结构的 SDF 文件。准备选项包括基本清理、可配置标准化和 ChEMBL 标准化。分子表示包括多种指纹系列、DeepChem 特征化器和 Mol2Vec 嵌入。工作流可以生成特征矩阵、转换后的数据集、训练好的模型、预测结果和评估指标;模型和工作流也可以保存和加载。
在模型开发方面,README 介绍了随机和分层划分、交叉验证、特征选择、不平衡数据处理、超参数搜索和工作流优化。探索方法包括 PCA、tSNE、KMeans 和 UMAP。基于 SHAP 的解释和指纹位绘图可用于检查特征贡献。另有单独链接的案例研究仓库提供已部署模型,包括 ADMET 示例;这些模型与核心工具包是分开的。
README 提示了依赖方面的限制:使用 GPU 需要让 TensorFlow 和 DGL 版本与硬件的 CUDA 驱动相匹配,JAX 可能导致依赖冲突,并且在 macOS 上加载 TensorFlow 模型存在文档所述的问题。Seq2Seq 和基于 transformer 的分子嵌入被描述为正在开发中,并非当前可用功能。所提供的证据无法证明其在用户数据集上的预测性能。
主要功能
- 从包含 SMILES 以及可选标签、标识符或特征的 CSV 文件,以及包含分子结构的 SDF 文件加载分子数据集。
- 提供基本、可配置和 ChEMBL 标准化,并支持电荷中和、同位素移除、立体化学移除和片段选择等选项。
- 计算 Morgan、MACCS、Layered、RDK 和 AtomPair 指纹,并支持 DeepChem 特征化器和 Mol2Vec 嵌入。
- 封装 Scikit-Learn、Keras 和 DeepChem 模型,用于训练、预测、基于指标的评估、交叉验证和模型持久化。
- 支持特征选择、随机和分层数据划分、不平衡数据采样、超参数搜索以及多步骤工作流优化。
- 提供 SHAP 解释、指纹位可视化,以及通过 PCA、tSNE、KMeans 和 UMAP 进行的无监督探索。
使用场景
- 建议评估:基于带标签的 SMILES 构建分子性质分类或回归工作流,并在留出数据上比较不同表示方法和模型。
- 建议评估:评估标准化选项和不平衡数据采样对分子活性分类工作流的影响。
- 建议评估:检查 SHAP 贡献及对应的指纹位,以研究哪些结构特征会影响预测结果。
- 建议评估:探索单独链接的 ADMET 案例研究模型,用于预测新化合物;使用前应核查每个模型的要求和适用范围。
使用方式
- 从 DeepMol 文档 和仓库 README开始。选择文档介绍的安装方式,以及预处理、机器学习或深度学习所需的依赖;配置环境前请查看 CUDA、JAX 和 macOS 相关注意事项。
- 准备一个有代表性的小型数据集。按照 README 中的 CSVLoader 示例加载带有可选标签和标识符的 SMILES,或按照 SDFLoader 示例加载结构文件。检查生成的数据集维度和标签字段。
- 从文档介绍的选项中选择标准化策略和分子表示。在将工作流扩展到完整数据集之前,检查转换后的分子和特征维度。
- 定义训练集、验证集和测试集划分,然后选择封装模型或组建工作流。如需任务示例指导,请参阅 README 链接的分类、回归或多任务 AutoML notebook。
- 使用适合任务的指标评估预测结果,在适用时检查 SHAP 或指纹解释,并保存模型或工作流。如果改用已部署模型,请参阅单独的案例研究仓库,不要将工具包本身视为预训练预测器。