关于 pytdc
PyTDC 是面向药物发现与开发的开放科学数据和基准平台,适用于训练及评估治疗领域的机器学习模型。它按单实体预测、多实体交互预测和生成任务组织数据集,并提供标准化划分、指标与分子优化工具。
主要功能
- 01提供治疗领域的整理数据集
- 02涵盖属性、交互与生成任务
- 03支持多种训练测试集划分
- 04提供标准化评估指标
- 05包含分子处理工具与优化 oracle
适用场景
- 01训练 ADME 或毒性预测模型
- 02评估药物与靶点相互作用模型
- 03基准测试药物机器学习模型
- 04按目标属性优化生成分子
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ crazymsn/ academic-skills --skill pytdc安装后在 Claude Code 中输入/pytdc确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/datasets.mdoracles.mdutilities.mdscripts/benchmark_evaluation.pyload_and_split_data.pymolecular_generation.py详细介绍
PyTDC(Therapeutics Data Commons)
概述
PyTDC 是一个开放科学平台,提供适用于 AI 的药物发现与开发数据集和基准。你可以访问经过整理、涵盖整个治疗药物研发流程的数据集,这些数据集采用标准化的评估指标和有意义的数据划分,并分为三类:单实例预测(分子/蛋白质属性)、多实例预测(药物-靶点相互作用、药物-药物相互作用,即 DDI)和生成(分子生成、逆合成)。
何时使用此技能
在以下情况下使用此技能:
- 使用药物发现或治疗药物相关的机器学习数据集
- 在标准化的药物研发任务上对机器学习模型进行基准测试
- 预测分子属性(ADME、毒性、生物活性)
- 预测药物-靶点或药物-药物相互作用
- 生成具有所需属性的新分子
- 访问采用恰当训练/测试划分(骨架划分、冷启动划分)的整理后数据集
- 使用分子评估器优化属性
安装与设置
使用 pip 安装 PyTDC:
uv pip install PyTDC
升级到最新版本:
uv pip install PyTDC --upgrade
核心依赖项(自动安装):
- numpy、pandas、tqdm、seaborn、scikit_learn、fuzzywuzzy
根据特定功能的需要,还会自动安装其他软件包。
快速开始
访问任何 TDC 数据集的基本模式如下:
from tdc.<problem> import <Task>
data = <Task>(name='<Dataset>')
split = data.get_split(method='scaffold', seed=1, frac=[0.7, 0.1, 0.2])
df = data.get_data(format='df')
其中:
<problem>:single_pred、multi_pred或generation之一<Task>:特定任务类别(例如 ADME、DTI、MolGen)<Dataset>:该任务中的数据集名称
示例——加载 ADME 数据:
from tdc.single_pred import ADME
data = ADME(name='Caco2_Wang')
split = data.get_split(method='scaffold')
# Returns dict with 'train', 'valid', 'test' DataFrames
单实例预测任务
单实例预测是指预测单个生物医学实体(分子、蛋白质等)的属性。
可用任务类别
1. ADME(吸收、分布、代谢、排泄)
预测药物分子的药代动力学属性。
from tdc.single_pred import ADME
data = ADME(name='Caco2_Wang') # Intestinal permeability
# Other datasets: HIA_Hou, Bioavailability_Ma, Lipophilicity_AstraZeneca, etc.
常见 ADME 数据集:
- Caco2——肠道渗透性
- HIA——人体肠道吸收
- Bioavailability——口服生物利用度
- Lipophilicity——辛醇-水分配系数
- Solubility——水溶性
- BBB——血脑屏障穿透能力
- CYP——细胞色素 P450 代谢
2. 毒性(Tox)
预测化合物的毒性和不良反应。
from tdc.single_pred import Tox
data = Tox(name='hERG') # Cardiotoxicity
# Other datasets: AMES, DILI, Carcinogens_Lagunin, etc.
常见毒性数据集:
- hERG——心脏毒性
- AMES——致突变性
- DILI——药物性肝损伤
- Carcinogens——致癌性
- ClinTox——临床试验毒性
3. HTS(高通量筛选)
根据筛选数据预测生物活性。
from tdc.single_pred import HTS
data = HTS(name='SARSCoV2_Vitro_Touret')
4. QM(量子力学)
分子的量子力学属性。
from tdc.single_pred import QM
data = QM(name='QM7')
5. 其他单实例预测任务
- Yields:化学反应产率预测
- Epitope:生物制剂的表位预测
- Develop:开发阶段预测
- CRISPROutcome:基因编辑结果预测
数据格式
单实例预测数据集通常返回包含以下列的 DataFrame:
Drug_ID或Compound_ID:唯一标识符Drug或X:SMILES 字符串或分子表示Y:目标标签(连续值或二元值)
多实例预测任务
多实例预测是指预测多个生物医学实体之间相互作用的属性。
可用任务类别
1. DTI(药物-靶点相互作用)
预测药物与蛋白质靶点之间的结合亲和力。
from tdc.multi_pred import DTI
data = DTI(name='BindingDB_Kd')
split = data.get_split()
可用数据集:
- BindingDB_Kd——解离常数(52,284 对)
- BindingDB_IC50——半数抑制浓度(991,486 对)
- BindingDB_Ki——抑制常数(375,032 对)
- DAVIS、KIBA——激酶结合数据集
数据格式: Drug_ID、Target_ID、Drug(SMILES)、Target(序列)、Y(结合亲和力)
2. DDI(药物-药物相互作用)
预测药物对之间的相互作用。
from tdc.multi_pred import DDI
data = DDI(name='DrugBank')
split = data.get_split()
这是一个多分类任务,用于预测相互作用类型。数据集包含 191,808 对 DDI 配对,涉及 1,706 种药物。
3. PPI(蛋白质-蛋白质相互作用)
预测蛋白质-蛋白质相互作用。
from tdc.multi_pred import PPI
data = PPI(name='HuRI')
4. 其他多项预测任务
- GDA:基因-疾病关联
- DrugRes:药物耐药性预测
- DrugSyn:药物协同作用预测
- PeptideMHC:肽-MHC 结合
- AntibodyAff:抗体亲和力预测
- MTI:miRNA-靶标相互作用
- Catalyst:催化剂预测
- TrialOutcome:临床试验结果预测
生成任务
生成任务涉及创建具有所需属性的新型生物医学实体。
1. 分子生成(MolGen)
生成多样、新颖且具有理想化学性质的分子。
from tdc.generation import MolGen
data = MolGen(name='ChEMBL_V29')
split = data.get_split()
结合预言机使用,以优化特定属性:
from tdc import Oracle
oracle = Oracle(name='GSK3B')
score = oracle('CC(C)Cc1ccc(cc1)C(C)C(O)=O') # Evaluate SMILES
所有可用的预言机函数请参阅 references/oracles.md。
2. 逆合成(RetroSyn)
预测合成目标分子所需的反应物。
from tdc.generation import RetroSyn
data = RetroSyn(name='USPTO')
split = data.get_split()
数据集包含来自 USPTO 数据库的 1,939,253 个反应。
3. 成对分子生成
生成成对分子(例如,前药-药物对)。
from tdc.generation import PairMolGen
data = PairMolGen(name='Prodrug')
有关预言机的详细文档和分子生成工作流,请参阅 references/oracles.md 和 scripts/molecular_generation.py。
基准组
基准组提供经过整理的相关数据集集合,用于系统地评估模型。
ADMET 基准组
from tdc.benchmark_group import admet_group
group = admet_group(path='data/')
# Get benchmark datasets
benchmark = group.get('Caco2_Wang')
predictions = {}
for seed in [1, 2, 3, 4, 5]:
train, valid = benchmark['train'], benchmark['valid']
# Train model here
predictions[seed] = model.predict(benchmark['test'])
# Evaluate with required 5 seeds
results = group.evaluate(predictions)
ADMET 组包含 22 个数据集,涵盖吸收、分布、代谢、排泄和毒性。
其他基准组
可用的基准组包括以下领域的数据集:
- ADMET 属性
- 药物-靶标相互作用
- 药物组合预测
- 以及更多专业治疗任务
有关基准评估工作流,请参阅 scripts/benchmark_evaluation.py。
数据函数
TDC 提供全面的数据处理工具,分为四类。
1. 数据集划分
通过各种策略获取训练集、验证集和测试集分区:
# Scaffold split (default for most tasks)
split = data.get_split(method='scaffold', seed=1, frac=[0.7, 0.1, 0.2])
# Random split
split = data.get_split(method='random', seed=42, frac=[0.8, 0.1, 0.1])
# Cold split (for DTI/DDI tasks)
split = data.get_split(method='cold_drug', seed=1) # Unseen drugs in test
split = data.get_split(method='cold_target', seed=1) # Unseen targets in test
可用的划分策略:
random:随机打乱scaffold:基于骨架(用于化学多样性)cold_drug、cold_target、cold_drug_target:用于 DTI 任务temporal:用于时间型数据集的基于时间的划分
2. 模型评估
使用标准化指标进行评估:
from tdc import Evaluator
# For binary classification
evaluator = Evaluator(name='ROC-AUC')
score = evaluator(y_true, y_pred)
# For regression
evaluator = Evaluator(name='RMSE')
score = evaluator(y_true, y_pred)
**可用指标:**ROC-AUC、PR-AUC、F1、Accuracy、RMSE、MAE、R2、Spearman、Pearson 等。
3. 数据处理
TDC 提供 11 种关键处理工具:
from tdc.chem_utils import MolConvert
# Molecule format conversion
converter = MolConvert(src='SMILES', dst='PyG')
pyg_graph = converter('CC(C)Cc1ccc(cc1)C(C)C(O)=O')
处理工具包括:
- 分子格式转换(SMILES、SELFIES、PyG、DGL、ECFP 等)
- 分子筛选器(PAINS、类药性)
- 标签二值化和单位转换
- 数据平衡(过采样/欠采样)
- 成对数据的负采样
- 图转换
- 实体检索(CID 转 SMILES、UniProt 转序列)
有关工具的完整文档,请参阅 references/utilities.md。
4. 分子生成预言机
TDC 提供 17 种以上用于分子优化的预言机函数:
from tdc import Oracle
# Single oracle
oracle = Oracle(name='DRD2')
score = oracle('CC(C)Cc1ccc(cc1)C(C)C(O)=O')
# Multiple oracles
oracle = Oracle(name='JNK3')
scores = oracle(['SMILES1', 'SMILES2', 'SMILES3'])
有关完整的预言机文档,请参阅 references/oracles.md。
高级功能
获取可用数据集
from tdc.utils import retrieve_dataset_names
# Get all ADME datasets
adme_datasets = retrieve_dataset_names('ADME')
# Get all DTI datasets
dti_datasets = retrieve_dataset_names('DTI')
标签转换
# Get label mapping
label_map = data.get_label_map(name='DrugBank')
# Convert labels
from tdc.chem_utils import label_transform
transformed = label_transform(y, from_unit='nM', to_unit='p')
数据库查询
from tdc.utils import cid2smiles, uniprot2seq
# Convert PubChem CID to SMILES
smiles = cid2smiles(2244)
# Convert UniProt ID to amino acid sequence
sequence = uniprot2seq('P12345')
常见工作流
工作流 1:训练单个预测模型
完整示例请参阅 scripts/load_and_split_data.py:
from tdc.single_pred import ADME
from tdc import Evaluator
# Load data
data = ADME(name='Caco2_Wang')
split = data.get_split(method='scaffold', seed=42)
train, valid, test = split['train'], split['valid'], split['test']
# Train model (user implements)
# model.fit(train['Drug'], train['Y'])
# Evaluate
evaluator = Evaluator(name='MAE')
# score = evaluator(test['Y'], predictions)
工作流 2:基准评估
有关包含多个随机种子和规范评估流程的完整示例,请参阅 scripts/benchmark_evaluation.py。
工作流 3:使用预言机进行分子生成
有关使用预言机函数进行目标导向生成的示例,请参阅 scripts/molecular_generation.py。
资源
此技能包含适用于常见 TDC 工作流的内置资源:
scripts/
load_and_split_data.py:使用各种策略加载和拆分 TDC 数据集的模板benchmark_evaluation.py:按照规范的 5 个随机种子协议运行基准组评估的模板molecular_generation.py:使用 oracle 函数生成分子的模板
references/
datasets.md:按任务类型组织的所有可用数据集的完整目录oracles.md:17 种以上分子生成 oracle 的完整文档utilities.md:数据处理、拆分和评估工具的详细指南
其他资源
- 官方网站:https://tdcommons.ai
- 文档:https://tdc.readthedocs.io
- GitHub:https://github.com/mims-harvard/TDC
- 论文:NeurIPS 2021 - “Therapeutics Data Commons:用于药物发现与开发的机器学习数据集和任务”