pycromanager has several options for interacting with micro-manager which can be used independently or in combination. The high level APIs described in Acquisitions are usually the best place to start. They describe how to use the pycromanager Acquisition class to run common “multi-dimensional acquisitions” (i.e. Z-stacks, multiple XY posisitons, etc.), customized ones with additional abitrary axes and hardware settings, or ones generated through the Micro-magellan GUI (a Micro-manager plugin for imaging large samples such as tissue sections, whole slides, multi-well plates, etc.).

Acquisition supports customization such as modifying image data on-the-fly, controlling acquisition in response to data, integrating non-micro-manger supported hardware, running high-speed acquisitions with hardware TTL triggering, and using customized visualization/data saving. The data acquired by Acquisition can be read into numpy or dask arrays using the Dataset, as described in Reading acquired data.

Acquisition provides its own GUI, but this can be disabled along with the Micro-Manger GUI (see Headless Mode), enabling the pycromanager to be used as invisible backend acquisition system for custom applications.

For less complicated experiments (e.g. just snapping images on a camera, moving a single piece of hardware), Controlling Micro-Manager core might be a good place to start.

Finally, for experiments that require Java-based micro-manager plugins or already work well with existing beanshell scripts, try Calling Micro-manager Java (“Studio”) API, Calling custom Java code or Controlling Micro-Magellan.