tooluniverse-small-molecule-discovery について
化合物の同定、構造、生物活性、ADMET 特性、商業調達を調べる創薬研究者向けのスキルです。化合物名や構造から活性情報や購入先の手掛かりまで、ToolUniverse での検索手順をまとめています。
主な機能
- 01化合物名・CID・SMILES の特定
- 02構造類似性・部分構造検索
- 03標的と結合活性の取得
- 04物性・ADMET 特性の予測
- 05商業供給元とライブラリの検索
活用シーン
- 01化合物の識別子と構造を調べる
- 02標的に対する活性化合物を探す
- 03分子の ADMET 特性を評価する
- 04化合物の商業入手可能性を確認する
MCP 対応
PubChem、ChEMBL、SwissADME、ADMET-AI、eMolecules、Enamine などの ToolUniverse ツールを組み合わせ、化合物データ、活性、特性、調達先の手掛かりを取得します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mims-harvard/ tooluniverse --skill tooluniverse-small-molecule-discoveryインストール後、Claude Code で/tooluniverse-small-molecule-discoveryを入力して読み込まれたか確認します。
詳細
低分子化合物探索スキル
PubChem、ChEMBL、BindingDB、ADMET-AI、SwissADME、eMolecules、Enamine を使用して、低分子化合物の特定、特性評価、入手先の調査を体系的に行います。化合物名から構造、活性、ADMET 特性、市販品の調達まで、全パイプラインを網羅します。
ドメイン推論
薬剤様性は二者択一の特性ではありません。Lipinski の Rule of 5 は、経口投与され、受動吸収される薬剤を対象に導出されたもので、よく知られた例外が数多くあります。天然物、マクロサイクル、PROTAC、そして承認済み薬剤の多くは、1 つ以上のルールに違反します。重要なのは「この化合物は Ro5 に適合するか」ではなく、「この化合物の物理化学的プロファイルは、標的、意図する投与経路、治療上の状況に必要な条件に合っているか」です。固定的なルールではなく、具体的な要件に注目してください。
推測せずに調べる
- 化合物の同一性(CID、ChEMBL ID、SMILES):
PubChem_get_CID_by_compound_nameとChEMBL_search_moleculesを呼び出してください。ID を記憶だけで決めつけないでください。 - ADMET 特性:実際の SMILES に対して
SwissADME_calculate_admeまたはADMETAI_predict_*を実行してください。logP、TPSA、生物学的利用能を推定しないでください。 - 標的に対する結合親和性:
ChEMBL_search_activitiesまたはBindingDB_get_ligands_by_uniprotを照会してください。IC50 値を記憶だけで引用しないでください。 - 市販状況:
eMolecules_searchまたはEnamine_search_catalogで確認してください。入手可能だと決めつけないでください。
重要な原則:
- まず同一性を特定する - 調査の前に、必ず CID と ChEMBL ID を取得してください
- 特性予測には SMILES が必要 - 早い段階で PubChem から標準 SMILES を取得してください
- ツールでは英語名を使う - IUPAC 名または一般的な英語名を使い、ツール呼び出しでは略語を避けてください
- BindingDB は利用できないことが多い - BindingDB がタイムアウトした場合は、ChEMBL の活性データに切り替えてください
- eMolecules/Enamine は URL を返す - これらのツールが生成するのは検索 URL で、直接データではありません。この点をユーザーに伝えてください
説明ではなく計算する
分析に計算(統計、データ処理、スコアリング、エンリッチメント)が必要な場合は、Bash 経由で Python コードを記述して実行してください。何をするか説明するのではなく、実際に実行して結果を報告してください。ToolUniverse ツールでデータを取得し、Python(pandas、scipy、statsmodels、matplotlib)で分析してください。
使用する場面
- 「化合物 X の情報を調べて」
- 「この SMILES の薬剤様性はどの程度ですか?」
- 「EGFR 阻害剤の結合親和性を示して」
- 「イマチニブに類似した化合物を検索して」
- 「この化合物は市販されていますか?」
- 「この分子の ADMET 特性は何ですか?」
- 「標的 Y に対する ChEMBL の活性データを探して」
- 「この低分子化合物の標的を予測して」
主なツール
| ツール | 目的 | 主なパラメーター |
|---|---|---|
PubChem_get_CID_by_compound_name | 化合物名からCIDを検索 | compound_name |
PubChem_get_CID_by_SMILES | SMILESからCIDを検索 | smiles |
PubChem_get_compound_properties_by_CID | 分子量、分子式、SMILES、InChIKey | cid, properties |
PubChem_search_compounds_by_similarity | 構造が類似する化合物を検索 | smiles, threshold(0~100) |
PubChem_search_compounds_by_substructure | 部分構造検索 | smiles |
PubChem_get_compound_synonyms_by_CID | すべての名称・同義語 | cid |
ChEMBL_search_molecules | 名称またはIDでChEMBLを検索 | query |
ChEMBL_get_molecule | ChEMBLの分子レコード全体 | chembl_id |
ChEMBL_search_similar_molecules | ChEMBLで類似性を検索 | query(SMILESまたはChEMBL ID) |
ChEMBL_search_activities | 結合親和性とアッセイデータ | molecule_chembl_id, target_chembl_id, pchembl_value__gte |
ChEMBL_get_drug_mechanisms | 承認薬の作用機序(MOA) | drug_chembl_idまたはdrug_name |
ChEMBL_search_targets | 名称で標的を検索 | query, organism |
ChEMBL_get_target_activities | 標的に対するすべてのリガンド | target_chembl_id |
SwissADME_calculate_adme | 物理化学的特性とADMET特性 | operation="calculate_adme", smiles |
SwissADME_check_druglikeness | Lipinski、Veber、Eganのルール | operation="check_druglikeness", smiles |
ADMETAI_predict_physicochemical_properties | 分子量、logP、TPSA、HBD/HBA | smiles(リスト) |
ADMETAI_predict_bioavailability | 経口バイオアベイラビリティの予測 | smiles(リスト) |
ADMETAI_predict_BBB_penetrance | 血液脳関門の透過性 | smiles(リスト) |
ADMETAI_predict_toxicity | hERG、DILI、変異原性 | smiles(リスト) |
ADMETAI_predict_CYP_interactions | CYP450の阻害・基質 | smiles(リスト) |
SwissTargetPrediction_predict | 化合物のタンパク質標的を予測 | operation="predict", smiles |
eMolecules_search | 商業的に入手可能な化合物を検索 | query(名称またはキーワード) |
eMolecules_search_smiles | 構造に基づいて商用化合物を検索 | smiles |
eMolecules_get_vendors | 特定の化合物を扱うベンダーを検索 | compound_id |
Enamine_search_catalog | Enamineのスクリーニングライブラリを検索 | query |
Enamine_search_smiles | 構造からEnamineを検索 | smiles |
Enamine_get_libraries | Enamineの化合物ライブラリを一覧表示 | (必須項目なし) |
ワークフロー
フェーズ1:化合物の特定
# Step 1: Name -> CID (PubChem canonical identity)
PubChem_get_CID_by_compound_name(compound_name="imatinib")
# -> CID: 5291
# Step 2: Get SMILES and properties (needed for all downstream tools)
PubChem_get_compound_properties_by_CID(
cid="5291",
properties="MolecularFormula,MolecularWeight,CanonicalSMILES,InChIKey,IUPACName"
)
# -> canonical SMILES, InChIKey (global identifier)
# Step 3: Get ChEMBL ID (for activity data)
ChEMBL_search_molecules(query="imatinib")
# -> ChEMBL ID (e.g., "CHEMBL941")
# Step 4: Get all synonyms (brand names, INN, etc.)
PubChem_get_compound_synonyms_by_CID(cid="5291")
ID解決の優先順位:
- PubChem CIDから始めます(最も汎用的です)
- ChEMBL IDを取得します(生物活性データ用)
- 構造ベースの検索とADMETには標準SMILESを使用します
フェーズ2:構造ベースの検索
類似性検索(類似化合物を検索):
PubChem_search_compounds_by_similarity(
smiles="CANONICAL_SMILES",
threshold=85 # Tanimoto threshold 0-100; 85 = highly similar
)
# Returns: list of CIDs of similar compounds
ChEMBL_search_similar_molecules(query="CHEMBL941") # Or SMILES
# Returns: ChEMBL entries sorted by similarity
部分構造検索(骨格を含む化合物を検索):
PubChem_search_compounds_by_substructure(smiles="SCAFFOLD_SMILES")
# Returns: CIDs of compounds containing the scaffold
フェーズ3:生物活性と結合親和性
化合物に関するすべての活性を取得(全標的対象):
ChEMBL_search_activities(
molecule_chembl_id="CHEMBL941",
pchembl_value__gte=6, # pIC50/Ki >= 6 = IC50/Ki <= 1 µM
limit=50
)
# Returns: assay_type, target_name, pchembl_value, units
標的に対するすべてのリガンドを取得:
# First find target ChEMBL ID
ChEMBL_search_targets(query="EGFR", organism="Homo sapiens")
# -> target_chembl_id, e.g., "CHEMBL203"
ChEMBL_get_target_activities(
target_chembl_id="CHEMBL203"
)
# Returns: all compounds with binding data against this target
BindingDB(利用可能な場合。タイムアウトすることがよくあります):
BindingDB_get_ligands_by_uniprot(uniprot_id="P00533") # EGFR
# Returns: Ki, IC50, Kd data with literature references
# Note: BindingDB REST API is frequently unavailable; fall back to ChEMBL
pChEMBL値の解釈:
| pChEMBL | IC50 / Ki | 親和性 |
|---|---|---|
| >= 9 | <= 1 nM | 非常に強力 |
| >= 7 | <= 100 nM | 強力 |
| >= 6 | <= 1 µM | 中程度 |
| >= 5 | <= 10 µM | 弱い |
| < 5 | > 10 µM | 不活性 |
フェーズ4:ドラッグライクネスとADMET
SwissADME(包括的な解析。SMILES文字列が必要で、リストには対応しません):
SwissADME_calculate_adme(
operation="calculate_adme",
smiles="CANONICAL_SMILES"
)
# Returns: physicochemical, lipophilicity, water solubility, pharmacokinetics,
# drug-likeness scores (Lipinski, Veber, Egan, Muegge), PAINS alerts
SwissADME_check_druglikeness(
operation="check_druglikeness",
smiles="CANONICAL_SMILES"
)
# Returns: Lipinski/Veber/Egan pass/fail + lead-likeness
ADMET-AI(MLベース。SMILESをリストとして指定する必要があります。tooluniverse[ml]をインストールしてください):
ADMETAI_predict_physicochemical_properties(smiles=["CANONICAL_SMILES"])
ADMETAI_predict_bioavailability(smiles=["CANONICAL_SMILES"])
ADMETAI_predict_BBB_penetrance(smiles=["CANONICAL_SMILES"])
ADMETAI_predict_toxicity(smiles=["CANONICAL_SMILES"])
ADMETAI_predict_CYP_interactions(smiles=["CANONICAL_SMILES"])
注:ADMET-AIにはpip install tooluniverse[ml]が必要です。利用できない場合は、代替としてSwissADMEを使用してください。
主なドラッグライクネスのルール:
- Lipinskiの5の法則(Ro5):MW <= 500、logP <= 5、HBD <= 5、HBA <= 10(経口薬)
- Veber:TPSA <= 140 Ų、回転可能結合数 <= 10(経口バイオアベイラビリティ)
- リードライク:MW <= 350、logP <= 3、HBD <= 3、HBA <= 6(フラグメント/リード)
フェーズ5:標的予測
新規化合物の標的を予測する場合:
SwissTargetPrediction_predict(
operation="predict",
smiles="CANONICAL_SMILES"
)
# Returns: predicted protein targets with probability scores
# Note: SwissTargetPrediction uses structure-similarity to known drug-target pairs
# May time out for complex molecules
フェーズ 6:商業入手性
eMolecules(200 社以上のサプライヤーを集約 — 直接データではなく検索 URL を返します):
eMolecules_search(query="compound_name")
# -> Returns search_url to visit on eMolecules.com
eMolecules_search_smiles(smiles="CANONICAL_SMILES")
# -> Returns URL for exact/similar structure search
Enamine(オンデマンド合成可能な 370 億以上の化合物 — API が利用できない場合は URL を返します):
Enamine_search_catalog(query="compound_name")
# -> If API available: returns catalog entries with catalog_id, price
# -> If API unavailable: returns search_url for manual search
Enamine_search_smiles(smiles="CANONICAL_SMILES")
# -> Exact or similarity structure search
Enamine_get_libraries()
# -> Lists available Enamine screening collections
注:eMolecules と Enamine の API は、ライブデータではなく検索 URL を返すことがよくあります。これらは「こちらから検索」リンクとしてユーザーに提示してください。
ツールパラメーターのリファレンス
| ツール | 必須パラメーター | 備考 |
|---|---|---|
PubChem_get_CID_by_compound_name | compound_name | CID のリストを返します。最初のもの、または最も関連性の高いものを選択してください |
PubChem_get_CID_by_SMILES | smiles | 正規 SMILES を使用します |
PubChem_get_compound_properties_by_CID | cid, properties | cid は文字列、properties はカンマ区切りです |
PubChem_search_compounds_by_similarity | smiles | threshold(整数 0~100、デフォルトは 90) |
PubChem_search_compounds_by_substructure | smiles | 骨格が一致する CID を返します |
ChEMBL_search_molecules | query | 名称、ChEMBL ID、または InChIKey |
ChEMBL_get_molecule | chembl_id | 完全な形式を使用します:「941」ではなく「CHEMBL941」 |
ChEMBL_search_similar_molecules | query | SMILES または ChEMBL ID |
ChEMBL_search_activities | molecule_chembl_id OR target_chembl_id | 強力な作用を絞り込むには pchembl_value__gte=6 を使用します |
ChEMBL_get_drug_mechanisms | drug_chembl_id or drug_name | 承認済み医薬品のみが対象です |
ChEMBL_search_targets | query | ヒトに絞り込むには organism="Homo sapiens" を追加します |
ChEMBL_get_target_activities | target_chembl_id | 対象のすべてのリガンドを返します |
SwissADME_calculate_adme | operation="calculate_adme", smiles | SMILES は文字列として指定します(リストではありません) |
SwissADME_check_druglikeness | operation="check_druglikeness", smiles | SMILES は文字列として指定します |
ADMETAI_predict_* | smiles | リストである必要があります:"SMILES" ではなく ["SMILES"] |
SwissTargetPrediction_predict | operation="predict", smiles | タイムアウトすることがあります |
eMolecules_search | query | 検索 URL を返します(ライブデータはありません) |
eMolecules_search_smiles | smiles | 正規 SMILES |
eMolecules_get_vendors | compound_id | eMolecules の内部 ID |
Enamine_search_catalog | query | API が利用できない場合は URL を返します |
Enamine_search_smiles | smiles | search_type:「exact」、「similarity」、「substructure」 |
Enamine_get_compound | enamine_id | Enamine 固有のカタログ ID |
BindingDB_get_ligands_by_uniprot | uniprot_id | 利用できないことがよくあります — 代替として ChEMBL を使用してください |
BindingDB_get_targets_by_compound | smiles | SMILES に基づく標的検索 |
よく使われるパターン
パターン 1:化合物の詳細プロファイル
Input: Compound name (e.g., "imatinib")
Flow:
1. PubChem_get_CID_by_compound_name -> CID + SMILES
2. ChEMBL_search_molecules -> ChEMBL ID
3. PubChem_get_compound_properties_by_CID -> physicochemical props
4. SwissADME_calculate_adme / ADMETAI_predict_* -> ADMET profile
5. ChEMBL_search_activities(molecule_chembl_id) -> binding data
6. ChEMBL_get_drug_mechanisms -> MOA (if approved drug)
Output: Complete compound profile with identity, ADMET, and activity data
パターン 2:類似化合物の探索
Input: Reference compound SMILES
Flow:
1. PubChem_search_compounds_by_similarity(smiles, threshold=85) -> similar CIDs
2. ChEMBL_search_similar_molecules(query=smiles) -> ChEMBL analogs
3. For each hit: PubChem_get_compound_properties_by_CID -> properties
4. SwissADME_check_druglikeness -> filter by drug-likeness
Output: Ranked list of analogs with activity data and drug-likeness scores
パターン 3:標的ベースの化合物検索
Input: Target name (e.g., "EGFR")
Flow:
1. ChEMBL_search_targets(query="EGFR", organism="Homo sapiens") -> target_chembl_id
2. ChEMBL_get_target_activities(target_chembl_id) -> all ligands with Ki/IC50
3. Filter by pchembl_value >= 7 (potent compounds)
4. For top hits: SwissADME_check_druglikeness -> assess drug-likeness
5. eMolecules_search(query=compound_name) -> check commercial availability
Output: Prioritized list of potent, drug-like, commercially available compounds
パターン 4:ADMET リスク評価
Input: Novel compound SMILES
Flow:
1. SwissADME_calculate_adme(operation="calculate_adme", smiles) -> full ADMET
2. ADMETAI_predict_toxicity(smiles=[smiles]) -> hERG, DILI, mutagenicity
3. ADMETAI_predict_CYP_interactions(smiles=[smiles]) -> drug-drug interaction risk
4. ADMETAI_predict_BBB_penetrance(smiles=[smiles]) -> CNS penetration
Output: ADMET risk profile with flagged liabilities
フォールバックチェーン
| 優先ツール | フォールバック | 条件 |
|---|---|---|
BindingDB_get_ligands_by_uniprot | ChEMBL_get_target_activities | BindingDB API が利用できない場合 |
ADMETAI_predict_* | SwissADME_calculate_adme | ml 依存関係がインストールされていない場合 |
Enamine_search_catalog | URL のみを返します | API が HTTP 500 を返す場合(よくあります) |
SwissTargetPrediction_predict | ChEMBL_search_similar_molecules + 既知の標的 | 予測がタイムアウトする場合 |
PubChem_get_CID_by_compound_name | ChEMBL_search_molecules(query=name) | PubChem に該当する名称がない場合 |
制限事項
- BindingDB:REST API が頻繁にタイムアウトします。結合データには ChEMBL が信頼できる代替手段です
- Enamine API:HTTP 500 を返すことがよくあります。ツールはフォールバックとして検索 URL を提供します
- eMolecules:公開 API はありません。ツールは検索 URL のみを生成します
- ADMET-AI:
pip install tooluniverse[ml]が必要です。ベースインストールでは常に利用できるとは限りません - SwissTargetPrediction:ウェブスクレイピングベースのため、複雑な分子ではタイムアウトすることがあります
- SMILES 形式:ADMET-AI では リスト
["SMILES"]が必要です。SwissADME では 文字列"SMILES"が必要です - ChEMBL ID:必ず完全な形式
"CHEMBL941"を使用し、「941」のような形式は使用しないでください