alterlab-chembl について
alterlab-chemblは、ChEMBL Pythonクライアントでデータベースを検索するスキルです。創薬やメディシナルケミストリー研究向けに、分子、標的、生物活性、医薬品情報を扱い、構造検索にも対応します。
主な機能
- 01名称、ID、物性による分子検索
- 02標的と生物活性の取得
- 03類似構造・部分構造検索
- 04医薬品、作用機序、適応症の検索
- 05検索結果のpandas DataFrameへの出力
活用シーン
- 01特定の標的に対する阻害剤の検索
- 02指定した構造に似た化合物の探索
- 03既知医薬品の作用機序と活性の分析
- 04分子物性によるバーチャルスクリーニング候補の選別
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alterlab-ieu/ alterlab-academic-skills --skill alterlab-chemblインストール後、Claude Code で/alterlab-chemblを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
evals/evals.jsonreferences/api_reference.mdscripts/example_queries.py詳細
ChEMBL データベース
概要
ChEMBL は、European Bioinformatics Institute(EBI)が管理する、生理活性分子の手作業でキュレーションされたデータベースです。リリース ChEMBL 37(2026 年 5 月)には、約 290 万種類の化合物、約 2,450 万件の生理活性測定値、約 18,500 件のターゲット、および承認済み医薬品と臨床候補薬のデータが収録されています(現在の件数:https://www.ebi.ac.uk/chembl/api/data/status.json)。創薬やメディシナルケミストリー研究では、ChEMBL Python クライアントを使って、これらのデータにプログラムからアクセスし、クエリを実行できます。
このスキルを使用する場面
以下の場合に、このスキルを使用してください。
- 化合物の検索:名称、構造、または特性で分子を検索する
- ターゲット情報:タンパク質、酵素、生物学的ターゲットに関するデータを取得する
- 生理活性データ:IC50、Ki、EC50、その他の活性測定値をクエリする
- 医薬品情報:承認済み医薬品、作用機序、適応症を調べる
- 構造検索:類似性検索や部分構造検索を実行する
- ケモインフォマティクス:分子特性や医薬品らしさを分析する
- ターゲットとリガンドの関係:化合物とターゲットの相互作用を調べる
- 創薬:阻害剤、アゴニスト、生理活性分子を特定する
対象外
| シナリオ | 代わりに使用するもの |
|---|---|
| BindingDB の結合定数(Ki/Kd)の測定値、または TSV 全量ダンプ | alterlab-bindingdb |
| 一般的な化合物検索、名称↔CID/SMILES の変換、PubChem BioAssay | alterlab-pubchem |
| 薬物間相互作用、医薬品ラベル、詳細な薬理学的記録 | alterlab-drugbank |
| 購入可能な化合物/ドッキング対応の 3D ライブラリ | alterlab-zinc-db |
| 構造から記述子やフィンガープリントをローカルで計算する | alterlab-rdkit |
インストールとセットアップ
Python クライアント
プログラムからアクセスするには、ChEMBL Python クライアントが必要です。
uv pip install chembl_webresource_client
基本的な使用パターン
from chembl_webresource_client.new_client import new_client
# Access different endpoints
molecule = new_client.molecule
target = new_client.target
activity = new_client.activity
drug = new_client.drug
主な機能
1. 分子クエリ
ChEMBL ID で取得:
molecule = new_client.molecule
aspirin = molecule.get('CHEMBL25')
名称で検索:
results = molecule.filter(pref_name__icontains='aspirin')
特性で絞り込み:
# Find small molecules (MW <= 500) with favorable LogP
results = molecule.filter(
molecule_properties__mw_freebase__lte=500,
molecule_properties__alogp__lte=5
)
2. ターゲットクエリ
ターゲット情報を取得:
target = new_client.target
egfr = target.get('CHEMBL203')
特定のターゲットタイプを検索:
# Find all kinase targets
kinases = target.filter(
target_type='SINGLE PROTEIN',
pref_name__icontains='kinase'
)
3. 生理活性データ
ターゲットの活性をクエリ:
activity = new_client.activity
# Find potent EGFR inhibitors
results = activity.filter(
target_chembl_id='CHEMBL203',
standard_type='IC50',
standard_value__lte=100,
standard_units='nM'
)
化合物の全活性を取得:
compound_activities = activity.filter(
molecule_chembl_id='CHEMBL25',
pchembl_value__isnull=False
)
4. 構造ベースの検索
類似性検索:
similarity = new_client.similarity
# Find compounds similar to aspirin
similar = similarity.filter(
smiles='CC(=O)Oc1ccccc1C(=O)O',
similarity=85 # 85% similarity threshold
)
部分構造検索:
substructure = new_client.substructure
# Find compounds containing benzene ring
results = substructure.filter(smiles='c1ccccc1')
5. 医薬品情報
医薬品データを取得:
drug = new_client.drug
drug_info = drug.get('CHEMBL25')
作用機序を取得:
mechanism = new_client.mechanism
mechanisms = mechanism.filter(molecule_chembl_id='CHEMBL25')
医薬品の適応症をクエリ:
drug_indication = new_client.drug_indication
indications = drug_indication.filter(molecule_chembl_id='CHEMBL25')
クエリのワークフロー
ワークフロー 1:ターゲットに対する阻害剤の検索
-
ターゲットを特定する — UniProt アクセッションによる方法が最も確実です。名称検索はあいまい検索であり(
pref_name__icontains='EGFR'ではキメラやタンパク質間相互作用ターゲットが先に返されます。また、CHEMBL203 のpref_nameは "Epidermal growth factor receptor" であるため、遺伝子シンボルは別名にしか一致しません):targets = new_client.target.filter( target_components__accession='P00533', # human EGFR target_type='SINGLE PROTEIN', ) target_id = targets[0]['target_chembl_id'] # CHEMBL203 # By symbol instead: target_synonym__icontains='EGFR' plus organism='Homo sapiens', # then check pref_name — substring matches also hit VEGFR1/2/3. -
そのターゲットの生理活性データをクエリします:
activities = new_client.activity.filter( target_chembl_id=target_id, standard_type='IC50', standard_value__lte=100 ) -
化合物 ID を抽出し、詳細を取得します:
compound_ids = [act['molecule_chembl_id'] for act in activities] compounds = [new_client.molecule.get(cid) for cid in compound_ids]
ワークフロー 2:既知の医薬品の分析
-
医薬品情報を取得します:
drug_info = new_client.drug.get('CHEMBL1234') -
作用機序を取得します:
mechanisms = new_client.mechanism.filter(molecule_chembl_id='CHEMBL1234') -
すべての生理活性を検索します:
activities = new_client.activity.filter(molecule_chembl_id='CHEMBL1234')
ワークフロー 3:構造活性相関(SAR)研究
-
類似化合物を検索します:
similar = new_client.similarity.filter(smiles='query_smiles', similarity=80) -
各化合物の活性を取得します:
for compound in similar: activities = new_client.activity.filter( molecule_chembl_id=compound['molecule_chembl_id'] ) -
結果の分子特性を使って、特性と活性の関係を分析します。
フィルター演算子
ChEMBL は Django 形式のクエリフィルターに対応しています。
__exact- 完全一致__iexact- 大文字と小文字を区別しない完全一致__contains/__icontains- 部分文字列の一致__startswith/__endswith- 前方一致/後方一致__gt、__gte、__lt、__lte- 数値比較__range- 範囲内の値__in- リスト内の値__isnull- null/非 null の確認
データのエクスポートと分析
分析用に、結果を pandas DataFrame に変換します。
import pandas as pd
activities = new_client.activity.filter(target_chembl_id='CHEMBL203')
df = pd.DataFrame(list(activities))
# Analyze results
print(df['standard_value'].describe())
print(df.groupby('standard_type').size())
パフォーマンスの最適化
キャッシュ
クライアントは結果を自動的に24時間キャッシュします。キャッシュを設定するには:
from chembl_webresource_client.settings import Settings
# Disable caching
Settings.Instance().CACHING = False
# Adjust cache expiration (seconds)
Settings.Instance().CACHE_EXPIRE = 86400
遅延評価
クエリはデータにアクセスしたときにのみ実行されます。実行を強制するには、リストに変換します:
# Query is not executed yet
results = molecule.filter(pref_name__icontains='aspirin')
# Force execution
results_list = list(results)
ページネーション
結果は自動的にページ分割されます。すべての結果を反復処理します:
for activity in new_client.activity.filter(target_chembl_id='CHEMBL203'):
# Process each activity
print(activity['molecule_chembl_id'])
よくある使用例
キナーゼ阻害剤を検索する
# Identify kinase targets
kinases = new_client.target.filter(
target_type='SINGLE PROTEIN',
pref_name__icontains='kinase'
)
# Get potent inhibitors
for kinase in kinases[:5]: # First 5 kinases
activities = new_client.activity.filter(
target_chembl_id=kinase['target_chembl_id'],
standard_type='IC50',
standard_value__lte=50
)
ドラッグリポジショニングを調べる
# Get approved drugs (the drug endpoint also lists clinical candidates,
# so filter on max_phase=4; ~3,000 approved of ~16,000 drug records)
drugs = new_client.drug.filter(max_phase=4)
# For each drug, find all targets
for drug in drugs[:10]:
mechanisms = new_client.mechanism.filter(
molecule_chembl_id=drug['molecule_chembl_id']
)
バーチャルスクリーニング
# Find compounds with desired properties
candidates = new_client.molecule.filter(
molecule_properties__mw_freebase__range=[300, 500],
molecule_properties__alogp__lte=5,
molecule_properties__hba__lte=10,
molecule_properties__hbd__lte=5
)
リソース
scripts/example_queries.py
よく使われるChEMBLクエリパターンを示す、すぐに使用できるPython関数:
get_molecule_info()- IDで分子の詳細を取得しますsearch_molecules_by_name()- 名前で分子を検索しますfind_molecules_by_properties()- 物性に基づいて絞り込みますget_bioactivity_data()- ターゲットの生物活性をクエリしますfind_similar_compounds()- 類似化合物を検索しますsubstructure_search()- 部分構造を照合しますget_drug_info()- 医薬品情報を取得しますfind_kinase_inhibitors()- キナーゼ阻害剤に特化して検索しますexport_to_dataframe()- 結果をpandas DataFrameに変換します
実装の詳細と使用例については、このスクリプトを参照してください。
references/api_reference.md
以下を含む、包括的なAPIドキュメントです:
- エンドポイントの完全な一覧(molecule、target、activity、assay、drugなど)
- すべてのフィルター演算子とクエリパターン
- 分子の物性と生物活性フィールド
- 高度なクエリ例
- 設定とパフォーマンスの調整
- エラー処理とレート制限
詳細なAPI情報が必要な場合や、クエリのトラブルシューティングを行う場合は、このドキュメントを参照してください。
重要な注意事項
データの信頼性
- ChEMBLのデータは手動でキュレーションされていますが、不整合が含まれる場合があります
- 活性レコードの
data_validity_commentフィールドを必ず確認してください potential_duplicateフラグに注意してください
単位と規格
- 生物活性値には標準単位(nM、uMなど)が使用されます
pchembl_valueは正規化された活性(-logスケール)を示します- 測定の種類(IC50、Ki、EC50など)を把握するには、
standard_typeを確認してください
レート制限
- ChEMBLの公正利用ポリシーを遵守してください
- キャッシュを使用してリクエストの繰り返しを最小限に抑えてください
- 大規模なデータセットには一括ダウンロードを検討してください
- APIに短時間で連続してリクエストを大量に送信しないでください
化学構造の形式
- SMILES文字列は主要な構造形式です
- 化合物のInChIキーを利用できます
- 画像エンドポイントを介してSVG画像を生成できます
追加リソース
- ChEMBLのウェブサイト:https://www.ebi.ac.uk/chembl/
- APIドキュメント:https://www.ebi.ac.uk/chembl/api/data/docs
- PythonクライアントのGitHub:https://github.com/chembl/chembl_webresource_client
- インターフェースのドキュメント:https://chembl.gitbook.io/chembl-interface-documentation/
- ノートブックの例:https://github.com/chembl/notebooks