cheminformatics について
化合物フィルタリング、類似性分析、クラスタリング、またはMatched Molecular Pair解析を行うエージェント向けの、RDKitケモインフォマティクスの基本スキルです。フィンガープリント選択、フィルター順序、バージョン固有のAPI上の注意点を扱います。
主な機能
- 01分析目的に応じたフィンガープリント選択
- 02化合物フィルターの順序付け
- 03Matched Molecular Pair解析の案内
- 04非推奨RDKit APIの注意喚起
- 05SMILESの検証とサニタイズ
活用シーン
- 01化合物ライブラリのフィルタリング
- 02分子類似性による検索やクラスタリング
- 03Matched Molecular Pairの解析
- 04非推奨のフィンガープリントAPI呼び出しの回避
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ awslabs/ hcls-agent-skills --skill cheminformaticsインストール後、Claude Code で/cheminformaticsを入力して読み込まれたか確認します。
詳細
ケモインフォマティクス(RDKit)— パイプラインスキル(薄いスキャフォールド)
概要
RDKit のワークフロー向けに、フィンガープリントの選択ロジック、フィルターカスケードの順序、およびバージョン固有の注意点を追加します。エージェントはすでに RDKit の構文を把握しています。このスキルは、パラメーターの不一致や非推奨 API の使用を防ぎます。
使用方法
- 化合物ライブラリのフィルタリング時に有効化します(Lipinski/Veber/PAINS)
- フィンガープリントによる類似性検索やクラスタリング時に有効化します
- mmpdb を使ったマッチドペア解析(MMP)時に有効化します
主要な概念
フィルターカスケードの順序: Lipinski → Veber → PAINS → 類似性(最も低コストなものから、最も高コストなものへ)。
フィンガープリント API: rdFingerprintGenerator モジュールのみを使用してください(RDKit 2024.03 以降)。AllChem.GetMorganFingerprintAsBitVect() の経路は非推奨であり、削除される予定です。
SMILES の検証: 常に sanitize=False を指定してパースし、その後 try/except 内で明示的に SanitizeMol() を呼び出してください。デフォルトの MolFromSmiles は、部分的な失敗があっても None を黙って返します。
判断ロジック
フィンガープリントの選択
| 目的 | フィンガープリント | パラメーター | タニモト閾値 |
|---|---|---|---|
| 一般的な類似性 | Morgan(ECFP4) | radius=2, fpSize=2048 | ≥ 0.7 |
| 高特異度のマッチング | Morgan(ECFP6) | radius=3, fpSize=4096 | ≥ 0.6 |
| 部分構造スクリーニング | MACCS 166 keys | — | ≥ 0.8 |
| ファーマコフォアの類似性 | FCFP | radius=2, GetMorganFeatureAtomInvGen() | ≥ 0.6 |
| 大規模クラスタリング | Morgan | radius=2, fpSize=1024 | 精度より速度を優先 |
フィルター閾値
| フィルター | ルール | 閾値 | 注記 |
|---|---|---|---|
| Lipinski MW | ≤ 500 Da | 違反は合計 ≤1 件まで許容 | 二値の合格/不合格ではありません |
| Lipinski LogP | ≤ 5 | — | — |
| Lipinski HBD | ≤ 5 | — | — |
| Lipinski HBA | ≤ 10 | — | — |
| Veber TPSA | ≤ 140 Ų | 厳格な上限 | — |
| Veber RotBonds | ≤ 10 | 厳格な上限 | — |
| PAINS | A+B+C カタログ | HTS のトリアージのみ | 高度な化合物には適用しないでください |
MMP 解析の判断
| シナリオ | ツール | 主なパラメーター |
|---|---|---|
| 化合物ペアからの SAR | mmpdb fragment → index → transform | --min-pairs 3 |
| 物性予測 | mmpdb predict | 物性データを含むインデックス済み DB が必要です |
| コアの特定 | rdFMCS.FindMCS() | ringMatchesRingOnly=True, completeRingsOnly=True |
| 大規模ライブラリ(>10K) | mmpdb CLI | 断片化を制限するため --max-variable-size 10 |
重要なパラメーター
| パラメーター | 値 | 変更するタイミング |
|---|---|---|
| Morgan radius | 2(ECFP4) | 特異度を高める場合は 3 |
| fpSize | 2048 | 速度を優先する場合は 1024、精度を優先する場合は 4096 |
| includeChirality | False | 立体化学に敏感な用途では True |
| Lipinski max_violations | 1 | 厳格にする場合は 0、生物製剤は完全に対象外 |
| mmpdb --min-pairs | 3 | データセットが疎な場合は低くする |
| mmpdb --max-variable-size | 10 | 大環状化合物の変換では増やす |
| PAINS catalogs | A+B+C(3 つすべて) | 一部のセットは決して使用しないでください |
よくある間違い
-
誤り:
AllChem.GetMorganFingerprintAsBitVect()→ 正しい:rdFingerprintGenerator.GetMorganGenerator(radius=2, fpSize=2048).GetFingerprint(mol)→ 理由: AllChem FP 関数は RDKit 2024.03 以降非推奨となっており、今後削除されます -
誤り: エラー処理なしでデフォルトの
MolFromSmiles(smi)を使う → 正しい:MolFromSmiles(smi, sanitize=False)と、try/except 内でのSanitizeMol()の組み合わせ → 理由: デフォルトでは何も通知せず None を返しますが、明示的にサニタイズすることで部分的な失敗を検出できます -
誤り: Lipinski を厳格な二値フィルターとして使う → 正しい: 1 件以下の違反を許容する → 理由: 承認済み医薬品の多くは 1 つのルールに違反しており、二値フィルタリングでは有効な候補が除外されます
-
誤り: 臨床候補化合物に PAINS を適用する → 正しい: PAINS は HTS ライブラリのトリアージにのみ使う → 理由: スクリーニングアーティファクト向けに設計されており、開発段階の進んだ有効な化合物もフラグ付けされます
-
誤り: Morgan の radius=1 を使う → 正しい: 最低でも radius=2(ECFP4)を使う → 理由: Radius 1 では構造情報が失われ、偽陽性の類似判定が多くなります
-
誤り: radius または nBits が異なる FP を比較する → 正しい: 両方の FP に同一のパラメーターを使う → 理由: Tanimoto は同じパラメーター空間内でのみ意味があります
-
誤り: キラル化合物の立体化学を無視する → 正しい: ジェネレーターで
includeChirality=Trueを指定する → 理由: デフォルトではエナンチオマーが同一として扱われます -
誤り: すべての FP 型に固定の 0.7 しきい値を使う → 正しい: フィンガープリント型と化学系列ごとにしきい値を検証する → 理由: 0.7 という慣例は ECFP4 固有のもので、ほかの型には異なるカットオフが必要です
-
誤り: 生の SMILES を mmpdb に渡す → 正しい:
MolToSmiles(MolFromSmiles(smi))で事前に正準化する → 理由: mmpdb は正準 SMILES を想定しており、非正準の SMILES はフラグメンテーションエラーの原因になります -
誤り: LogP と LogD を混同する → 正しい: イオン化可能な化合物には pH 7.4 での LogD を使う。RDKit が計算するのは LogP のみです → 理由: 生理的 pH では、LogP はイオン化可能な分子の親油性を過大評価します
応答形式
- ユーザーが必要とするコマンドまたはコードを最初に提示し、その後に説明する
- 次の構成にする:入力の確認 → 動作するコード → 主なパラメーターの説明 → 注意点
- タスクごとに動作する完全な例を 1 つ示す。すべての代替案は示さない
- コードコメントは必要最小限かつ実用的なものにする
- 目安:コード 50~100 行と、簡潔な説明文