Skip to content
@pymmcore-plus

pymmcore-plus

Tools for using Micro-Manager in a pure-python environment

pymmcore-plus

This organization contains a number of packages that work together (in conjunction with pymmcore) to control microscopes in a pure python/C environment (i.e. with no Java dependency or cross-process runtime).

The diagram below attempts to clarify how many libraries and components that have been built around the micro-manager ecosystem relate to each other.

In this github org:

  • pymmcore-plus - a drop in super-set of pymmcore.CMMCore. Adds a pure-python multi-dimensional acquisition engine (analogous to AcqEngineJ and the clojure acqEngine); a more robust event/signaling system for monitoring the state of MMCore; many additional convenience functions and structures; and an improved python developer experience (typing, docstrings, etc...)
  • useq-schema - an implementation agnostic schema for a sequence of events during a multi-dimensional imaging acquisition. Written in python, but language agnostic and exported as JSONschema. It is essentially just a specification for how to describe a microscopy experiment declaratively in, for example, a JSON or YAML file, or in python dataclasses. The pymmcore_plus.CMMCorePlus.mda.run method accepts an instance of a useq.MDASequence object (or any iterable of useq.MDAEvent objects) as an input, but conceptually, any microscope control system (independent of micro-manager) could implement support for MDASequence.
  • pymmcore-widgets - a set of Qt-based widgets, each of which provide GUI-based readout and control of certain components controlled by an underlying pymmcore_plus.CMMCorePlus instance (for example, a shutter widget, a stage controller, or a multi-dimensional acquisition builder).
  • napari-micromanager - a high-level plugin for napari. It uses all of the packages listed above, and composes widgets from pymmcore-widgets into a complete GUI capable of running a microscope and showing the collected images in a multidimensional viewer.

mm diagram

Related, in other orgs:

  • MMCore (and devices) - C++ core of micro-manager. This is the heart of micro-manager. It's what actually manages and communicates with microscope devices.
  • pymmcore - thin python wrapper around mmCoreAndDevices
  • MMCoreJ - The Java wrapper around mmCoreAndDevices
  • Pycro-manager - python library that can control the Java micro-manager application via inter-process communication.
  • PycroManagerJava - the Java half of Pycro-manager: a ZMQ server that communicates with the Python client as well as mmstudio and the Java-based acquisition engine
  • MMStudio - the Java-based micro-manager GUI application.
  • clojure acqEngine - original acquisition engine (written in clojure and used by MMStudio): this is the bit that has conventionally driven the microscope during an MDA acquisition.
  • AcqEngJ - A Java-based alternative engine to the clojure one, originally written for MicroMagellan and Pycro-manager, but being integrated into the Java based MMStudio
  • napari - multidimensional data viewer in Python.

Popular repositories

  1. napari-micromanager napari-micromanager Public

    GUI interface between napari and micromanager powered by pymmcore-plus and pymmcore-widgets

    Python 57 20

  2. pymmcore-plus pymmcore-plus Public

    Pure python/C++ micro-manager ecosystem

    Python 21 9

  3. useq-schema useq-schema Public

    An implementation agnostic schema for describing a sequence of events during a multi-dimensional imaging acquisition.

    Python 14 5

  4. pymmcore-widgets pymmcore-widgets Public

    A set of Qt-based widgets onto the pymmcore-plus model

    Python 8 5

  5. mda-simulator mda-simulator Public

    Python 1

  6. pymmdevice pymmdevice Public

    Direct Python wrapper for MMDevice API

    Python 1 1

Repositories

Showing 10 of 11 repositories

Top languages

Loading…

Most used topics

Loading…