Welcome to MOSAICpy’s documentation!

Note

This is an unfinished project, with lots of broken code

Most of the work so far has gone into establishing a framework for image processors and plans (pipelines), but many of the current ImgProcessors are just stubs and do not work.

If you are helping to test, please feel free to log requests or notes about bugs & broken bits in the github issue tracker.

The Basic Idea

MOSAICpy (i.e. “LLSpy2”) is a modular image processing app written in Python. The basic idea is to string together a series of processing steps (see The ImgProcessor Class), each of which accept a multi-dimensional numpy array and metadata as input, perform some actions on or with the image, and pass it (or a modified version of it) down the chain for further processing. The actions may be standard image processing, like a flatfield correction, cropping, or deconvolution, etc…, but they can be anything you can code in python, such reading/writing to disk/network, or connecting to a server.

MOSAICpy builds a GUI, even for user-written plugins, by introspecting the function signature. Hopefully, this will enable people to add custom steps to their image processing pipeline without needing to request major changes to the MOSAICpy program itself.

A series of ImgProcessors is called a ProcessPlan (see ProcessPlans). The GUI lets you rearrange, activate/deactivate, add, or remove ImgProcessors. Plans can be saved and reloaded, and shared with others.

A concept still in development is modular DataReaders, and ImgWriters. DataReaders will recognize input data in some particular format (i.e. a lattice light sheet dataset, or a 3D-SIM dataset) based on some attribute present in the metadata, or file structure. By adding DataReaders, MOSAICpy will gradually be able to handle data in a greater number of formats (again, without rewriting the core program). ImgWriters, lie at the end of the ProcessPlan, and take care of output; for instance: writing a Tiff file to disc, or uploading to a server.

With the added flexibility will certainly come some hiccups and bugs, which I hope to gradually work out, eventually developing some well-working ProcessPlan

_images/screen.png

Indices and tables