Skip to main content

pymmcore superset providing improved APIs, event connection, and a pure python acquisition engine

Project description

pymmcore-plus

License PyPI Python Version CI codecov

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.
  • CMMCorePlus includes a run_mda method (name may change) "acquisition engine" that drives micro-manager for conventional multi-dimensional experiments. It accepts an MDASequence from useq-schema for experiment design/declaration.
  • Adds a callback system that adapts the CMMCore callback object to an existing python event loop (such as Qt, or perhaps asyncio/etc...). The CMMCorePlus class also fixes a number of "missed" events that are not currently emitted by the CMMCore API.

Documentation

https://pymmcore-plus.github.io/pymmcore-plus/

Why not just use pymmcore 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:

  • extends the pymmcore.CMMCore object with additional methods
  • fixes emission of a number of events in MMCore.
  • provide proper python interfaces for various objects like Configuration and Metadata.
  • provides an object-oriented API for Devices and their properties.
  • uses more interpretable Enums rather than int for various constants
  • improves docstrings and type annotations.
  • generally feel more pythonic (note however, camelCase method names from the CMMCore API are not substituted with snake_case).

What about Pycro-Manager?

Pycro-Manager is a library designed to make it easier to work with and control the Java Micro-manager application using python. As such, it requires Java to be installed and running in the background (either via the micro-manager GUI application directly, or via a headless 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.

Quickstart

Install

# from pip
pip install pymmcore-plus

# from conda
conda install -c conda-forge pymmcore-plus

# if you also want the experimental inter-process RemoteCMMCore feature
pip install pymmcore-plus[remote]

# or from source tree
pip install git+https://github.com/pymmcore-plus/pymmcore-plus.git

Usually, you'll then want to install the device adapters (though you can also download these manually from micro-manager.org):

mmcore install

See installation documentation for more details.

Usage

Then use the core object as you would pymmcore.CMMCore... but with more features :smile:

from pymmcore_plus import CMMCorePlus

core = CMMCorePlus()
...

Examples

See a number of usage examples in the documentation.

You can find some basic python scripts in the examples directory of this repository

Contributing

Contributions are welcome! See contributing guide.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymmcore_plus-0.6.3.tar.gz (138.1 kB view details)

Uploaded Source

Built Distribution

pymmcore_plus-0.6.3-py3-none-any.whl (63.4 kB view details)

Uploaded Python 3

File details

Details for the file pymmcore_plus-0.6.3.tar.gz.

File metadata

  • Download URL: pymmcore_plus-0.6.3.tar.gz
  • Upload date:
  • Size: 138.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for pymmcore_plus-0.6.3.tar.gz
Algorithm Hash digest
SHA256 800266e7d4b143b15c7d411cc55a2531740ab20aadb05d612001fb60f3e4daea
MD5 b18954f44501bb30fdcc4fad5b2b9ed4
BLAKE2b-256 83a1d285906239ea9f5b5b01d144a1ec4008fa547611ce28d97ffaa6197d08c5

See more details on using hashes here.

File details

Details for the file pymmcore_plus-0.6.3-py3-none-any.whl.

File metadata

File hashes

Hashes for pymmcore_plus-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 424ba75643148ec8ef1038b77c59f3ea6a8a5f6bfc402693d1e53b2a8b96d7b0
MD5 8af1695464f27e19939cfa21b3bfa487
BLAKE2b-256 65f80aef415b8444d47806fb2a1f3d7b5deeb5dd87f85541d4e8ecac64c41f1d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page