chembl-database について
ChEMBL Databaseは、EBIが管理する人手でキュレーションされた生物活性分子データベースです。Pythonクライアントで化合物、標的、活性、医薬品情報を検索でき、創薬やメディシナルケミストリー研究に利用できます。
主な機能
- 01名称、ID、特性による分子検索
- 02標的と生物活性測定値の照会
- 03類似構造・部分構造検索
- 04医薬品の作用機序と適応症の取得
- 05検索結果のDataFrame出力
活用シーン
- 01選択した標的の阻害剤の探索
- 02既知医薬品の作用機序と活性の分析
- 03構造類似性と構造活性相関の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ovachiever/ droid-tings --skill chembl-databaseインストール後、Claude Code で/chembl-databaseを入力して読み込まれたか確認します。
同梱ファイルreferences/api_reference.mdscripts/example_queries.py
詳細
ChEMBL データベース
概要
ChEMBL は、欧州バイオインフォマティクス研究所(EBI)が管理する、手作業でキュレーションされた生理活性分子のデータベースです。200万超の化合物、1,900万件の生理活性測定値、13,000超の創薬標的、および承認薬と臨床候補化合物のデータを含みます。ChEMBL Python クライアントを使用すると、創薬および医薬化学研究のためにこのデータにプログラムからアクセスし、照会できます。
このスキルを使用するタイミング
このスキルは、次の場合に使用します。
- 化合物検索: 名称、構造、または特性に基づく分子の検索
- 標的情報: タンパク質、酵素、または生物学的標的に関するデータの取得
- 生理活性データ: IC50、Ki、EC50、その他の活性測定値の照会
- 医薬品情報: 承認薬、作用機序、または適応症の調査
- 構造検索: 類似性検索または部分構造検索の実施
- ケモインフォマティクス: 分子特性および薬らしさ(drug-likeness)の解析
- 標的-リガンド関係: 化合物と標的の相互作用の探索
- 創薬: 阻害薬、作動薬、または生理活性分子の特定
インストールとセットアップ
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: 標的に対する阻害薬の検索
-
名称で検索して標的を特定します:
targets = new_client.target.filter(pref_name__icontains='EGFR') target_id = targets[0]['target_chembl_id'] -
その標的の生理活性データを照会します:
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
drugs = new_client.drug.filter()
# 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 スケール)を提供しますstandard_typeを確認して測定の種類(IC50、Ki、EC50 など)を把握してください
レート制限
- 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