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.
  • pymmcore-gui - Work-in-progress 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 based on Qt.
  • 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. napari-micromanager napari-micromanager Public

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

    Python 63 21

  2. pymmcore-plus pymmcore-plus Public

    Pure python/C++ micro-manager ecosystem

    Python 33 15

  3. useq-schema useq-schema Public

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

    Python 16 6

  4. pymmcore-widgets pymmcore-widgets Public

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

    Python 14 8

  5. mda-simulator mda-simulator Public

    Python 3

  6. pymmcore-gui pymmcore-gui Public

    Repo for discussing a unified effort towards a pymmcore-plus gui.

    Python 3 4

Repositories

Showing 10 of 15 repositories
  • pymmcore-gui Public

    Repo for discussing a unified effort towards a pymmcore-plus gui.

    pymmcore-plus/pymmcore-gui’s past year of commit activity
    Python 3 BSD-3-Clause 4 5 4 Updated Feb 9, 2025
  • pymmcore-plus Public

    Pure python/C++ micro-manager ecosystem

    pymmcore-plus/pymmcore-plus’s past year of commit activity
    Python 33 BSD-3-Clause 15 22 8 Updated Feb 7, 2025
  • pymmcore-nano Public

    Experimental python bindings for CMMCore using nanobind.

    pymmcore-plus/pymmcore-nano’s past year of commit activity
    C++ 0 LGPL-2.1 2 2 2 Updated Feb 3, 2025
  • 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 16 BSD-3-Clause 6 7 3 Updated Feb 3, 2025
  • pymmcore-remote Public

    Communicate remotely with a pymmcore-plus core instance

    pymmcore-plus/pymmcore-remote’s past year of commit activity
    Python 2 BSD-3-Clause 1 3 2 Updated Feb 3, 2025
  • 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 Feb 3, 2025
  • 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 63 BSD-3-Clause 21 15 5 Updated Feb 3, 2025
  • pymmdevice Public

    Direct Python wrapper for MMDevice API

    pymmcore-plus/pymmdevice’s past year of commit activity
    Python 2 BSD-3-Clause 1 0 2 Updated Feb 3, 2025
  • pymmcore-widgets Public

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

    pymmcore-plus/pymmcore-widgets’s past year of commit activity
    Python 14 8 17 8 Updated Feb 3, 2025
  • .github Public
    pymmcore-plus/.github’s past year of commit activity
    0 0 0 0 Updated Jan 25, 2025

Top languages

Loading…

Most used topics

Loading…