PyMmcore 提供了改进的API、事件处理和纯Python获取引擎的超集
项目描述
PyMmcore-Plus
PyMmcore-Plus
扩展了 pymmcore (C++ micro-manager核心 的Python绑定) 的功能,包括许多旨在方便在纯python/C环境中使用 Micro-manager 的特性。
pymmcore_plus.CMMCorePlus
是pymmcore.CMMCore
的一个即插即用子类,它提供了许多有用的覆盖和额外的便利函数,这些函数超越了标准的 CMMCore API。有关详细信息,请参阅 CMMCorePlus 文档。pymmcore-plus
包含一个 采集引擎,用于驱动微管理器执行常规的多维实验。它接受来自 useq-schema 的 MDASequence 以进行实验设计和声明。- 增加了一个 回调系统,该系统将 CMMCore 回调对象适配到现有的 Python 事件循环(例如 Qt,或 asyncio 等)。
CMMCorePlus
类还修复了一些 CMMCore API 当前未发出的 "遗漏" 事件。
文档
https://pymmcore-plus.github.io/pymmcore-plus/
为什么不用 pymmcore
直接使用呢?
pymmcore 是 Micro-Manager 项目核心 C++ 代码的一个薄 SWIG 包装(可能应该保持这样)。它足以通过 Python 控制 Micro-Manager,但缺乏 Python 用户习惯的一些 "便利" 功能。这个库
- 扩展了
pymmcore.CMMCore
对象的 额外方法 - 修复了
MMCore
中许多事件的发射。 - 为各种对象(如
Configuration
和Metadata
)提供适当的 Python 接口。 - 为设备和它们的属性提供了一个 面向对象的 API。
- 对于 各种常量,使用更易理解的
Enums
而不是int
。 - 改进了 docstrings 和类型注解。
- 总体上感觉更符合 Pythonic(然而请注意,CMMCore API 的
camelCase
方法名称 不会 被替换为snake_case
)。
这与 Pycro-Manager
有什么关系?
Pycro-Manager 是由 Henry Pinkard 编写的一个令人印象深刻的库,旨在通过 Python 更容易地使用和控制 Java Micro-manager 应用程序。因此,它需要在后台安装和运行 Java(无论是通过 Micro-Manager GUI 应用程序直接,还是通过无头进程)。Python 部分通过与 ZeroMQ 消息通信与 Java 部分进行通信。
简而言之:虽然 Pycro-Manager
提供了一个 Python API 来控制 Java Micro-manager 应用程序(该应用程序反过来控制 C++ 核心),但 pymmcore-plus
提供了一个 Python API 来直接控制 C++ 核心,而无需在循环中使用 Java。每种方法都有其优点和缺点!使用 pycro-manager,您立即获得整个现有的 Micro-Manager 生态系统和 GUI 应用程序。使用 pymmcore-plus,您无需安装 Java,并且可以直接访问 C++ 核心使用的内存缓冲区。
快速入门
安装
从 pip
pip install pymmcore-plus
# or, add the [cli] extra if you wish to use the `mmcore` command line tool:
pip install "pymmcore-plus[cli]"
# add the [io] extra if you wish to use the tiff or zarr writers
pip install "pymmcore-plus[io]"
从 conda
conda install -c conda-forge pymmcore-plus
从 github 的开发版本
pip install 'pymmcore-plus[cli] @ git+https://github.com/pymmcore-plus/pymmcore-plus'
通常,您可能还想安装设备适配器。假设您使用 pip install "pymmcore-plus[cli]"
进行安装,您可以运行
mmcore install
(您也可以从 micro-manager.org 手动下载这些)
有关详细信息,请参阅 安装文档
使用方法
然后像使用 pymmcore.CMMCore
一样使用核心对象...但带有 更多功能 :smile
from pymmcore_plus import CMMCorePlus
core = CMMCorePlus()
...
示例
请参阅文档中的多个 使用示例。
您可以在本仓库的examples目录中找到一些基本的Python脚本。
贡献
欢迎贡献!请参阅贡献指南。
项目详情
下载文件
下载适合您平台的应用文件。如果您不确定选择哪个,请了解有关安装包的更多信息。