ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

PaddleHelix 上手指南:GeoGNN 预测与 MolVAE 生成的两大核心能力一次讲清

PaddleHelix 上手指南:GeoGNN 预测与 MolVAE 生成的两大核心能力一次讲清

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 字符串。整个过程分三步:

  1. 编码:序列经 embedding 后送入 GRU 编码器(支持双向),输出潜在分布的均值 μ 和对数方差 log σ²。
  2. 采样:用重参数化技巧从分布中采样得到潜在向量 z。训练时 z 来自真实分子,推理时可以纯粹从先验 p(z) 里随机取点——取出来的点就对应一个新分子。
  3. 解码: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),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进