资讯动态

DeepChem 端到端工作流实战:从 MoleculeNet 基准评估到自定义数据预测与小数据集迁移学习

发布时间:2026/9/10 7:17:41 来源:尧图企业网站定制
DeepChem 端到端工作流实战从 MoleculeNet 基准评估到自定义数据预测与小数据集迁移学习【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills plus 100 scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills本指南基于 DeepChem Skill 的 typical_workflows.md 核心骨架展开系统讲解三条可直接落地的分子机器学习端到端流水线MoleculeNet 快速基准评估、自定义分子数据集的训练与预测、利用预训练模型在小数据集上的迁移学习。读者将掌握dc.molnet基准加载、CircularFingerprint/图特征化、ScaffoldSplitter防数据泄漏切分、NormalizationTransformer目标归一化、MultitaskRegressor/GCNModel训练评估以及 ChemBERTa 等预训练模型的微调全流程并能在 scripts 中的三个生产级脚本与 workflows.md 的八个扩展工作流上直接复用。环境准备与安装本 Skill 面向deepchem 2.8.0PyPI 稳定版2024 年 4 月发布要求Python 3.7–3.11PyPI 包上限3.12。安装时需区分核心包与深度学习后端扩展详见 SKILL.mduv pip install deepchem # 仅加载器、特征化器、MoleculeNet uv pip install deepchem[torch] # GCN、GAT、AttentiveFP、HuggingFaceModel、GroverModel uv pip install deepchem[tensorflow] # 旧版 Keras 模型 uv pip install deepchem[jax] # JAX/Haiku 模型 uv pip install deepchem[dqc] # 可微量子化学torch xitorch要点DeepChem 采用惰性加载只安装核心包也能使用加载器、特征化器与 MoleculeNetGNN 与 Transformer 模型需要匹配的 extra。使用 GPU 时应先安装对应 CUDA 版本的 PyTorch/TensorFlow/JAX再安装 extrazsh 下括号需加引号如deepchem[torch]。Conda PyTorch 用户若遇到import deepchem报undefined symbol: iJIT_NotifyEvent可固定conda install mkl2025。RDKit 是核心依赖。Workflow AMoleculeNet 快速基准评估适用于在标准基准上快速验证模型能力完整代码见 typical_workflows.mdimport deepchem as dc # 1. 加载基准数据集 tasks, datasets, _ dc.molnet.load_bbbp( featurizerGraphConv, splitterscaffold ) train, valid, test datasets # 2. 训练模型 model dc.models.GCNModel(n_taskslen(tasks), modeclassification) model.fit(train, nb_epoch50) # 3. 评估 metric dc.metrics.Metric(dc.metrics.roc_auc_score) test_score model.evaluate(test, [metric]) print(fTest ROC-AUC: {test_score})基准数据集加载接口解析dc.molnet.load_*()是 30 个精心整理的 MoleculeNet 基准的统一入口均返回(tasks, datasets, transformers)三元组分类基准load_tox21()12 个毒性任务、load_bbbp()血脑屏障穿透、load_hiv()、load_clintox()、load_bace()、load_sider()、load_muv()、load_pcba()、load_toxcast()回归基准load_delaney()水溶性 ESOL、load_freesolv()溶剂化自由能、load_lipo()亲脂性、load_qm7/qm8/qm9()量子力学性质、load_hopv()蛋白-配体结合load_pdbbind()材料科学load_perovskite()、load_mp_formation_energy()、load_bandgap()、load_mp_metallicity()化学反应load_uspto()。featurizer 可选值ECFP扩展连接指纹、GraphConv图卷积特征、Weave、Raw原始 SMILES、smiles2img2D 分子图像。splitter 可选值scaffold药物发现推荐、random、stratified保持类别分布、butinaButina 聚类切分。GCNModel 配置要点n_taskslen(tasks)Tox21 为 12BBBP 等单任务基准为 1modeclassification多任务分类回归任务改为moderegression训练轮数nb_epoch50是 GNN 的常见起点SKILL.md 建议 GNN 训练 50–100 epoch图卷积模型需要MolGraphConvFeaturizer系列图特征这就是上面传featurizerGraphConv的原因。Workflow B自定义分子数据集的训练与预测当拥有自己的 CSV 分子数据时需要走完整的「加载 → 特征化 → 切分 → 归一化 → 训练 → 评估」流水线import deepchem as dc # 1. 加载并特征化数据 featurizer dc.feat.CircularFingerprint(radius2, size2048) loader dc.data.CSVLoader( tasks[activity], feature_fieldsmiles, featurizerfeaturizer ) dataset loader.create_dataset(my_molecules.csv) # 2. 切分数据分子数据务必使用 ScaffoldSplitter splitter dc.splits.ScaffoldSplitter() train, valid, test splitter.train_valid_test_split(dataset) # 3. 归一化可选但推荐 transformers [dc.trans.NormalizationTransformer( transform_yTrue, datasettrain )] for transformer in transformers: train transformer.transform(train) valid transformer.transform(valid) test transformer.transform(test) # 4. 训练模型 model dc.models.MultitaskRegressor( n_tasks1, n_features2048, layer_sizes[1000, 500], dropouts0.25 ) model.fit(train, nb_epoch50) # 5. 评估 metric dc.metrics.Metric(dc.metrics.r2_score) test_score model.evaluate(test, [metric])数据格式与加载器选择CSV 至少需要两列SMILES 列与一个或多个目标列。除CSVLoader外DeepChem 还提供SDFLoader分子结构文件、FASTALoader蛋白/DNA 序列、JsonLoader、ImageLoader、UserCSVLoader等完整清单见 api_reference.md。大文件可用DiskDataset落盘存储降低内存开销。特征化器选择决策树从 core_capabilities.md 提取的选型逻辑模型是图神经网络吗 ├─ 是 → 图特征化器 │ ├─ 标准 GNN → MolGraphConvFeaturizer │ ├─ 消息传递 → DMPNNFeaturizer │ └─ 预训练模型 → GroverFeaturizer └─ 否 → 模型类型是什么 ├─ 传统 MLRF/XGBoost/SVM→ CircularFingerprint / RDKitDescriptors / MordredDescriptors ├─ 非图深度学习 → CircularFingerprint稠密网络或 SmilesToImageCNN ├─ 序列模型LSTM/Transformer→ SmilesToSeq └─ 3D 结构分析 → CoulombMatrix按数据规模1K 样本用CircularFingerprint或RDKitDescriptors1K–100K用指纹或图特征100K用图特征化器MolGraphConvFeaturizer、DMPNNFeaturizer迁移学习场景用预训练模型自带特征化GroverFeaturizer。为什么分子数据必须用 ScaffoldSplitterRandomSplitter会让结构相似的分子同时出现在训练集与测试集导致数据泄漏和虚高的评估指标。ScaffoldSplitter按分子骨架scaffold切分从结构上杜绝泄漏是药物发现场景的诚实默认值。train_valid_test_split默认比例 80/10/10也可显式传frac_train0.8, frac_valid0.1, frac_test0.1。其他可用切分器还包括ButinaSplitter聚类、MaxMinSplitter最大化集合间多样性、RandomStratifiedSplitter保持类别分布。NormalizationTransformer 与预测时的反归一化陷阱transform_yTrue会把目标值标准化为均值 0、方差 1z-score 空间。关键陷阱源码注释明确指出反归一化的是输出而不是输入。NormalizationTransformer触碰的是 y而预测数据集没有 y——对预测数据集做 transform 不会有任何效果预测结果仍停留在 z-score 空间。必须把 transformers 传给predict()才能把输出还原到目标的真实单位。# 正确传 transformers 给 predict()自动反归一化输出 predictions model.predict(new_dataset, transformerstransformers)预测新分子时先用与训练一致的指纹特征化radius2, size2048必须与模型n_features完全一致否则预测时报形状错误再构造NumpyDataset(Xfeatures)new_smiles [CCO, c1ccccc1, CC(C)O] new_features featurizer.featurize(new_smiles) new_dataset dc.data.NumpyDataset(Xnew_features) predictions model.predict(new_dataset, transformerstransformers)MultitaskRegressor 参数说明参数含义本工作流取值n_tasks预测目标数1多目标可传列表长度n_features输入特征维度2048必须等于指纹sizelayer_sizes隐藏层大小[1000, 500]dropoutsDropout 比率0.25小数据集防过拟合可提到 0.5learning_rate学习率0.001predict_solubility.py中为 0.001Workflow C小数据集上的迁移学习当数据量小1000 样本或分子骨架新颖时微调预训练模型往往优于从零训练import deepchem as dc # 1. 加载数据预训练模型通常需要原始 SMILES loader dc.data.CSVLoader( tasks[activity], feature_fieldsmiles, featurizerdc.feat.DummyFeaturizer() # 模型自行处理特征化 ) dataset loader.create_dataset(small_dataset.csv) # 2. 切分数据 splitter dc.splits.ScaffoldSplitter() train, test splitter.train_test_split(dataset) # 3. 加载预训练模型 model dc.models.HuggingFaceModel( modelseyonec/ChemBERTa-zinc-base-v1, taskclassification, n_tasks1, learning_rate2e-5 ) # 4. 微调 model.fit(train, nb_epoch10) # 5. 评估 predictions model.predict(test)为什么用 DummyFeaturizerChemBERTa 这类 SMILES 语言模型在模型内部自行完成分词与嵌入CSVLoader 的特征化步骤应当跳过——用DummyFeaturizer保留原始 SMILES 字符串。这一点由 test_scripts.py 的test_a_smiles_model_keeps_the_strings_unfeaturized明确验证加载后train.X[0] CCO若在加载阶段把 SMILES 转成指纹反而会破坏模型所需输入。预训练模型目录与特征化对应关系模型预训练规模模型 ID / 加载方式所需特征ChemBERTaZINC15 上 7700 万分子seyonec/ChemBERTa-zinc-base-v1原始 SMILESRaw/DummyFeaturizerMolFormer分子结构 Transformeribm/MoLFormer-XL-both-10pct原始 SMILESGROVER1000 万分子图 TransformerGroverModel自身加载机制无 Hub ID图特征GraphConv这一对应关系在 transfer_learning.py 的load_molnet_dataset中落地ChemBERTa/MolFormer 用featurizerRawGROVER 用featurizerGraphConv。测试用例test_smiles_models_get_raw_strings_and_grover_gets_graphs保证了这条规则不被破坏。迁移学习调参要点学习率要低2e-5是微调典型值脚本注释 Lower LR for fine-tuningtransfer_learning.py 运行结束后会提示 1e-5 到 5e-5 是安全区间epoch 要少5–20 轮即可防止灾难性遗忘与过拟合适用场景小数据集1000 样本、新颖骨架、计算资源受限、快速原型验证。仓库配套脚本三个工作流的工程化版本Skill 提供了三个生产级 CLI 脚本与上述三条工作流一一对应1.predict_solubility.py—— 自定义数据 预测Workflow B 落地# 使用 Delaney 基准 python skills/deepchem/scripts/predict_solubility.py # 使用自定义数据并预测新分子 python skills/deepchem/scripts/predict_solubility.py \ --data my_data.csv \ --smiles-col smiles \ --target-col solubility \ --predict CCO c1ccccc1默认目标列名须与 Delaney (ESOL) CSV 的发布列名一致即measured log solubility in mols per litre见train_solubility_model签名默认值由 test_scripts.py 的test_the_default_target_column_is_the_delaney_column_name锁定。脚本同时打印 R²、MAE、RMSE 三个回归指标并在--predict缺省时对乙醇、乙酸、苯、咖啡因做示例预测。2.graph_neural_network.py—— 基准评估的模型工厂Workflow A 落地# 在 Tox21 上训练 GCN python skills/deepchem/scripts/graph_neural_network.py --model gcn --dataset tox21 # 在自定义数据上训练 AttentiveFP python skills/deepchem/scripts/graph_neural_network.py \ --model attentivefp \ --data molecules.csv \ --task-type regression \ --targets activity \ --epochs 100支持五种 GNN 架构gcn/gat/attentivefp/mpnn/dmpnn与七个 MoleculeNet 数据集tox21、bbbp、bace、hiv、delaney、freesolv、lipo。注意 BACE 在 DeepChem 中只有load_bace_classification而无load_bace脚本通过MOLNET_LOADERS映射表解决测试test_bace_resolves_to_the_classification_loader验证了这一点。该脚本同样内置了 CLI 参数互斥校验--dataset与--data必须二选一禁止同时传入。3.transfer_learning.py—— 迁移学习向导Workflow C 落地# 微调 ChemBERTa 于 BBBP 基准 python skills/deepchem/scripts/transfer_learning.py --model chemberta --dataset bbbp # 微调 GROVER 于自定义数据 python skills/deepchem/scripts/transfer_learning.py \ --model grover \ --data small_dataset.csv \ --target activity \ --task-type classification \ --epochs 20核心参数--modelchemberta/grover/molformer必选、--dataset或--data二选一、--target自定义数据的目标列可多个、--smiles-col、--task-typeclassification/regression、--epochs默认 10。脚本按预训练模型类型自动选择特征化SMILES 模型用DummyFeaturizerGROVER 用MolGraphConvFeaturizer并按 80/10/10 的 scaffold 切分分类任务输出 ROC-AUC/Accuracy回归任务输出 R²/MAE。从三条工作流到八个扩展场景typical_workflows.md 指向 workflows.md 中的八个端到端示例可直接作为模板复用SMILES 分子属性预测——完整版 Workflow B含 CSV 数据准备示例与逐项拆分MoleculeNet 基准使用——完整版 Workflow A含全部 featurizer/splitter 选项说明超参数优化——dc.hyper.GridHyperparamOptmodel_builder工厂函数 hyperparam_search网格覆盖layer_sizes、dropouts、learning_rate预训练模型迁移学习——ChemBERTa 与 GROVER 双路线GAN 分子生成——BasicMolGANModel含条件生成conditionalTrue配合predict_gan_generator的属性约束材料性质预测——CIFLoaderCGCNNModel晶图卷积网络回归指标用mae_score蛋白质序列分析——FASTALoaderHuggingFaceModel(Rostlab/prot_bert)自定义模型集成——SklearnModel包装任意 scikit-learn 模型或用TorchModel 自定义nn.Module接入 PyTorch 模型。常见坑与最佳实践汇总数据泄漏Issue 1问题随机切分使相似分子横跨训练/测试集。解法分子数据集一律使用ScaffoldSplitter。GNN 不如指纹Issue 2问题GNN 在中小数据集上反而输给简单指纹。解法确保数据量 10K训练 50–100 epoch换AttentiveFP/DMPNN等更强架构直接使用 GROVER 等预训练模型。小数据集过拟合Issue 3解法提升 dropout 至 0.5改用 Random Forest 等简单模型应用迁移学习收集更多数据。类别不平衡Issue 4transformer dc.trans.BalancingTransformer(datasettrain) train transformer.transform(train) # 或使用平衡指标 metric dc.metrics.Metric(dc.metrics.balanced_accuracy_score)内存不足使用dc.data.DiskDataset.from_numpy(X, y, w, ids)替代NumpyDataset并调小 batch_size如 32 而非 128。模型导入报错No module named torch类错误源于后端缺失安装匹配的deepchem[torch]等 extra 即可DeepChem 惰性加载意味着导入失败可能延迟到具体模型类才暴露。模块内自洽性保障test_scripts.py 还守护了几个「跑起来才发现」的静默错误指纹宽度与n_features必须一致不一致会在训练完成后的预测阶段报形状错误指纹半径训练/预测必须相同ECFP4 训练 ECFP6 预测会静默产出垃圾结果因为向量宽度不变分类/回归基准的指标集不可混淆。这些约束在自行编写流水线时同样值得遵守。进一步阅读typical_workflows.md本文三条工作流的原始出处workflows.md八个端到端扩展工作流core_capabilities.md数据加载、特征化、切分、模型、评估、预测八大能力详解api_reference.md完整 API 手册加载器、数据集类、特征化器目录、50 模型目录、MoleculeNet 数据集清单SKILL.md安装、版本约束、最佳实践模式scripts三个生产级脚本源码test_scripts.py脚本一致性测试与基准元数据核对【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills plus 100 scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价