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。
提供什么
| 模块 | 内容 |
|---|---|
| 特征化 | CanonicalAtomFeaturizer、AttentiveFPAtomFeaturizer、键特征化器 |
| 模型 | 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 是路线之争而非能力之争,别在选型上过度纠结。
延伸资源
- 对照框架:176《PyTorch Geometric》、175《TorchDrug》、172《DeepChem》;
- GNN 基础:006《Stanford CS224W 图神经网络》;预训练范式见「AI 模型」模块。