关于 cmxflow
cmxflow 是用于组合和调优化学信息学及计算化学工作流的 Python 框架,提供分子处理与对接模块及贝叶斯优化。其 MCP 服务可让 LLM Agent 构建、运行和优化工作流。
主要功能
- 01可组合的分子处理模块
- 02对接与虚拟筛选工作流
- 03贝叶斯参数优化
- 04计算密集型模块的并行执行
- 05工作流保存与加载
- 06通过 MCP 工具查看结构
适用场景
- 01准备用于对接的配体
- 02对接相关分子系列
- 03调优虚拟筛选的指纹参数
- 04通过 LLM Agent 构建并运行工作流
MCP 相关
MCP 服务提供五种工具,用于构建、运行、优化和管理工作流,以及查看分子结构。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 🧪
使用可组合的模块构建化学信息学和计算化学工作流。使用贝叶斯优化调整端到端流程,或者让大模型 Agent 来完成。
快速示例
为分子对接准备配体
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}
系统会自动搜索上述四个指纹参数——每个模块都会向优化器公开其可变参数。
或通过大模型 Agent 以对话方式构建
claude mcp add cmxflow -- cmxflow-mcp
“library.csv 中有多少分子符合 Lipinski 规则?”
“我需要构建一个基于配体的虚拟筛选工作流。我不确定 2D 还是 3D 更好。你能优化两种工作流吗?”
“使用 crystal_ligand.sdf 作为参考,将 hits.csv 中的分子对接到 receptor.pdb。”
Agent 可以构建、运行并优化工作流。完整对话记录请参阅与 Claude 搭配使用。
包含内容
- 15 个以上用于分子来源、转换、筛选、聚类、评分和对接的模块
- 通过 Optuna 对工作流参数进行贝叶斯优化
- 支持计算密集型模块(构象生成、分子对接)并行执行
- 支持工作流序列化,以便保存、加载和复用
- 一个包含五种工具的 MCP 服务:
build_workflow、run_workflow、optimize_workflow、manage_workflows、view_structures
安装
pip install cmxflow
MCP 服务
claude mcp add cmxflow -- cmxflow-mcp
可选:PyMOL
仅 view_structures MCP 工具(3D 可视化)需要:
conda install -c conda-forge pymol-open-source
文档
- 文档站点
- 模块目录
- 与 Claude 搭配使用 — Agent 对话记录
examples/basic_usage.ipynb— 完整教程examples/docking/docking.ipynb— 分子对接指南(ILS、基于骨架索引和模板模式)
项目
采用 MIT 许可证。请参阅 CONTRIBUTING.md 和 RELEASING.md。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。