pytdc について
PyTDCは、創薬・医薬品開発向けのオープンサイエンスデータおよびベンチマークプラットフォームです。単一対象の予測、相互作用予測、生成タスク別にデータセットを整理し、標準化された分割や評価指標、分子最適化ツールを提供します。
主な機能
- 01治療分野のキュレーション済みデータセット
- 02物性・相互作用・生成タスク
- 03複数の学習・テスト分割方式
- 04標準化された評価指標
- 05分子処理ツールと最適化オラクル
活用シーン
- 01ADMEや毒性予測モデルの学習
- 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)、生成(分子生成、逆合成)の3つのカテゴリに分類されています。
このスキルを使用するタイミング
このスキルは、次のような場合に使用します:
- 創薬や治療に関する ML データセットを扱うとき
- 標準化された医薬品タスクで機械学習モデルをベンチマークするとき
- 分子の特性(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. Toxicity(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()
相互作用の種類を予測する多クラス分類タスクです。データセットには、1,706 種の薬物に関する 191,808 組の DDI ペアが含まれます。
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データベースfrom 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は、4つのカテゴリに分類された包括的なデータ処理ユーティリティを提供します。
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: オラクル関数を使用した分子生成のためのテンプレート
references/
datasets.md: タスクの種類ごとに整理された、利用可能なすべてのデータセットの包括的なカタログoracles.md: 17 種類以上のすべての分子生成オラクルの完全なドキュメントutilities.md: データ処理、分割、評価ユーティリティの詳細ガイド
追加リソース
- 公式サイト: https://tdcommons.ai
- ドキュメント: https://tdc.readthedocs.io
- GitHub: https://github.com/mims-harvard/TDC
- 論文: NeurIPS 2021 - "Therapeutics Data Commons: Machine Learning Datasets and Tasks for Drug Discovery and Development"