mcpField
P
pytdc

pytdc

github.com/davila7数据与数据库33.0k275 次安装今天更新
代码仓库

关于 pytdc

PyTDC 是用于访问治疗学数据集和标准化基准的 Python 平台与技能,面向药物研发机器学习研究,涵盖预测、生成及评估任务。

主要功能

  1. 01精选治疗学数据集
  2. 02单实体与多实体预测
  3. 03分子生成与逆合成
  4. 04标准化数据划分与指标
  5. 05分子处理工具
  6. 06性质优化 Oracle

适用场景

  1. 01评测药物研发模型
  2. 02预测 ADME 或毒性
  3. 03研究药物-靶标相互作用
  4. 04生成并优化分子

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davila7/claude-code-templates --skill pytdc

安装后在 Claude Code 中输入/pytdc确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
datasets.md
oracles.md
utilities.md
scripts/
benchmark_evaluation.py
load_and_split_data.py
molecular_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:数据处理、拆分和评估工具的详细指南

其他资源

评论

支持 Markdown