SuperAPI AI 工具集

torchdrug

智能体与模型

查看项目

更新于 10-16 03:52

技能介绍

用途

TorchDrug 是一个基于 PyTorch 的药物发现与分子科学机器学习工具箱。它将图神经网络、预训练模型和任务定义应用于分子、蛋白质和生物知识图谱,覆盖分子性质预测、蛋白质建模、知识图谱推理、分子生成、逆合成规划等方向,内置 40 多个精选数据集和 20 多种模型架构。

该技能适用于处理以下数据类型:SMILES 字符串或分子结构、蛋白质序列或 3D 结构(PDB 文件)、化学反应与逆合成、生物医学知识图谱、药物发现数据集。

主要能力

  1. 分子性质预测:从结构预测分子的化学、物理和生物性质,用于药物相似性与 ADMET 性质、毒性筛选、量子化学性质、结合亲和力预测。包含 20 多个分子数据集(BBBP、HIV、Tox21、QM9 等)、GNN 模型(GIN、GAT、SchNet)以及 PropertyPrediction 和 MultipleBinaryClassification 任务。

  2. 蛋白质建模:处理蛋白质序列、结构和性质,用于酶功能预测、蛋白质稳定性与溶解度、亚细胞定位、蛋白质-蛋白质相互作用、结构预测。包含 15 多个蛋白质数据集(EnzymeCommission、GeneOntology、PDBBind 等)、序列模型(ESM、ProteinBERT、ProteinLSTM)、结构模型(GearNet、SchNet)。

  3. 知识图谱推理:预测生物知识图谱中缺失的链接和关系,用于药物重定位、疾病机制发现、基因-疾病关联、多跳生物医学推理。包含通用知识图谱(FB15k、WN18)和生物医学知识图谱(Hetionet)、嵌入模型(TransE、RotatE、ComplEx)以及 KnowledgeGraphCompletion 任务。

  4. 分子生成:生成具有目标性质的新分子结构,用于从头药物设计、先导化合物优化、化学空间探索、性质引导生成。包含自回归生成、GCPN(基于策略的生成)、GraphAutoregressiveFlow 及性质优化工作流。

  5. 逆合成:从目标分子预测到起始原料的合成路线,用于合成规划、路线优化、合成可及性评估、多步规划。包含 USPTO-50k 反应数据集、CenterIdentification(反应中心预测)、SynthonCompletion(反应物预测)以及端到端 Retrosynthesis 流水线。

  6. 图神经网络模型:提供面向不同数据类型和任务的 GNN 架构目录,包括通用 GNN(GCN、GAT、GIN、RGCN、MPNN)、3D 感知模型(SchNet、GearNet)、蛋白质专用模型(ESM、ProteinBERT、GearNet)、知识图谱模型(TransE、RotatE、ComplEx、SimplE)、生成模型(GraphAutoregressiveFlow)。

  7. 数据集:40 多个精选数据集,涵盖化学、生物学和知识图谱,包括分子性质(药物发现、量子化学)、蛋白质性质(功能、结构、相互作用)、知识图谱(通用与生物医学)、逆合成反应。

使用方式

安装:

uv pip install torchdrug

或安装可选依赖

uv pip install torchdrug[full]

快速示例:

from torchdrug import datasets, models, tasks from torch.utils.data import DataLoader

加载分子数据集

dataset = datasets.BBBP("~/molecule-datasets/") train_set, valid_set, test_set = dataset.split()

定义 GNN 模型

model = models.GIN( input_dim=dataset.node_feature_dim, hidden_dims=[256, 256, 256], edge_input_dim=dataset.edge_feature_dim, batch_norm=True, readout="mean" )

创建性质预测任务

task = tasks.PropertyPrediction( model, task=dataset.tasks, criterion="bce", metric=["auroc", "auprc"] )

使用 PyTorch 训练

optimizer = torch.optim.Adam(task.parameters(), lr=1e-3) train_loader = DataLoader(train_set, batch_size=32, shuffle=True)

for epoch in range(100): for batch in train_loader: loss = task(batch) optimizer.zero_grad() loss.backward() optimizer.step()

与 RDKit 集成:

from torchdrug import data from rdkit import Chem

SMILES → TorchDrug 分子

smiles = "CCO" mol = data.Molecule.from_smiles(smiles)

TorchDrug → RDKit

rdkit_mol = mol.to_molecule()

RDKit → TorchDrug

rdkit_mol = Chem.MolFromSmiles(smiles) mol = data.Molecule.from_molecule(rdkit_mol)

与 AlphaFold/ESM 集成:

from torchdrug import data

加载 AlphaFold 预测结构

protein = data.Protein.from_pdb("AF-P12345-F1-model_v4.pdb")

构建带空间边的图

graph = protein.residue_graph( node_position="ca", edge_types=["sequential", "radius"], radius_cutoff=10.0 )

与 PyTorch Lightning 集成:

import pytorch_lightning as pl

class LightningTask(pl.LightningModule): def init(self, torchdrug_task): super().init() self.task = torchdrug_task

def training_step(self, batch, batch_idx):
    return self.task(batch)

def validation_step(self, batch, batch_idx):
    pred = self.task.predict(batch)
    target = self.task.target(batch)
    return {"pred": pred, "target": target}

def configure_optimizers(self):
    return torch.optim.Adam(self.parameters(), lr=1e-3)

适用场景

  • 分子性质预测:预测候选药物的血脑屏障穿透性,加载 datasets.BBBP(),选择 GIN 模型,定义二分类 PropertyPrediction 任务,使用 scaffold 划分进行真实评估,以 AUROC 和 AUPRC 评估。
  • 蛋白质功能预测:从序列预测酶功能,加载 datasets.EnzymeCommission(),选择 ESM(预训练)或 GearNet(带结构),定义多分类 PropertyPrediction 任务,微调预训练模型或从头训练。
  • 基于知识图谱的药物重定位:在 Hetionet 中寻找新的疾病治疗方法,加载 datasets.Hetionet(),选择 RotatE 或 ComplEx,定义 KnowledgeGraphCompletion 任务,使用负采样训练,查询“Compound-treats-Disease”预测。
  • 从头分子生成:生成针对目标结合优化的类药分子,训练性质预测器,选择 GCPN 进行基于强化学习的优化,定义结合亲和力、药物相似性、可合成性的奖励函数,生成候选并验证化学性质。
  • 逆合成规划:为目标分子规划合成路线,加载 datasets.USPTO50k(),训练中心识别模型(RGCN)和合成子补全模型(GIN),组合为端到端逆合成流水线,递归应用于多步规划,检查构建块的商业可及性。

限制与常见问题

  • 维度不匹配错误:检查 model.input_dim 是否与 dataset.node_feature_dim 匹配。
  • 分子任务性能不佳:使用 scaffold 划分而非随机划分,尝试 GIN 而非 GCN。
  • 蛋白质模型不学习:序列任务使用预训练 ESM,结构模型检查边构建。
  • 大图内存错误:减小批量大小,使用梯度累积。
  • 生成的分子无效:添加有效性约束,使用 RDKit 验证进行后处理。

官方文档:https://torchdrug.ai/docs/ GitHub:https://github.com/DeepGraphLearning/torchdrug 论文:TorchDrug: A Powerful and Flexible Machine Learning Platform for Drug Discovery