Skip to content

pymmcore-plus/pymmcore-remote

Repository files navigation

pymmcore-remote

License PyPI Python Version CI codecov

Remote process communication for pymmcore-plus


This package provides experimental support for running pymmcore-plus in a remote process and communicating with it via RPC (currently mediated by Pyro5)

Installation

For now, please install from the main branch on github:

pip install git+https://github.com/pymmcore-plus/pymmcore-remote

pymmcore-remote must be installed on both the server (microscope) side, and the client (controller) side.

On the microscope machine, you must also install micromanager device adapters:

mmcore install

More detail available in the pymmcore-plus documentation

Usage

Start a server on the machine with the microscope:

mmcore-remote

You can also specify the port with --port and the hostname with --host. Run mmcore-remote --help for more options.

Then, on the client side (or in a separate process), connect to the server using using pymmcore_remote.MMCoreProxy. MMCorePlusProxy accepts host and port arguments that must match the server (if you override the defaults).

from pymmcore_remote import MMCorePlusProxy

with MMCorePlusProxy() as core:
    core.loadSystemConfiguration("path/to/config.cfg")
    # continue using core as you would with pymmcore_plus.CMMCorePlus

Commands are serialized and sent to the server, which executes them in the context of a CMMCorePlus object. The results are then serialized and sent back to the client.

See the pymmcore-plus documentation for standard usage of the CMMCorePlus object.

Considerations

This package is experimental: The goal is for the API to be identical to that of pymmcore-plus, but there may be some differences, and various serialization issues may still be undiscovered. Please open an issue if you encounter any problems.

Data is currently shared between processes using python's shared memory module, which is a fast and efficient way to share memory buffers directly. However, this won't work for network access between different machines, so please open an issue to discuss your use case.

About

Communicate remotely with a pymmcore-plus core instance

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages