关于 OpenHCS
OpenHCS 是面向成像科学家和科研软件团队的显微镜工作流平台。它整合 GUI、Python 流程和本地 Agent 自动化,并在执行前验证流程,便于审阅。
主要功能
- 01执行前验证工作流
- 02在 GUI 与 Python 中编辑流程
- 03导入 CellProfiler 流程
- 04通过本地 MCP 自动化工作流
- 05运行多进程和 GPU 任务
- 06物化并流式传输分析结果
适用场景
- 01构建可重复的高内涵成像分析
- 02在处理前发现流程错误
- 03转换并执行 CellProfiler 流程
- 04让 Agent 运行并检查工作流
MCP 相关
本地 stdio MCP 服务向受支持的 Agent 提供工作流编写、验证、执行、运行时检查和查看器审阅能力。另提供独立安全保护的 HTTP 接口。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
73收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
OpenHCS 面向成像科学家和研究软件团队,适用于需要一致分析大量孔、位点、通道、Z 平面或时间点的高内涵研究。源选择、处理步骤和结果定义都保存在同一条经过验证的流水线中,而不是分散在仅限界面的状态、脚本和自动化流程里。
如果工作流需要在可视化编辑、代码和自动化之间保持可审查性,OpenHCS 就很适合。可在桌面 GUI 中编辑同一条流水线,也可以用 Python 编辑;还可以从受支持的 CellProfiler .cppipe 文件导入,并通过本地 MCP 接口构建或审查。
安装
Windows 安装程序 · macOS 安装程序 · 安装选项
图形安装程序会设置一个隔离且适用于 CPU 的桌面环境,其中包含 OpenHCS GUI、CellProfiler 兼容支持、本地 MCP 服务、Napari、Fiji/ImageJ 和 Bio-Formats。GPU 库为可选组件。
查看 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 加速有界工作进程默认使用 |
🔌 任意 Python 函数通过使用 |
📊 结果物化可调用项和模块的制品契约会独立于 Python 参数名称声明语义输出。制品图和物化计划会将图像、测量值、对象标签、关系、表格和文件路由到配置的存储区和导出器。 |
🔬 进程隔离的 Napari 与 Fiji在流水线执行期间,将图像实时流式传输到 Napari 和 Fiji/ImageJ。OpenHCS |
🪟 跨窗口实时更新在 |
🧬 CellProfiler 流水线导入在桌面应用中打开 |
🤖 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-reactive | UI 表单生成 | 基于数据类生成 React 风格的响应式表单,支持跨窗口同步和闪烁动画 |
| formbridge | 与工具包无关的表单和 UI 桥接 | 表单模型、帮助和代码文档,以及运行中 UI 的桥接契约、客户端和服务端;不导入任何 GUI 工具包,因此无头 MCP 可在不使用 Qt 的情况下使用它 |
| pycodify | 代码 ↔ 对象转换 | 将 Python 源代码用作序列化格式——保留类型、可比较差异、可编辑,并处理命名冲突 |
| python-introspect | 签名分析 | 纯 Python 函数/数据类自省,用于自动生成 UI 和分析契约 |
| metaclass-registry | 插件发现 | 无需样板代码的注册系统,为显微镜处理器和存储后端的自动发现提供支持 |
🔬 显微镜与函数支持
|
图像来源
来源处理器会自动检测,并可通过 |
函数 — 自动发现
已连接的执行服务负责提供可用目录,因此远程 GPU 和自定义函数的可用性会自动反映出来,无需手动维护列表。
|
处理领域:图像预处理 · 分割 · 细胞计数 · 拼接(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 支持的集成、兼容 客户端或所使用的软件。它们仍归各自项目或所有者所有;其出现不代表 存在关联或认可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
