cmxflow について
cmxflowは、ケモインフォマティクスと計算化学のワークフローを組み立て、調整するPythonフレームワークです。分子処理やドッキングのブロック、ベイズ最適化を備え、MCPサーバー経由でLLMエージェントによる構築・実行・最適化も行えます。
主な機能
- 01組み合わせ可能な分子処理ブロック
- 02ドッキングとバーチャルスクリーニング
- 03ベイズパラメーター最適化
- 04計算負荷の高い処理の並列実行
- 05ワークフローの保存と読み込み
- 06MCPツールによる構造表示
活用シーン
- 01ドッキング用リガンドの準備
- 02類縁分子シリーズのドッキング
- 03バーチャルスクリーニング用指紋の調整
- 04LLMエージェントによるワークフローの構築と実行
MCP 対応
MCPサーバーは、ワークフローの構築、実行、最適化、管理と、分子構造の表示を行う5つのツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| index | any | いいえ | 挿入/削除/並列化操作の位置。 |
| action | string | はい | 「create」、「add_block」、「remove_block」、「list_blocks」、「validate」、「clear」、「show」、「make_parallel」、「get_params」のいずれか。 |
| block_type | any | いいえ | Block クラス名(例:「ConformerGenerationBlock」)。 |
| block_config | any | いいえ | Block の初期化パラメーター。「make_parallel」アクションの場合、並列実行オプション max_workers、chunk_size、ordered、error_handling を指定します。 |
| rdkit_method | any | いいえ | RDKitBlock の場合、メソッドのパス(例:「rdkit.Chem.Descriptors.MolWt」)。 |
詳細
cmxflow 🧪
合成可能なブロックを使って、ケモインフォマティクスおよび計算化学のパイプラインを構築できます。ベイズ最適化でエンドツーエンドに調整できます。あるいは、LLM エージェントに任せることもできます。
クイック例
ドッキング用のリガンドを準備する
from cmxflow import Workflow
from cmxflow.sources import MoleculeSourceBlock
from cmxflow.operators import (
MoleculeStandardizeBlock,
IonizeMoleculeBlock,
EnumerateStereoBlock,
ConformerGenerationBlock,
)
from cmxflow.sinks import MoleculeSinkBlock
# Standardize → ionize (pH 6.4–8.4) → enumerate stereo → generate 3D conformers
workflow = Workflow()
workflow.add(
MoleculeSourceBlock(),
MoleculeStandardizeBlock(),
IonizeMoleculeBlock(),
EnumerateStereoBlock(),
ConformerGenerationBlock(),
MoleculeSinkBlock(),
)
workflow("library.smi", "prepared.sdf")
同族化合物系列をドッキングする
純粋な Python によるドッキングです。デフォルトでは自由ドッキング(index_poses=False)が使用されます。足場インデックスモードでは、Bemis–Murcko 足場ごとにポーズをキャッシュするため、ポーズのアラインメントが一貫した同族化合物系列で、スループットが約3倍になります。
from cmxflow import Workflow
from cmxflow.sources import MoleculeSourceBlock
from cmxflow.operators import ConformerGenerationBlock, MoleculeDockBlock
from cmxflow.sinks import MoleculeSinkBlock
from cmxflow.utils.parallel import make_parallel
workflow = Workflow()
workflow.add(
MoleculeSourceBlock(),
ConformerGenerationBlock(),
make_parallel(
MoleculeDockBlock(
receptor="receptor.pdb",
site_reference="crystal_ligand.sdf",
index_poses=True, # omit for free docking
)
),
MoleculeSinkBlock(),
)
workflow("library.smi", "docked.sdf")
リガンドベースのバーチャルスクリーニングを調整する
from cmxflow import Workflow
from cmxflow.sources import MoleculeSourceBlock
from cmxflow.operators import MoleculeSimilarityBlock
from cmxflow.scores import EnrichmentScoreBlock
from cmxflow.opt import Optimizer
# Rank a library by 2D similarity to a known active, then tune the
# fingerprint end-to-end to maximize enrichment AUC.
workflow = Workflow()
workflow.add(
MoleculeSourceBlock(),
MoleculeSimilarityBlock(queries="crystal_ligand.sdf"),
EnrichmentScoreBlock(target="active"),
)
opt = Optimizer(workflow, "benchmark.csv")
opt.optimize(n_trials=30, direction="maximize")
print(f"Best enrichment AUC: {opt.best_score:.3f}")
print(opt.best_params)
# Best enrichment AUC: 0.836
# {'fingerprint_type': 'morgan', 'similarity_metric': 'sokal', 'radius': 2, 'nbits': 2545}
上記の4つのフィンガープリントパラメーターは自動で探索されます。すべてのブロックは、最適化ツールに変更可能なパラメーターを公開します。
または、LLM エージェントとの会話を通じて構築する
claude mcp add cmxflow -- cmxflow-mcp
「library.csv 内の分子のうち、リピンスキーのルールを満たすものはいくつありますか?」
「リガンドベースのバーチャルスクリーニングのワークフローを構築したいです。2Dと3Dのどちらがよいか分からないので、2つのワークフローを最適化してもらえますか?」
「hits.csv 内の分子を、crystal_ligand.sdf を参照構造として使い、receptor.pdb に対してドッキングしてください。」
エージェントはワークフローの構築、実行、最適化ができます。会話の全記録については、Claude での使用方法をご覧ください。
含まれる機能
- 分子の取得、変換、フィルタリング、クラスタリング、スコアリング、ドッキングを行う15個以上のブロック
- Optuna によるパイプラインパラメーターのベイズ最適化
- 計算負荷の高いブロック(コンフォマー生成、ドッキング)の並列実行
- ワークフローのシリアライズによる保存/読み込み/再利用
- 5つのツール(
build_workflow、run_workflow、optimize_workflow、manage_workflows、view_structures)を備えた MCP サーバー
インストール
pip install cmxflow
MCP サーバー
claude mcp add cmxflow -- cmxflow-mcp
オプション:PyMOL
view_structures MCP ツール(3D可視化)を使う場合にのみ必要です。
conda install -c conda-forge pymol-open-source
ドキュメント
- ドキュメントサイト
- ブロックカタログ
- Claude での使用方法 — エージェントとの会話記録
examples/basic_usage.ipynb— チュートリアル全編examples/docking/docking.ipynb— ドッキングの手順(ILS、足場インデックス、テンプレートの各モード)
プロジェクト
MIT ライセンスです。CONTRIBUTING.md と RELEASING.md をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。