mcpField
O
OpenHCS

OpenHCS

本地服务
openhcs.readthedocs.io科研与教育6今天更新

关于 OpenHCS

OpenHCS 是面向成像科学家和科研软件团队的显微镜工作流平台。它整合 GUI、Python 流程和本地 Agent 自动化,并在执行前验证流程,便于审阅。

主要功能

  1. 01执行前验证工作流
  2. 02在 GUI 与 Python 中编辑流程
  3. 03导入 CellProfiler 流程
  4. 04通过本地 MCP 自动化工作流
  5. 05运行多进程和 GPU 任务
  6. 06物化并流式传输分析结果

适用场景

  1. 01构建可重复的高内涵成像分析
  2. 02在处理前发现流程错误
  3. 03转换并执行 CellProfiler 流程
  4. 04让 Agent 运行并检查工作流

MCP 相关

本地 stdio MCP 服务向受支持的 Agent 提供工作流编写、验证、执行、运行时检查和查看器审阅能力。另提供独立安全保护的 HTTP 接口。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"openhcsdev-openhcs": {
"command": "uvx",
"args": [
"openhcs"
]
}
}
}
启动命令uvx openhcs

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiopenhcs0.8.6

工具

73

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

OpenHCS 阵列处理徽标

OpenHCS

将高内涵显微图像转化为可复现的测量结果
在 GUI、Python、CellProfiler 和本地 Agent 之间共享一套可审查的工作流

PyPI version License: MIT Python 3.11-3.13 GPU Accelerated Documentation

OpenHCS 面向成像科学家和研究软件团队,适用于需要一致分析大量孔、位点、通道、Z 平面或时间点的高内涵研究。源选择、处理步骤和结果定义都保存在同一条经过验证的流水线中,而不是分散在仅限界面的状态、脚本和自动化流程里。

如果工作流需要在可视化编辑、代码和自动化之间保持可审查性,OpenHCS 就很适合。可在桌面 GUI 中编辑同一条流水线,也可以用 Python 编辑;还可以从受支持的 CellProfiler .cppipe 文件导入,并通过本地 MCP 接口构建或审查。

安装

Windows 安装程序 · macOS 安装程序 · 安装选项

图形安装程序会设置一个隔离且适用于 CPU 的桌面环境,其中包含 OpenHCS GUI、CellProfiler 兼容支持、本地 MCP 服务、Napari、Fiji/ImageJ 和 Bio-Formats。GPU 库为可选组件。


查看 OpenHCS 的实际使用

包含多个实验板的 OpenHCS 桌面应用

浏览 UI 和查看器图库 · 观看 Agent 构建、调试、运行和检查工作流


OpenHCS 采用先编译后执行架构处理大型显微镜数据集。流水线会在处理开始之前,根据选定的执行轴进行验证,避免在耗费大量时间的工作完成后才出现错误。可在 GUI 中设计流水线、导出为 Python、以代码形式编辑,再重新导入——在可视化和编程工作流之间自由切换。本地 MCP 会向受支持的 Agent 提供同一套工作流模型,因此由 Agent 编写的流水线仍可在 GUI 和生成的 Python 代码中查看、编辑和审查。

graph LR
    subgraph Sources
        IX[ImageXpress]
        OP[Opera Phenix]
        BF[Bio-Formats]
        OM[OMERO]
    end

    subgraph OpenHCS Platform
        PD["Pipeline Designer<br/>(GUI ⇄ Code ⇄ Agent)"]
        CO["Typed Compiler<br/>(resolve + validate)"]
        EX["Bounded Worker Executor<br/>(well scheduling · multi-GPU)"]
        FN["Registry-Discovered Functions<br/>scikit-image · CuPy · pyclesperanto<br/>PyTorch · JAX · TF · CuCIM · custom"]
        PS["PolyStore<br/>(Memory ↔ Disk ↔ Zarr ↔ Stream)"]
    end

    subgraph Viewers
        NA[Napari]
        FJ[Fiji/ImageJ]
    end

    IX --> PD
    OP --> PD
    BF --> PD
    OM --> PD
    PD --> CO --> EX
    EX --> FN --> PS
    PS --> NA
    PS --> FJ

⚡ 核心功能

🛡️ 编译时验证

配置会一次性解析为步骤快照和编译会话。随后,类型化计划会在执行开始前验证源、产物、物化、内存契约和工作器要求。错误会立即显现,而不是等处理数小时后才出现。

🔄 GUI ↔ 代码双向转换

以可视化方式设计流水线,导出为可执行 Python,在 IDE 中编辑,再重新导入 GUI。代码生成适用于任意作用域级别——函数模式、单个步骤、流水线配置、完整的编排器脚本——任何持有对象的窗口都可以生成并重新导入代码。

### 🧠 Agent 辅助工作流 向受支持的 MCP 客户端提供显微镜图像文件夹或孔板以及分析目标。客户端可以检查已连接执行服务的功能,构建并验证类型化流水线、运行流水线、在 OpenHCS 或查看器中检查结果,并修改生成的 Python。
⚡ 多进程与 GPU 加速

有界工作进程默认使用 ProcessPoolExecutor,并确定性地分配孔位,同时在每个工作进程内顺序处理。已编译的可调用契约会独立选择各框架本地的 GPU 设备;单工作进程和调试配置可使用内联或线程化执行。

🔌 任意 Python 函数

通过使用 @numpy、@cupy、@pyclesperanto、@torch 或其他内存类型装饰器进行装饰,即可注册任意 Python 函数。自定义函数可获得契约验证、UI 集成、多进程安全的导入标识,以及与内置函数相同的服务端目录投影。持久化函数存储在平台专属的 OpenHCS 用户数据目录中。

📊 结果物化

可调用项和模块的制品契约会独立于 Python 参数名称声明语义输出。制品图和物化计划会将图像、测量值、对象标签、关系、表格和文件路由到配置的存储区和导出器。

🔬 进程隔离的 Napari 与 Fiji

在流水线执行期间,将图像实时流式传输到 Napari 和 Fiji/ImageJ。OpenHCS StreamingConfig 声明和查看器适配器负责标识、显示和持久化策略。PolyStore 构建通用存储和流式传输负载;ZMQRuntime 提供进程隔离的传输、就绪状态、确认和生命周期管理。

🪟 跨窗口实时更新

在 GlobalPipelineConfig 中编辑值,即可实时观察其同步到 PipelineConfig 和 StepConfig 窗口。双轴解析(上下文层级 × 类 MRO),并由每个编排器隔离作用域。

🧬 CellProfiler 流水线导入

在桌面应用中打开 .cppipe 文件,或从 Python 将其降级为常规的 PipelineConfig 和 FunctionStep 声明。命名图像、对象、测量值、关系和导出项使用与原生 OpenHCS 流水线相同的类型化编译器和运行时。基于源代码的 Official30 套件会在明确的等效性策略下,持续测试来自 CellProfiler 示例、教程和基准测试补充材料的 30 条流水线。

🤖 MCP Agent 自动化

将本地 stdio MCP 服务与 ChatGPT 桌面版、Codex、Claude Desktop 和其他受支持的客户端搭配使用,或部署单独的安全 HTTP 接口。图形安装程序会自动注册检测到的本地客户端。功能配置文件、架构、知识、UI 附加、创作、执行、运行时检查、查看器审查和受治理的自定义函数注册,均从类型化权威来源投影而来,而非通过重复的工具列表生成。


🧩 OpenHCS 生态系统

OpenHCS 由 8 个按用途拆分、独立发布的库构建而成——每个库都解决一个通用问题,并共同组成一个平台:

graph TD
    OH["OpenHCS Platform<br/>(domain wiring + pipelines)"]

    OH --> OS["ObjectState<br/>(config)"]
    OH --> AB["ArrayBridge<br/>(arrays)"]
    OH --> PS["PolyStore<br/>(I/O + streaming)"]
    OH --> ZR["ZMQRuntime<br/>(exec)"]
    OH --> QR["PyQT-reactive<br/>(Qt forms)"]
    OH --> FB["formbridge<br/>(form model + UI bridge)"]
    QR --> FB

    OS --> PI["python-introspect<br/>(signatures)"]
    OH --> MR["metaclass-registry<br/>(plugins)"]
    OH --> PC["pycodify<br/>(serialization)"]
库在 OpenHCS 中的作用功能
ObjectState配置框架支持双轴继承(上下文层级 × 类 MRO)和基于 contextvars 的解析的延迟数据类
ArrayBridge内存类型转换为 NumPy、CuPy、PyTorch、JAX、TensorFlow、pyclesperanto 提供统一 API,并支持通过 DLPack 零拷贝传输
PolyStore统一 I/O 和流负载通用存储与流式负载原语、后端生命周期、虚拟工作区、原子写入、格式检测和 ROI 提取
ZMQRuntime进程和传输运行时通用请求、状态、进度、取消、进程生命周期和查看器控制传输协议
PyQT-reactiveUI 表单生成基于数据类生成 React 风格的响应式表单,支持跨窗口同步和闪烁动画
formbridge与工具包无关的表单和 UI 桥接表单模型、帮助和代码文档,以及运行中 UI 的桥接契约、客户端和服务端;不导入任何 GUI 工具包,因此无头 MCP 可在不使用 Qt 的情况下使用它
pycodify代码 ↔ 对象转换将 Python 源代码用作序列化格式——保留类型、可比较差异、可编辑,并处理命名冲突
python-introspect签名分析纯 Python 函数/数据类自省,用于自动生成 UI 和分析契约
metaclass-registry插件发现无需样板代码的注册系统,为显微镜处理器和存储后端的自动发现提供支持

🔬 显微镜与函数支持

图像来源

来源支持情况
ImageXpress原生板和元数据处理
Opera Phenix原生板和元数据处理
Bio-Formats任意文件夹和受支持的显微镜容器
OMERO远程图像和元数据访问
OpenHCS format原生生成和物化板

来源处理器会自动检测,并可通过 metaclass-registry 扩展。

函数 — 自动发现

库或调用路径执行内存
scikit-image 和 OpenHCS 原生函数NumPy / CPU
pyclesperantoOpenCL GPU
CuPy 和 cuCIMCUDA GPU
PyTorch、JAX 和 TensorFlow 函数已声明的 CPU/GPU 数组
用户自定义函数由其内存类型装饰器声明

已连接的执行服务负责提供可用目录,因此远程 GPU 和自定义函数的可用性会自动反映出来,无需手动维护列表。 ArrayBridge 提供兼容的内存转换,并在支持时使用零拷贝路径。

处理领域:图像预处理 · 分割 · 细胞计数 · 拼接(MIST + Ashlar GPU)· 神经突追踪 · 形态学 · 测量

维度由函数定义,而非全局模式:真正的体积分割和测量路径可以与逐平面函数并存;后者的标签不会在 Z 轴上被静默拼接。请参阅维度和测量能力参考。


🚀 快速开始

对于大多数桌面用户,请下载 Windows 安装程序 或 macOS 安装程序。 这两种下载都无需解压 ZIP,也无需预先安装 Python。 从 OpenHCS 0.7.23 或更早版本升级时,请按照 一次性安装程序迁移说明操作。

如果 macOS 因官方引导程序未签名且未经公证而阻止其运行, 请尝试打开 OpenHCS Installer.app,然后前往 系统设置 > 隐私与安全性,向下滚动到 安全性,点击 仍要打开,进行身份验证,并 确认点击 打开。仅对从 OpenHCS 官方 GitHub 发行版下载的磁盘映像绕过 Gatekeeper。Apple 在此处记录了当前的恢复 步骤。

如需手动安装,请创建虚拟环境,并安装与图形安装程序相同的 CPU 安全型桌面组件:

# Complete CPU-safe desktop environment
python -m pip install "openhcs[gui,viz,bioformats,mcp,cellprofiler-compat]"

# Launch the application
openhcs

# Launch the local MCP server over stdio
openhcs-mcp

较小的环境可以只选择所需功能:

# Basic installation with GUI
python -m pip install "openhcs[gui]"

# Add Napari viewer
python -m pip install "openhcs[gui,napari]"

# Add Fiji/ImageJ viewer
python -m pip install "openhcs[gui,fiji]"

# Add both viewers
python -m pip install "openhcs[gui,viz]"

# Add GPU acceleration on a compatible CUDA 12 system
python -m pip install "openhcs[gui,gpu]"

# Full installation (GUI + viewers + GPU)
python -m pip install "openhcs[gui,viz,gpu]"

# Add the local MCP server for agent clients
python -m pip install "openhcs[gui,mcp,viz]"
# Or lower a CellProfiler pipeline into public OpenHCS declarations
from pathlib import Path

from objectstate import ensure_global_config_context
from openhcs.core.config import GlobalPipelineConfig
from openhcs.core.orchestrator.orchestrator import PipelineOrchestrator
from openhcs.interop.cellprofiler.pipeline_import import import_cellprofiler_pipeline

plate_path = Path("/data/plate").resolve()
ensure_global_config_context(GlobalPipelineConfig, GlobalPipelineConfig())
steps, pipeline_config = import_cellprofiler_pipeline(
    "analysis.cppipe",
    source_root=plate_path,
)

orchestrator = PipelineOrchestrator(
    plate_path,
    pipeline_config=pipeline_config,
).initialize()
execution_bundle = orchestrator.compile_pipelines(steps)

GUI 和执行服务使用相同的 list[FunctionStep]、 PipelineConfig 和类型化执行包。有关明确的底层执行调用和进度生命周期,请参阅 API 概览。

运行 CellProfiler/OpenHCS 对比的维护者可以使用打包的 openhcs-benchmark 命令。openhcs-benchmark list-cases --manifest PATH 会检查声明的案例来源,而不获取数据或启动运行;专家级 openhcs_list_benchmark_cases MCP 工具提供相同的选择功能。 每次对比运行都会记录一份类型化回执,其中包含 其生命周期状态、精确的重运行命令、声明的工作内容以及结构化结果 产物。请使用新的或空的输出目录;如果目录非空,系统会在加载清单之前拒绝运行。在专家级 full MCP 接口上, openhcs_inspect_benchmark_run 可以检查本地读取路径策略允许访问的现有结果目录。 openhcs-benchmark inspect-run --output-dir PATH 会读取相同的类型化检查结果; 两种方式都会通过 artifact_limit 和 artifact_offset 对结构化产物分页,而不是返回无界的清单。 openhcs_report_benchmark_run 和 openhcs-benchmark inspect-run --output-dir PATH --report 会根据类型化回执和 观测结果生成有界的案例结果报告。这些 MCP 接口为只读接口:它们不会启动、恢复、取消或重新运行 基准测试;记录的回执用于记录来源信息,并不构成科学上的一致性 声明。 对于单个常规测量流水线,openhcs-benchmark inspect-measured --output-dir PATH 以及专家级 MCP 检查/报告工具会读取相同的 已验证运行回执,并检查保留的来源、观测结果和摘要摘要值。缺少后两种摘要值的 归档回执仍可读取,但无法验证这些文件。这些接口不会创建 第二套流水线运行器或作业状态系统。 openhcs-benchmark run-measured --plate PLATE --pipeline-source-file PIPELINE.py --output-dir EVIDENCE --run-id ID --wait-timeout-ms 120000 会通过常规无头作业控制提交该 流水线,然后调用相同的回执收尾程序。如果输入工作区已单独准备,请使用 --execution-plate PREPARED_PLATE;证据目录必须为空。 使用 --observation-scope outcomes 可保留每个轴的成功状态和来源信息,而不传输运行时数组;此操作不会比较输出值。 常规无头作业完成后,专家级 openhcs_finalize_measured_pipeline_run 工具可以验证其运行时 观测结果,并根据确切提交的流水线和服务端完成记录保留该回执。它不会提交另一个作业。

📦 所有安装选项
python -m pip install "openhcs"              # Headless engine
python -m pip install "openhcs[gui]"         # Desktop GUI
python -m pip install "openhcs[gui,napari]"  # GUI + Napari viewer
python -m pip install "openhcs[gui,viz]"     # GUI + Napari + Fiji
python -m pip install "openhcs[gui,viz,gpu]" # Full installation
python -m pip install "openhcs[gpu]"         # Headless + GPU
python -m pip install "openhcs[omero]"       # OMERO integration
python -m pip install -e ".[all,dev]"         # Development (all features)

gpu 附加项需要在受支持的 NVIDIA 平台上使用兼容的 CUDA 12 环境。对于仅使用 CPU 的桌面安装,请安装不含 gpu 附加项的 openhcs[gui]。

🗄️ OMERO 集成

OMERO 需要 zeroc-ice,其兼容的 wheel 不会通过常规项目元数据发布。请先安装辅助依赖,再安装附加项:

python scripts/install_omero_deps.py
pip install 'openhcs[omero]'

等效的 requirements 文件安装方式:

pip install -r requirements-omero.txt
pip install 'openhcs[omero]'

支持 Python 3.11 和 3.12。手动安装请参阅 Glencoe Software。


📖 文档

📘 阅读文档完整的 API 文档、教程和指南
🏗️ 架构类型化编译器 · 源 · 构件 · 运行时值 · 包边界
🎓 快速入门安装 · 第一个流水线

⚙️ 架构亮点

已解析的类型化流水线编译 — 在执行开始前捕获错误
PipelineConfig + list[FunctionStep]
        ↓ resolve once
StepSnapshot + CompilationSession
        ↓ derive and validate
typed CompiledStepPlan objects
        ↓ package
CompiledExecutionBundle
        ↓ execute
runtime values + materialized artifacts

编写界面仍采用有序的线性步骤列表。ObjectState 继承使默认配置保持精简,而编译会推导并公开执行所需的确切源依赖项和产物依赖项;推导出的依赖关系图并非用户需要编写的第二个工作流。

在开始处理前,会针对每个选定的执行轴编译流水线。运行时工作线程使用编译后的包,而不是重新解释可变的声明对象。了解更多 →

双轴配置 — 上下文层级 × 类 MRO

解析会同时遍历两个轴:上下文栈(Global → Pipeline → Step)和类 MRO(继承链)。基于 contextvars 构建,支持线程安全且作用域隔离的解析。保留 None 与具体值之间的区别,以实现恰当的字段级继承。由 ObjectState 驱动。了解更多 →

GUI ↔ 代码双向转换 — 在任意作用域级别生成代码

任何持有 ObjectState 对象的窗口都可以生成并重新导入可执行 Python 代码:

Function patterns · Individual steps · Pipeline configs · Full orchestrator scripts
              ↕  generate / AST-parse back  ↕

每个作用域都封装了所有较低作用域的导入内容。生成的代码无需额外设置即可完全执行。在 IDE 或外部编辑器中编辑并保存后,GUI 会通过 AST 解析重新导入代码。由 pycodify + python-introspect 驱动。了解更多 →

跨窗口实时更新 — 类级注册表 + Qt 信号

类级注册表会跟踪所有活动的表单管理器。当任何配置窗口中的值发生变化时,Qt 信号会将变化传播到所有受影响的窗口,并以防抖方式刷新,同时隔离各个作用域。Global → Pipeline → Step 级联更新,并按编排器隔离。由 PyQT-reactive 驱动。了解更多 →

更多模式 — 存储、查看器集成、函数发现、内存类型
  • 存储与查看器流式传输:PolyStore 负责通用存储和流式传输载荷原语;ZMQRuntime 负责进程、传输、就绪状态、确认和生命周期协议;OpenHCS 的 StreamingConfig 声明以及 Napari/Fiji 适配器负责查看器标识、显示和应用策略。
  • 自动函数发现:通过 python-introspect + metaclass-registry 发现注册函数,并进行契约分析和类型安全集成
  • 内存类型管理:编译时验证数组类型兼容性,并通过 ArrayBridge 实现零拷贝转换
  • 自定义函数注册:任何使用 @numpy、@cupy、@pyclesperanto 等装饰的 Python 函数,都会自动集成契约、UI 表单和函数注册表
  • 经得起演进的 UI:根据 Python 注解按类型生成表单 — 签名发生变化时自动适配

完整架构文档 →


🤝 贡献

git clone --recurse-submodules https://github.com/OpenHCSDev/OpenHCS.git
cd OpenHCS
# Install the eight local packages using docs/source/development/repository_setup.rst,
# then install OpenHCS itself:
python -m pip install -e ".[dev,gui]"
OPENHCS_CPU_ONLY=1 python -m pytest tests/unit

贡献方向:显微镜格式 · 处理函数 · GPU 后端 · 文档


📄 许可证

MIT — 参见 LICENSE。

🙏 致谢

OpenHCS 由 EZStitcher 演进而来,并基于 Ashlar(拼接)、MIST(相位相关)、pyclesperanto(GPU 图像处理)和 scikit-image(图像分析)构建。

OpenHCS 与 CellProfiler 的互操作性和一致性验证基于 CellProfiler 项目的开源软件、文档以及公开的示例、教程和基准材料。我们感谢 CellProfiler 的作者和贡献者,以及其分发的生物数据集的作者。请遵循 CellProfiler 的官方引用指南引用 CellProfiler,其中包括 Stirling 等人,《CellProfiler 4:速度、实用性和易用性的改进》(2021)。

第三方项目名称和徽标用于标识 OpenHCS 支持的集成、兼容 客户端或所使用的软件。它们仍归各自项目或所有者所有;其出现不代表 存在关联或认可。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。