PaddleHelix 上手指南:GeoGNN 预测与 MolVAE 生成的两大核心能力一次讲清
【免费下载链接】PaddleHelixBio-Computing Platform Featuring Large-Scale Representation Learning and Multi-Task Deep Learning “螺旋桨”生物计算工具集项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleHelix
PaddleHelix 是百度推出的生物计算工具集,构建在 PaddlePaddle 之上。本文按任务场景讲清它的两条分子建模主线:用 GeoGNN 做分子属性预测,用 MolVAE 从 SMILES 序列生成新分子。
定位:把"预测"和"生成"做成两条独立流水线
如果只做一件事,PaddleHelix 解决的是"分子建模"这一件事,但拆成了两个方向:给定分子,预测它的性质;给定目标,造出一个新分子。前者靠图神经网络 GeoGNN,后者靠变分自编码器 MolVAE。仓库的组织方式也印证了这一点:模型定义放在 pahelix/model_zoo/ 下复用,具体任务的训练、微调、采样脚本则按应用分放在apps/下。
整体来看,上层是药物协同、药物-靶点相互作用、化合物生成等应用场景,中层是 GeoGNN、GIN/GCN/GAT 等网络组件,底层是 PGL 图引擎、标准数据集和工具包。理解了这张图,后面两条线的入口就都有了。
能力速览:预测线与生成线
| 主线 | 代表模型 | 输入 | 解决什么 |
|---|---|---|---|
| 预测线 | GeoGNN | 分子图(原子 + 键 + 键角) | 分子属性预测、药物-靶点相互作用等 |
| 生成线 | MolVAE(序列 VAE) | SMILES 字符串 | 采样生成新分子、扩展化合物库 |
两条线互相独立:预测线回答"这个分子行不行",生成线回答"能不能造一个更好的分子"。做药物发现时,常见的 pipeline 是先生成一批候选,再用预测模型打分筛选。
场景一:分子属性预测怎么做(GeoGNN)
它是怎么做到的
把分子想象成一张"3D 图纸":拓扑结构告诉你要画哪些部件,几何信息告诉你在空间里摆成什么角度。多数图神经网络只读"图纸的连线部分",而 GeoGNN 把两部分都读了。具体拆开看,有四件事:
- 原子-键 + 键角双通道:模型同时维护原子-键图和键角图,键角信息通过
BondAngleFloatRBF这类径向基编码层变成连续向量,空间构型不再丢失。 - 键长等几何量向量化:
BondFloatRBF把键长这类浮点几何特征编码进边特征,让网络"看见"分子的空间形状。 - GIN 消息传递 + 残差堆叠:节点更新基于 GIN 结构,默认堆 8 层,每层带 LayerNorm、GraphNorm 和残差连接,逐层提取高阶结构特征。
- 可配置读出:图级表示默认用均值池化(
readout='mean'),下游接分类或回归头即可。
实现入口在 pahelix/model_zoo/gem_model.py,其中GeoGNNModel是完整定义,配套的原子/键嵌入与 RBF 编码层在 pahelix/networks/compound_encoder.py。
上面这张图展示的是 GNN 预训练的一般分类思路:节点级任务(属性掩码、上下文预测)负责局部表示,图级任务(属性预测、结构相似度)负责全局表示,节点级 + 图级联合通常效果最好。GeoGNN 所在的 GEM 方案就属于这一思路下的几何增强版本。
在哪些任务里能用 + 关键代码路径
GeoGNN 主要作为"预训练编码器"使用:先在大量分子上做自监督预训练,再冻结或微调地接到下游任务上。仓库里可直接参考的入口:
- 预训练主脚本:apps/pretrained_compound/ChemRL/GEM/pretrain.py
- 分类微调:apps/pretrained_compound/ChemRL/GEM/finetune_class.py;回归微调:apps/pretrained_compound/ChemRL/GEM/finetune_regr.py
- 药物-靶点相互作用(DTA)应用:apps/drug_target_interaction/graph_dta/
- 分子对接场景:apps/molecular_docking/helixdock/
一个实用提示:GEM 的 README 提供了预训练好的模型压缩包,可直接跳过耗时数小时的预训练步骤,直接做下游微调。
场景二:新分子生成怎么做(MolVAE)
生成流程拆解
MolVAE 的思路可以类比"压缩—取点—渲染":先把一条 SMILES 字符串压成潜在空间里的一小组坐标,然后在坐标系里取一个新点,再把这个点渲染回一条 SMILES 字符串。整个过程分三步:
- 编码:序列经 embedding 后送入 GRU 编码器(支持双向),输出潜在分布的均值 μ 和对数方差 log σ²。
- 采样:用重参数化技巧从分布中采样得到潜在向量 z。训练时 z 来自真实分子,推理时可以纯粹从先验 p(z) 里随机取点——取出来的点就对应一个新分子。
- 解码:GRU 解码器以 z 为初始隐状态,逐 token 生成 SMILES。
损失函数由两部分构成:重构损失保证解码出来的序列合法、可学,KL 散度约束潜在分布贴近先验,让"随机取点"这件事有意义。训练脚本里还内置了 KL 退火(--kl_start、--kl_w_start、--kl_w_end),避免训练早期 KL 项压垮重构。
模型定义在 pahelix/model_zoo/seq_vae_model.py(VAE类,encoder 到 decoder 完整实现)。pahelix/model_zoo/下还有一个树结构方向的 pahelix/model_zoo/sd_vae_model.py,面向分子树/属性解码场景,与序列版互为补充。
训练与使用入口
- 训练/采样脚本:apps/molecular_generation/seq_VAE/trainer.py
- 模型超参:apps/molecular_generation/seq_VAE/model_config.json,控制编码器/解码器层数、隐层维度、潜在空间维度
d_z、embedding 是否冻结等 - 训练参数默认值:apps/molecular_generation/seq_VAE/args.py
- 说明文档:apps/molecular_generation/seq_VAE/README_cn.md
官方 demo 使用 ZINC Clean Leads 子集作为训练数据,数据与预训练模型的下载方式写在 README 中。生成侧的常见用法是:训好的模型加载后,从先验分布采样 z 批量解码,再用 RDKit 做合法性过滤,得到一批候选新分子。
选型建议:你的任务该走哪条线
| 你的任务 | 建议路线 | 参考入口 |
|---|---|---|
| 预测分子性质(毒性、溶解度、活性等) | GeoGNN 预训练 + 微调 | apps/pretrained_compound/ChemRL/GEM/ |
| 药物-靶点相互作用打分 | 以 GeoGNN 为分子编码器的 DTA 方案 | apps/drug_target_interaction/graph_dta/ |
| 批量生成新分子、扩展化合物库 | MolVAE 从先验采样解码 | apps/molecular_generation/seq_VAE/ |
| 分子生成 + 性质筛选的完整流程 | 两条线串联:MolVAE 生成,GeoGNN 打分 | 上述两者组合 |
一个边界说明:GeoGNN 依赖分子的 3D 几何信息,数据准备阶段需要做 MMFF 力场优化等预处理,这一步比较耗时;MolVAE 的生成质量受训练集规模影响,官方 demo 用的是 ZINC 子集,追求更多样化结果时应换用更完整的数据集。
快速上手:三步跑通
第一步,拿到代码:
git clone https://gitcode.com/GitHub_Trending/pa/PaddleHelix cd PaddleHelix第二步(预测线):进入 apps/pretrained_compound/ChemRL/GEM/,按该目录 README 准备 demo 数据,跑预训练或直接用官方预训练模型做finetune_class/finetune_regr微调。
第二步(生成线):进入 apps/molecular_generation/seq_VAE/,把数据解压到./data后启动训练:
CUDA_VISIBLE_DEVICES=0 python trainer.py \ --device='gpu' \ --dataset_dir='./data/zinc_moses/train.csv' \ --model_config='model_config.json' \ --model_save='./results/train_models/'训练完成后,同一个入口流程支持从先验采样生成新分子,配合 RDKit 校验即可产出候选化合物。
写在最后
PaddleHelix 把"预测"和"生成"拆成两条可独立运行的流水线,GeoGNN 负责让模型读懂分子的几何与拓扑,MolVAE 负责在潜在空间里"造"分子。两条线串起来,就是一个最小可用的分子设计 pipeline:生成候选、预测打分、迭代筛选。后续想深入网络组件或数据集接口,建议从 docs/ 的 API 文档和 tutorials/ 里的 notebook 继续看,它们覆盖了从化合物性质预测到分子生成的完整示例。
【免费下载链接】PaddleHelixBio-Computing Platform Featuring Large-Scale Representation Learning and Multi-Task Deep Learning “螺旋桨”生物计算工具集项目地址: https://gitcode.com/GitHub_Trending/pa/PaddleHelix
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考