pymmcore-plus

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).
  • 🖥️ pymmcore-gui - Complete GUI application for pymmcore-plus. This is an alternative to napari-micromanager: it uses ndv instead of napari. It is designed as a complete "double-clickable" desktop application (a replacement for the Java-Based Micro-Manager application called MMStudio).
  • 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.
  • pymmcore-nano - Experimental python bindings for CMMCore using nanobind. This is an alternative to pymmcore, which uses SWIG. pymmcore-plus supports both pymmcore and pymmcore-nano, and will use nano if present. 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 Loading

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

    Python 76 25

  2. Pure python/C++ micro-manager ecosystem

    Python 49 25

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

    Python 21 11

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

    Python 21 17

  5. Pure Python Micro-Manager GUI Application, built on pymmcore-plus

    Python 21 10

  6. Unified API for streaming camera frames to either OME-TIFF or OME-Zarr format

    Python 13 7

Repositories

Showing 10 of 19 repositories

  • pymmcore-gui Public

    Pure Python Micro-Manager GUI Application, built on pymmcore-plus

    pymmcore-plus/pymmcore-gui’s past year of commit activity

    Python

    21

    BSD-3-Clause

    10 17 7

    Updated Apr 2, 2026

  • ome-writers Public

    Unified API for streaming camera frames to either OME-TIFF or OME-Zarr format

    pymmcore-plus/ome-writers’s past year of commit activity

    Python

    13

    BSD-3-Clause

    7 4 1

    Updated Apr 2, 2026

  • useq-schema Public

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

    pymmcore-plus/useq-schema’s past year of commit activity

    Python

    21

    BSD-3-Clause

    11 8 3

    Updated Apr 2, 2026

  • pymmcore-plus/pymmcore-plus’s past year of commit activity

    Python

    49

    BSD-3-Clause

    25 8 5

    Updated Apr 2, 2026

  • pymmcore-plus/pymmcore-widgets’s past year of commit activity

  • pymmcore-nano Public

    Python bindings for CMMCore (micro-manager) using nanobind instead of SWIG

    pymmcore-plus/pymmcore-nano’s past year of commit activity

    C++

    2

    LGPL-2.1

    3 0 3

    Updated Apr 1, 2026

  • napari-micromanager Public

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

    pymmcore-plus/napari-micromanager’s past year of commit activity

    Python

    76

    BSD-3-Clause

    25 15 3

    Updated Apr 1, 2026

  • pymmcore-remote Public

    Communicate remotely with a pymmcore-plus core instance

    pymmcore-plus/pymmcore-remote’s past year of commit activity

    Python

    3

    BSD-3-Clause

    2 3 2

    Updated Apr 1, 2026

  • pymmcore-plus/setup-mm-test-adapters’s past year of commit activity

    Makefile 0

    1 0 0

    Updated Mar 11, 2026

  • pymmcore-midi Public

    MIDI Device control for microscopes using pymmcore

    pymmcore-plus/pymmcore-midi’s past year of commit activity

    Python

    1

    BSD-3-Clause

    1 0 3

    Updated Mar 2, 2026