pymmcore-plus
extends pymmcore (python bindings for the C++ micro-manager core) with a number of features designed to facilitate working with Micro-manager in pure python/C environments.
pymmcore_plus.CMMCorePlus
is a drop-in replacement subclass of pymmcore.CMMCore
that provides a number of helpful overrides and additional convenience functions beyond the standard CMMCore API. See CMMCorePlus documentation for details.pymmcore-plus
includes an acquisition engine that drives micro-manager for conventional multi-dimensional experiments. It accepts an MDASequence from useq-schema for experiment design/declaration.CMMCorePlus
class also fixes a number of "missed" events that are not currently emitted by the CMMCore API.https://pymmcore-plus.github.io/pymmcore-plus/
Why not just usepymmcore
directly?
pymmcore is (and should probably remain) a thin SWIG wrapper for the C++ code at the core of the Micro-Manager project. It is sufficient to control micromanager via python, but lacks some "niceties" that python users are accustomed to. This library:
pymmcore.CMMCore
object with additional methodsMMCore
.Configuration
and Metadata
.Enums
rather than int
for various constantscamelCase
method names from the CMMCore API are not substituted with snake_case
).Pycro-Manager
?
Pycro-Manager is designed to make it easier to work with and control the Java Micro-manager application (MMStudio) using python. As such, it requires Java to be installed and for MMStudio to be running a server in another process. The python half communicates with the Java half using ZeroMQ messaging.
In brief: while Pycro-Manager
provides a python API to control the Java Micro-manager application (which in turn controls the C++ core), pymmcore-plus
provides a python API to control the C++ core directly, without the need for Java in the loop. Each has its own advantages and disadvantages! With pycro-manager you retain the entire existing micro-manager ecosystem and GUI application. With pymmcore-plus, the entire thing is python: you don't need to install Java, and you have direct access to the memory buffers used by the C++ core. Work on recreating the gui application in python being done in pymmcore-widgets
and pymmcore-gui
.
from 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]"
from conda
conda install -c conda-forge pymmcore-plus
dev version from github
pip install 'pymmcore-plus[cli] @ git+https://github.com/pymmcore-plus/pymmcore-plus'
Usually, you'll then want to install the device adapters. Assuming you've installed with pip install "pymmcore-plus[cli]"
, you can run:
(you can also download these manually from micro-manager.org)
See installation documentation for more details.
Then use the core object as you would pymmcore.CMMCore
... but with more features 😄
from pymmcore_plus import CMMCorePlus core = CMMCorePlus() ...
See a number of usage examples in the documentation.
You can find some basic python scripts in the examples directory of this repository
Contributions are welcome! See contributing guide.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4