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 Loading

  1. napari-micromanager napari-micromanager Public

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

    Python 62 21

  2. pymmcore-plus pymmcore-plus Public

    Pure python/C++ micro-manager ecosystem

    Python 33 14

  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 12 7

  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.

    3

Repositories

Showing 10 of 15 repositories
  • 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 1 0 Updated Dec 4, 2024
  • pymmcore-plus Public

    Pure python/C++ micro-manager ecosystem

    pymmcore-plus/pymmcore-plus’s past year of commit activity
    Python 33 BSD-3-Clause 14 23 12 Updated Dec 4, 2024
  • 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 12 7 16 7 Updated Dec 3, 2024
  • 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 Dec 2, 2024
  • 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 Dec 2, 2024
  • 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 Dec 2, 2024
  • 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 62 BSD-3-Clause 21 15 5 Updated Dec 2, 2024
  • 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 Dec 2, 2024
  • pymmcore-MDA-writers Public

    MDA writers for pymmcore-plus

    pymmcore-plus/pymmcore-MDA-writers’s past year of commit activity
    Python 1 2 1 1 Updated Oct 13, 2024
  • pymmcore-gui Public

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

    pymmcore-plus/pymmcore-gui’s past year of commit activity
    3 BSD-3-Clause 0 3 0 Updated Oct 13, 2024

Top languages

Loading…

Most used topics

Loading…