mcpField
C
cheminformatics

cheminformatics

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

cheminformatics について

RDKitを使った創薬ワークフロー向けの計算化学スキルです。再現可能なパイプラインで分子構造を処理し、性質やADMETリスクを予測して化合物をスクリーニングできます。

主な機能

  1. 01SMILESとSDFの構造を解析
  2. 02分子記述子を計算
  3. 03薬らしさでフィルタリング
  4. 04ADMET特性を予測
  5. 05分子類似性を検索
  6. 06ドッキング用構造を準備

活用シーン

  1. 01化合物ライブラリから候補を選別
  2. 02創薬におけるADMETリスクを評価
  3. 03既知分子に類似する化合物を検索
  4. 04分子ドッキング用の構造を準備

インストール

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

$npx skills add https://github.com/itallstartedwithaidea/agent-skills --skill cheminformatics

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

詳細

ケモインフォマティクス

googleadsagent.ai™によるAgent Skills™の一部です。

説明

ケモインフォマティクスは、RDKitを使用した計算化学のワークフローを提供し、分子特性の予測、バーチャルスクリーニング、ADMET解析、分子ドッキングの準備、化学空間の探索に対応します。エージェントは再現可能なケモインフォマティクスのパイプラインを生成し、分子構造(SMILES、SDF)を、薬物らしさ、毒性、結合親和性に関する実用的な予測へと変換します。

創薬では、すべてを合成して試験することができないほど膨大な化合物ライブラリが生み出されます。ケモインフォマティクスは計算によって探索空間を絞り込みます。LipinskiのRule of Fiveによるフィルタリング、ADMET特性(吸収、分布、代謝、排泄、毒性)の予測、ドッキングポーズのスコアリング、化学空間のクラスタリングを行い、多様なリード候補を特定します。各段階で、後続のより高コストな段階で失敗する化合物を除外します。

このスキルでは、SMILESの解析から記述子の計算、フィンガープリントの生成、類似性検索、特性予測、可視化まで、分子情報学のワークフローを扱います。PubChemやChEMBLなどのデータベースと連携し、化合物を取得するとともに、既知の活性化合物および不活性化合物と照らし合わせてベンチマークを行います。

使用する場面

  • 分子特性と記述子の計算
  • 化合物ライブラリの薬物らしさのスクリーニング
  • リード化合物のADMET特性の予測
  • 分子類似性検索の実行
  • 分子ドッキングに向けた構造の準備
  • 化学空間と構造活性相関の可視化

仕組み

graph TD
    A[Molecular Input: SMILES/SDF] --> B[Parse + Validate Structures]
    B --> C[Calculate Descriptors]
    C --> D[Drug-likeness Filters]
    D --> E{Passes Lipinski?}
    E -->|No| F[Flag as Non-Drug-like]
    E -->|Yes| G[ADMET Prediction]
    G --> H[Virtual Screening Score]
    H --> I[Docking Preparation]
    I --> J[Ranked Candidate List]
    F --> K[Report with Flags]
    J --> K

化合物は、段階的に選別の厳しさが増すフィルターを通過します。薬物らしさの評価で明らかに実用性のない候補を除外し、ADMET予測で吸収や毒性のリスクを検出し、バーチャルスクリーニングで残った候補を予測活性に基づいて順位付けします。

実装

from rdkit import Chem
from rdkit.Chem import Descriptors, AllChem, Draw, Lipinski, DataStructs
from rdkit.Chem import rdMolDescriptors
import pandas as pd

def molecular_properties(smiles: str) -> dict:
    mol = Chem.MolFromSmiles(smiles)
    if mol is None:
        raise ValueError(f"Invalid SMILES: {smiles}")
    return {
        "smiles": smiles,
        "mw": Descriptors.MolWt(mol),
        "logp": Descriptors.MolLogP(mol),
        "hbd": Descriptors.NumHDonors(mol),
        "hba": Descriptors.NumHAcceptors(mol),
        "tpsa": Descriptors.TPSA(mol),
        "rotatable_bonds": Descriptors.NumRotatableBonds(mol),
        "rings": Descriptors.RingCount(mol),
        "lipinski_violations": sum([
            Descriptors.MolWt(mol) > 500,
            Descriptors.MolLogP(mol) > 5,
            Descriptors.NumHDonors(mol) > 5,
            Descriptors.NumHAcceptors(mol) > 10,
        ]),
    }

def lipinski_filter(df: pd.DataFrame) -> pd.DataFrame:
    return df[df["lipinski_violations"] <= 1].copy()

def similarity_search(query_smiles: str, library: list[str], threshold: float = 0.7) -> list[dict]:
    query_mol = Chem.MolFromSmiles(query_smiles)
    query_fp = AllChem.GetMorganFingerprintAsBitVect(query_mol, radius=2, nBits=2048)

    results = []
    for smi in library:
        mol = Chem.MolFromSmiles(smi)
        if mol is None:
            continue
        fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius=2, nBits=2048)
        tanimoto = DataStructs.TanimotoSimilarity(query_fp, fp)
        if tanimoto >= threshold:
            results.append({"smiles": smi, "tanimoto": tanimoto})

    return sorted(results, key=lambda x: -x["tanimoto"])

def admet_flags(props: dict) -> list[str]:
    flags = []
    if props["logp"] > 5:
        flags.append("High lipophilicity: poor aqueous solubility risk")
    if props["tpsa"] > 140:
        flags.append("High TPSA: poor membrane permeability risk")
    if props["mw"] > 500:
        flags.append("High MW: poor oral absorption risk")
    if props["rotatable_bonds"] > 10:
        flags.append("High flexibility: poor oral bioavailability risk")
    return flags

ベストプラクティス

  • 記述子を計算する前に、必ずSMILESの解析結果を検証してください。無効な構造は、エラーが通知されないまま処理されることがあります。
  • 類似性の計算には、Morganフィンガープリント(radius=2、2048ビット)をデフォルトとして使用してください。
  • LipinskiのRule of Fiveは最初の絞り込みに使用し、絶対的な基準として扱わないでください。
  • すべての類似性検索で使用したTanimoto類似度のしきい値を報告してください。
  • 比較の前に分子を標準化してください(脱塩、中和、正準化)。
  • フィンガープリント表現にt-SNEまたはUMAPを適用して、化学空間を可視化してください。

プラットフォームの互換性

プラットフォームサポート備考
Cursor完全Python + RDKit環境
VS Code完全Jupyter + 分子可視化
Windsurf完全Scientific Python
Claude Code完全パイプラインの生成
Cline完全ケモインフォマティクスのワークフロー
aider一部コード生成のみ

関連スキル

キーワード

cheminformatics rdkit molecular-properties virtual-screening admet lipinski drug-discovery molecular-similarity


© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License

コメント