mcpField
A
alterlab-pytdc

alterlab-pytdc

github.com/alterlab-ieuデータ・データベース7866 回インストール5 週間前に更新
リポジトリ

alterlab-pytdc について

alterlab-pytdcは、治療領域の機械学習向けに整理されたデータセットとベンチマークを提供するPyTDCの活用スキルです。予測、相互作用モデル、分子生成を標準化された分割と評価で扱います。

主な機能

  1. 01治療領域のキュレーション済みデータセット
  2. 02単一・複数エンティティの予測タスク
  3. 03分子生成と逆合成
  4. 04ベンチマークグループと評価指標
  5. 05データ分割とデータ処理ユーティリティ

活用シーン

  1. 01創薬ベンチマークでモデルを評価
  2. 02分子特性や薬物相互作用を予測
  3. 03分子を生成して特性を評価
  4. 04Scaffold分割やCold splitでデータを準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-pytdc

インストール後、Claude Code で/alterlab-pytdcを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
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 対応データセットとベンチマークを提供するオープンサイエンスプラットフォームです。標準化された評価指標と有意義なデータ分割を備えた、治療薬開発パイプライン全体にわたるキュレーション済みデータセットにアクセスできます。データセットは、単一インスタンス予測(分子/タンパク質の特性)、複数インスタンス予測(薬物と標的の相互作用、薬物間相互作用)、生成(分子生成、逆合成)の3つのカテゴリに分類されています。

このスキルを使用する場面

以下の場合に、このスキルを使用してください:

  • 創薬や治療薬の ML データセットを扱う
  • 標準化された医薬品関連タスクで機械学習モデルのベンチマークを実施する
  • 分子特性(ADME、毒性、生物活性)を予測する
  • 薬物と標的の相互作用、または薬物間相互作用を予測する
  • 望ましい特性を持つ新規分子を生成する
  • 適切な訓練/テスト分割(スキャフォールド、コールドスプリット)を備えたキュレーション済みデータセットにアクセスする
  • 特性最適化に分子オラクルを使用する
該当しないケース
シナリオ代わりに使用
読み込んだ分子を特徴量化し、モデルを訓練/評価するalterlab-deepchem(モデル)または alterlab-molfeat(特徴量)
TDC のキュレーション済みデータセットに含まれない標的の生データの生物活性レコード(IC50/Ki)を取得するalterlab-chembl
タンパク質標的の実測結合親和性を調べるalterlab-bindingdb
PrimeKG ナレッジグラフ自体(薬物–疾患間のパス)を照会するalterlab-primekg

インストールとセットアップ

PyTDC 専用の仮想環境を用意してください:

uv venv --python 3.12        # PyTDC 1.1.15 resolves on Python 3.10-3.12, not 3.13
uv pip install PyTDC         # 1.1.15 is the latest release (Mar 2025)

PyTDC 1.1.15 は古いスタックを厳密に固定しています。具体的には、numpy<2、pandas<3、rdkit<2024.3.1、transformers<4.51、datasets<2.20 を必要とし、cellxgene-census や tiledbsoma などの大容量の追加パッケージもインストールするため、現在の RDKit 2026.x、numpy 2.x、pandas 3.x、transformers 5.x と同じ環境を共有できません。新しいライブラリが必要な場合は、分割データを CSV/Parquet にエクスポートし、別の環境で特徴量化や訓練を行ってください。

クイックスタート

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(Drug-Target Interaction、薬物と標的の相互作用)

薬物とタンパク質標的の結合親和性を予測します。

from tdc.multi_pred import DTI
data = DTI(name='BindingDB_Kd')
split = data.get_split()
# Cold-drug split (test set has only unseen drugs):
cold = data.get_split(method='cold_split', column_name='Drug')

利用可能なデータセット:

  • BindingDB_Kd - 解離定数(52,284 ペア)
  • BindingDB_IC50 - 半最大阻害濃度(991,486 ペア)
  • BindingDB_Ki - 阻害定数(375,032 ペア)
  • DAVIS、KIBA - キナーゼ結合データセット

データ形式: Drug_ID、Target_ID、Drug(SMILES)、Target(配列)、Y(結合親和性)

2. DDI(Drug-Drug Interaction、薬物間相互作用)

薬物ペア間の相互作用を予測します。

from tdc.multi_pred import DDI
data = DDI(name='DrugBank')
split = data.get_split()

相互作用の種類を予測するマルチクラス分類タスクです。データセットには、1,706 種類の薬物による 191,808 件の DDI ペアが含まれています。

3. PPI(Protein-Protein Interaction、タンパク質間相互作用)

タンパク質間相互作用を予測します。

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/')

predictions_list = []
for seed in [1, 2, 3, 4, 5]:
    benchmark = group.get('Caco2_Wang')
    name = benchmark['name']
    # train_val is split into train/valid per seed; test is FIXED across seeds.
    train_val, test = benchmark['train_val'], benchmark['test']
    train, valid = group.get_train_valid_split(
        benchmark=name, split_type='default', seed=seed
    )
    # Train model here, then predict on `test`
    predictions = {name: model.predict(test)}  # dict keyed by benchmark name
    predictions_list.append(predictions)

# Evaluate across the 5 seeds → {'caco2_wang': [mean, std]}
results = group.evaluate_many(predictions_list)

構造に注意してください。group.get(name) は、キーが name、train_val、test の辞書を返します(seed をキーとする辞書ではありません)。seed ごとの train/valid 分割は group.get_train_valid_split(...) から取得します。test セットは固定されています。各 seed の予測をベンチマーク名をキーとする辞書に格納し、それらの辞書をリストにまとめて group.evaluate_many(...) に渡してください(単一 seed の提出用辞書には 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) — pick the held-out entity via column_name
split = data.get_split(method='cold_split', column_name='Drug', seed=1)    # Unseen drugs in test
split = data.get_split(method='cold_split', column_name='Target', seed=1)  # Unseen targets in test
# Pass a list to hold out multiple entities: column_name=['Drug', 'Target']

利用可能な分割方法:

  • random:ランダムシャッフル
  • scaffold:足場に基づく分割(化学的多様性のための Bemis-Murcko 法)
  • cold_split:DTI/DDI タスク用 — テストで未知となるエンティティ('Drug'、'Target'、またはリスト)を column_name に設定します
  • combination:薬物の組み合わせデータセット用
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')
ラベル変換
from tdc.utils import get_label_map
label_map = get_label_map(name='DrugBank', task='DDI')

# Unit/log conversion is done via methods ON the dataset object, not a standalone import:
data = DTI(name='DAVIS')
data.convert_to_log(form='binding')   # e.g. Kd (nM) -> pKd; convert_from_log() reverses it
データベースクエリ
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:データ処理、分割、評価ユーティリティの詳細ガイド

その他のリソース

AlterLab Academic Skills スイートの一部です。

コメント