mcpField
C
chembl-database

chembl-database

github.com/ovachieverデータ・データベース5648 回インストール48 週間前に更新
リポジトリ

chembl-database について

ChEMBL Databaseは、EBIが管理する人手でキュレーションされた生物活性分子データベースです。Pythonクライアントで化合物、標的、活性、医薬品情報を検索でき、創薬やメディシナルケミストリー研究に利用できます。

主な機能

  1. 01名称、ID、特性による分子検索
  2. 02標的と生物活性測定値の照会
  3. 03類似構造・部分構造検索
  4. 04医薬品の作用機序と適応症の取得
  5. 05検索結果のDataFrame出力

活用シーン

  1. 01選択した標的の阻害剤の探索
  2. 02既知医薬品の作用機序と活性の分析
  3. 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: 標的に対する阻害薬の検索
  1. 名称で検索して標的を特定します:

    targets = new_client.target.filter(pref_name__icontains='EGFR')
    target_id = targets[0]['target_chembl_id']
    
  2. その標的の生理活性データを照会します:

    activities = new_client.activity.filter(
        target_chembl_id=target_id,
        standard_type='IC50',
        standard_value__lte=100
    )
    
  3. 化合物 ID を抽出し、詳細を取得します:

    compound_ids = [act['molecule_chembl_id'] for act in activities]
    compounds = [new_client.molecule.get(cid) for cid in compound_ids]
    
ワークフロー 2: 既知の医薬品の分析
  1. 医薬品情報を取得します:

    drug_info = new_client.drug.get('CHEMBL1234')
    
  2. 作用機序を取得します:

    mechanisms = new_client.mechanism.filter(molecule_chembl_id='CHEMBL1234')
    
  3. すべての生理活性を検索します:

    activities = new_client.activity.filter(molecule_chembl_id='CHEMBL1234')
    
ワークフロー 3: 構造活性相関(SAR)研究
  1. 類似化合物を検索します:

    similar = new_client.similarity.filter(smiles='query_smiles', similarity=80)
    
  2. 各化合物の活性を取得します:

    for compound in similar:
        activities = new_client.activity.filter(
            molecule_chembl_id=compound['molecule_chembl_id']
        )
    
  3. 結果から得られる分子特性を用いて、特性と活性の関係を分析します。

フィルター演算子

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 画像は画像エンドポイントを経由して生成できます

追加リソース

コメント