177

DGL-LifeSci:生命科学图深度学习工具包

DGL-LifeSci 在 DGL 之上为分子与蛋白图任务提供现成模型与数据加载,是 PyG 之外的另一条 GNN 路线。这篇讲清它的能力边界与选型判断。

DGL-LifeSci 是亚马逊 DGL 团队维护的生命科学扩展包,在 DGL 图框架之上提供分子与蛋白任务的现成模型、特征化器和数据集。它和 PyG 系是两条并行的技术路线,功能重叠度高,选哪条主要看团队既有栈。

安装

pip install dgl -f https://data.dgl.ai/wheels/repo.html
pip install dgllife
python -c "import dgllife; print(dgllife.__version__)"

DGL 主包需按 CUDA 版本选对应 wheel 源;DGL 后端可切 PyTorch / TensorFlow / MXNet,实践中用 PyTorch。

提供什么

模块 内容
特征化 CanonicalAtomFeaturizerAttentiveFPAtomFeaturizer、键特征化器
模型 GCN、GAT、AttentiveFP、MPNN、Weave、SchNet、MGCN、GIN 预训练权重
任务 分子性质预测、反应预测、分子生成(DGMG、JT-VAE)、蛋白-配体结合
数据集 MoleculeNet 系列、USPTO 反应、PDBBind

典型用法

from dgllife.utils import smiles_to_bigraph, CanonicalAtomFeaturizer
from dgllife.model import GCNPredictor
from dgllife.data import MoleculeCSVDataset
import torch

atom_feat = CanonicalAtomFeaturizer()
dataset = MoleculeCSVDataset(
    df, smiles_to_bigraph, atom_feat,
    smiles_column="smiles", cache_file_path="graphs.bin", task_names=["logS"])

model = GCNPredictor(in_feats=atom_feat.feat_size(),
                     hidden_feats=[256, 256], n_tasks=1)
# 训练循环用标准 PyTorch 写法;注意 collate 时需用 dgl.batch 合并图

它有一个实用亮点:load_pretrained() 可直接取到在 ChEMBL / ZINC 上自监督预训练过的 GIN 权重,小数据任务上做迁移学习很省事。

from dgllife.model import load_pretrained
model = load_pretrained("gin_supervised_contextpred")   # 预训练 GIN

和 PyG 怎么选

  • 生态规模:PyG 社区更大、新算子跟进更快,第三方代码大多基于 PyG。只看「能找到多少可复用实现」,PyG 占优。
  • 开箱程度:DGL-LifeSci 的分子任务封装更完整——特征化、模型、数据集配套齐全,少写胶水代码。想直接跑 AttentiveFP 或用预训练 GIN,它更快。
  • 维护活跃度:DGL-LifeSci 的更新节奏近年偏慢,新方法覆盖不如 PyG 生态。做前沿方法研究要留意这一点。
  • 务实建议:新项目默认 PyG;已在用 DGL 的团队没必要为分子任务迁移;只是想快速试 AttentiveFP 或预训练 GIN,直接用它取权重最省事。

上手提示

  • 最大便利是现成模型 + load_pretrained 的预训练分子 GIN 权重;
  • 安装先对齐 DGL 与 CUDA 版本;
  • 新项目默认选 PyG 生态,除非团队已在 DGL 上;
  • 它和 PyG 是路线之争而非能力之争,别在选型上过度纠结。

延伸资源