AI化学スタックにおけるRDKitの役割
AIアシスタントは研究上の問いを操作に変換できますが、分子計算は特定可能な化学エンジンから得るべきです。RDKitがその役割を担います。公式ドキュメントでは、分子データ構造、2D・3D操作、記述子とフィンガープリントの生成、化学検索が説明されています。中核アルゴリズムはC++で実装され、Pythonインターフェースと追加のラッパーが提供されていますが、各ラッパーの機能範囲が同一だと仮定してはいけません。
RDKitはツールキットであり、生物活性をすぐに予測する製品ではありません。有用なアーキテクチャでは、アシスタントによる計画を、分子処理、外部情報の取得、解釈から分離します。アシスタントが操作を要求し、ソフトウェアが実行し、構造化された結果が実際に行われたことを記録します。アシスタントは欠損値を捏造せずにその結果を説明します。
このガイドでは構造処理の全工程を扱います。PubChemエージェント統合ガイドでは外部情報の取得を説明し、MCP、Skills、エージェント、APIでは周辺コンポーネントの役割を解説します。
Python、MCP、Skillに導かれた実行方法を選ぶ
これらの経路は相互補完的であり、同じものではありません。実行を誰が制御するか、必要な化学操作、アプリケーションに必要な監査可能性に応じて選択します。
| リソースまたは経路 | 実際の役割 | 検討する場面 | 確認すべき境界 |
|---|---|---|---|
| RDKit Python interface | ツールキット操作への直接アクセス | 明示的なバッチ処理パイプライン、カスタムsanitization、制御されたパラメーター | レコードスキーマ、失敗処理、環境を独自に定義する |
| RDKit MCP Server (TandemAI) | MCP対応クライアントにRDKitツールを公開するPythonサーバー | アシスタント主導のツール呼び出し | 実際のツール一覧を確認する。包括的な対応は目標として述べられているもので、実証済みの範囲ではない |
| RDKit Skill (K-Dense) | 指示、リファレンス、任意のPythonヘルパー | 詳細なRDKitワークフローをアシスタントに教える | rdkit依存関係は別途インストールが必要 |
| rdkit-agent Skill (scottmreed) | 独立したRDKit WASM対応CLI向けの指示 | 文書化されたCLIによる、検証を優先する構造化されたやり取り | WASMの機能はPythonと異なる。立体異性体列挙は非対応と記載されている |
| Datamol Skill (K-Dense) | RDKitのPython抽象化レイヤーであるDatamolの使用ガイド | 通常の分子データ準備、バッチ分析、骨格ワークフロー | デフォルト設定にもタスク固有の化学的方針が必要 |
| PubChem PUG REST | 選択された化学情報を提供するホスト型HTTP API | 識別子、レコード、物性情報の補完 | 情報取得はローカル化学計算や実験的検証ではない |
Skillを読み込んでも、実行に必要な依存関係はインストールされません。ホストによって指示の読み込み方法やツール使用の許可も異なります。TandemAIサーバーでは、クライアントを選ぶ前に公開ツールと設定を確認してください。依存関係の宣言や現行プロトコルの概要だけでは、相互運用性がテスト済みだとは言えません。化学MCP選定ガイドと化学向けAI Skillsガイドが判断の整理に役立ちます。
接続とツール発見については、化学分野のMCPを参照してください。
入力と監査可能なレコード契約を定義する
まず科学的な問いを定めます。提出された物質、親分子グラフ、あるいは意図的に標準化した表現のどれを比較するのでしょうか。この決定により、変換できる情報とそのまま保持すべき情報が決まります。
K-Dense RDKit Skillには、SMILES、SDF、MOL、InChIのワークフローが記載されています。対応するDatamol SkillではCSVなどの表形式入力も扱っています。これらは文書化されたワークフローの選択肢であり、すべてのMCPツールが各形式を受け付ける証拠ではありません。
推奨するレコード契約には、次の項目を含めます。
- **出典:**安定したローカルレコードID、出典識別子、入力形式、元の構造またはファイル参照。
- **処理:**解析状態、検証所見、標準化ポリシーID、変換履歴。
- **化学情報:**保持した表現、塩・成分の扱い、電荷の扱い、立体化学の状態。
- **結果:**要求した記述子、フィンガープリント仕様、検索設定、返された一致結果。
- **プロベナンス:**ソフトウェア環境、実行経路、外部識別子、該当する場合は取得日。
- **失敗:**段階、診断、試行した操作、最終的な処置。
レコードが失敗しても、出典IDとの対応関係を保ちます。棄却記録なしに受理された分子だけをまとめると、特徴量と出典行の関係が失われる可能性があります。データセット・プロベナンスガイドでは、その関係を維持するための広範な枠組みを紹介しています。
まず解析し、その後に意図を持って標準化する
解析とsanitizationによって、構造を要求された操作に進められるかどうかが決まります。標準化は特定のタスク用に表現を選択するものです。どちらも、提出された構造が意図した化合物であることを証明するものではありません。
K-Dense RDKitガイダンスでは、canonical isomeric SMILESと、互変異性体の調整、プロトン化状態の選択、塩の除去、未指定の立体化学の解決とを明確に区別しています。そのヘルパーは出典IDを保持し、暗黙の塩除去や分子の中和を行わないと説明されています。
処理前に、次の3点を決めます。
- **成分と塩:**提出された構造全体を保持するか、別個の親化合物表現を作成するか、対象外の多成分レコードを除外するか。除去した成分があれば記録します。
- **電荷:**形式電荷を保持するか、根拠のある変換を適用するか。水素を追加しても、指定pHでのプロトン化状態は決まりません。
- **立体化学:**指定済み情報を保持し、未指定の中心は暗黙に補完せず、その旨を記録します。拡張立体化学が重要なら、それを保持できる交換表現を選びます。
カスタムsanitizationや特殊アルゴリズムが重要なら、RDKitを直接使用します。Datamolガイダンスは通常の操作を簡略化できますが、金属結合の切断、中和、塩の除去によって研究対象が変わる場合があります。製剤や有機金属のタスクでは、こうした変換を自動実行すべきではありません。
特徴量を計算し、検索の問いを区別する
選択した方針に従って受理した後、記述子から数値特徴量を得られます。提供されたRDKit Skillでは、分子量、LogP、TPSA、水素結合数などを扱っています。記述子名と計算設定を値とともに保存します。失敗した計算を架空の数値で置き換えたり、欠損出力を暗黙にゼロとして扱ったりしてはいけません。
フィンガープリントは、比較や後続のモデリングに向けて、選択された分子特徴を符号化します。ファミリー、パラメーター、該当する場合はサイズ、キラリティ設定を記録します。SkillではMorgan/ECFPとMACCSのワークフローが説明されていますが、適切な選択はタスクごとに評価する必要があります。
類似性検索は、指定したフィンガープリントと尺度に基づき、近い表現を探します。これは同一性判定ではありません。RDKit Skillはフィンガープリントの衝突とキラリティ設定に注意を促しています。部分構造検索では、特定の照合規則に基づき、SMARTSクエリが分子グラフに一致するかを調べます。結果を解釈可能にするため、クエリ、設定、一致件数、結果上限を保存します。
データベースワークフローでは、RDKitのPostgreSQL cartridgeが類似性検索、部分構造検索、記述子計算をサポートします。これは別のデプロイ経路であり、MCPラッパーがcartridgeを公開している証拠ではありません。フィンガープリントを別の予測モデルに入力することもできますが、フィンガープリント自体がラベルを提供したり、予測妥当性を実証したりするわけではありません。
提案例:追跡可能なアスピリン近傍検索
以下は提案する評価ワークフローであり、計算を実行した報告ではありません。参照構造を取得し、小規模なローカルコレクションを準備し、レビュー可能な類似候補リストを作ることを目的とします。
**入力:**安定した行IDと提出SMILESを含むローカル表、および参照識別子としてのPubChem CID 2244。失敗処理を試すため、意図的に不正形式、荷電、多成分、立体化学未指定のレコードを含めます。
- 文書に記載されたCID 2244 SDFの例を取得します。応答、識別子、取得日を保存し、返された構造をローカルで検証します。
- 元の全行を保持したまま、ローカル入力を解析します。不正形式または空の構造は、同一性を推測せず隔離します。
- 宣言した例示ポリシーを適用します。提出された分子グラフ全体と形式電荷を保持し、指定済みの立体化学は維持し、未指定の立体化学は未解決のままにします。初回処理では塩を除去せず、互変異性体も選択しません。
- 受理されたレコードと参照分子について、選択した記述子一式と一貫した設定のMorganフィンガープリントを計算します。比較にキラリティを含める場合は明示的に有効にします。
- 選んだ類似度指標で受理レコードを順位付けし、件数を制限した候補リストを返します。特定のモチーフが問われる場合は、レビュー済みSMARTSクエリを別途実行します。モチーフの該当とフィンガープリント順位を混同しないでください。
- 候補リストを解釈する前に、多成分レコードを確認します。後から親化合物のみの比較が正当化された場合は、最初の結果を上書きせず、別途ラベル付けした分岐を作成します。
**出力:**受理レコードの特徴量、順位付けされた近傍分子、要求に応じた部分構造検索結果、変換ログ、棄却レコード。**判断点:**参照構造が正常に解析されたか、各レコードが方針に合致するか、選択した表現が科学的な問いに答えるか。本稿では類似度スコアや記述子の計算結果を主張しません。
エージェント呼び出しと範囲を限定したPubChem情報補完を追加する
推奨アーキテクチャは次のとおりです。
ユーザーの質問 → アシスタントの計画 → 構造化された検証リクエスト → 化学計算の実行 → 結果確認 → 必要に応じたPubChem情報補完 → プロベナンスに基づく説明。
これは提案する統合パターンであり、テスト済みの相互運用性を示すものではありません。化学レイヤーが計算を担当し、アシスタントは承認された操作を選択して返された根拠を説明します。
rdkit-agent Skillは、overall_pass、corrected_values、fix_suggestionsを確認し、JSON形式でやり取りし、返却フィールドや一致件数を制限するよう推奨しています。修正提案は、元の構造を置き換える許可ではなく、確認が必要な候補変更として扱います。TandemAIでは、RDKit API全体が利用できると仮定せず、ツールスキーマを確認してください。
PubChem PUG RESTは、化合物識別子、選択した物性、構造ベースの検索をサポートします。たとえば、文書化された分子式とInChIKeyのリクエストを使って参照レコードを補完できます。取得した物性とローカル計算結果は区別して保持し、食い違いがあれば、どちらかを黙って選ぶのではなく調査します。
公開されているリクエスト制限と動的なスロットリングに従い、再試行回数を制限します。このチュートリアルでは、PUG RESTを焦点を絞った情報取得向けと位置づけており、個別リクエストを数百万回行う用途ではありません。一括収集には適切な一括ダウンロードワークフローが必要です。
失敗と科学的限界に対処する
化学的に無効な入力、未対応操作、不正なツールリクエスト、サービス障害を区別します。それぞれに対し、隔離、リクエストの修正、明示的に選択した代替エンジンの利用、取得の延期など、実行可能な対応を行います。化学的に無効な入力を何度も再試行してはいけません。
rdkit-agent Skillが説明する標準WASMビルドでは、立体異性体の列挙に対してNOT_SUPPORTED_IN_WASMが返されます。列挙が必要なら、Python経路を別途評価します。任意の3D工程にも失敗時のゲートが必要です。RDKitガイダンスでは、埋め込みに失敗した場合、力場最適化に進んではならないとされています。クラスタリングについて、Datamol Skillは全ペア間距離の計算がメモリを超過する可能性を指摘しています。規模を拡大する前に、上限を設けた代替策を評価します。
記述子のしきい値、QED、構造アラートは研究上のヒューリスティックであり、力価、安全性、合成可能性の証拠ではありません。RDKitヘルパーの歴史的なpainsオプションには例示的なモチーフだけが含まれており、公開済みPAINSカタログ全体ではありません。TandemAIの評価スイートやLLMJudgeはエージェントの挙動評価に役立つ可能性がありますが、存在すること自体は科学的精度の証明ではありません。
Skill素材を再配布する前に、ライセンスの適用範囲を確認してください。K-Dense RDKitおよびDatamolのファイルには、コレクション全体のMITライセンスとは異なるライセンスが記載されています。未解決のライセンス表示は計算の意味を変えるものではありませんが、指示やヘルパーをパッケージ化する際には重要です。ソースを閲覧できることだけでライセンスが付与されるわけではありません。
読者向けチェックリスト
- 科学的な対象を定義し、元の構造とIDを保持する。
- インストール済み依存関係、公開ツール、必要な入力スキーマを確認する。
- 塩、電荷、互変異性体、立体化学に関する判断を明示的に記録する。
- 失敗を出典行に対応づけ、修正を受理する前に確認する。
- 記述子、フィンガープリント、検索設定を出力とともに保存する。
- ローカル計算と取得したPubChem値を区別する。
- 規模を拡大したり予測モデルを追加したりする前に、小規模なチャレンジセットを評価する。
- 未対応機能、メモリ制限、スロットリング、再配布条件を確認する。
関連するガイドも参照してください:化学AIアプリの科学API:PubChemとRCSB PDB入門。
出典
- RDKit概要および公式README:ツールキット操作、インターフェース、データベース検索。
- TandemAI README:MCPツール、クライアント、ツール探索、評価。
- K-Dense RDKit Skill、Datamol Skill、rdkit-agent Skill:文書化されたワークフローと制限事項。
- PUG REST仕様、チュートリアル、プログラムによるアクセスの概要:取得操作とサービスの境界。