diff --git a/README.md b/README.md index da09102..3bc6a37 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,23 @@ # shrimPy: Smart High-throughput Robust Imaging & Measurement in Python ![acquisition and reconstruction schematic](docs/figure_3a.png) -shrimPy (pronounced: ʃrɪm-pai) is a pythonic framework for high-throughput smart microscopy and high-performance analysis. The current alpha version of the framework is specific to the mantis microscope, described in our [preprint](https://www.biorxiv.org/content/10.1101/2023.12.19.572435v1), but extensible to a high throughput microscope that is controlled with [Micro-Manager](https://micro-manager.org/). +shrimPy (pronounced: ʃrɪm-pai) is a pythonic framework for high-throughput smart microscopy and high-performance analysis. The current alpha version of the framework is specific to the mantis microscope, described in our [manuscript](https://doi.org/10.1093/pnasnexus/pgae323), but extensible to a high throughput microscope that is controlled with [Micro-Manager](https://micro-manager.org/). The acquisition engine synchronizes data collection using hardware triggering and carries out smart microscopy tasks such as autofocus and autoexposure. The acquired multidimensional raw datasets are processed by the reconstruction engine to generate registered multimodal data that can be used for analysis. Raw data are first converted to the [OME-Zarr](https://ngff.openmicroscopy.org/) format using [iohub](https://github.com/czbiohub-sf/iohub) to facilitate parallel processing and metadata management. Discrete data volumes then undergo deskewing of fluorescence channels, reconstruction of phase and orientation (using [recOrder](https://github.com/mehta-lab/recOrder)), registration and virtual staining (using [VisCy](https://github.com/mehta-lab/viscy)). +This version of the code still uses the legacy name `mantis`, which overlaps with the name of the microscope which is used to acquire data. In a future release we will transition the codebase to the name `shrimPy`. + ## Installation -`shrimpy` can be installed as follows: +`mantis` can be installed as follows: 1. Create a new Python 3.10 virtual environment using conda: ```sh -conda create -y --name shrimpy python=3.10 -conda activate shrimpy +conda create -y --name mantis python=3.10 +conda activate mantis ``` 2. Clone the repo and install this package: @@ -34,15 +36,15 @@ The [Setup Guide](docs/setup_guide.md) outlines how the mantis microscope is con Mantis acquisitions and analyses use a command-line interface. -A list of `shrimpy` commands can be displayed with: +A list of `mantis` commands can be displayed with: ```sh -shrimpy --help +mantis --help ``` -Data are acquired using `shrimpy run-acquisition`, and a list of arguments can be displayed with: +Data are acquired using `mantis run-acquisition`, and a list of arguments can be displayed with: ```sh -shrimpy run-acquisition --help +mantis run-acquisition --help ``` The mantis acquisition is configured using a YAML file. An example of a configuration file can be found [here](mantis/acquisition/settings/example_acquisition_settings.yaml). @@ -79,6 +81,19 @@ iohub convert \ -i ./acq_name/acq_name_lightsheet_1 \ -o ./acq_name_lightsheet.zarr +# DECONVOLVE FLUORESCENCE +# estimate PSF parameters +mantis estimate-psf \ + -i ./beads.zarr \ + -c ./psf_params.yml \ + -o ./psf.zarr +# deconvolve data +mantis deconvolve \ + -i ./acq_name_lightsheet.zarr \ + -c ./deconvolve_params.yml \ + --psf-dirpath ./psf.zarr + -o ./acq_name_lightsheet_deconvolved.zarr + # DESKEW FLUORESCENCE # estimate deskew parameters mantis estimate-deskew \ @@ -96,6 +111,19 @@ recorder reconstruct \ -c ./recon.yml \ -o ./acq_name_labelfree_reconstructed.zarr +# STABILIZE +# estimate stabilization parameters +mantis estimate-stabilization \ + -i ./acq_name_labelfree.zarr/*/*/* \ + -o ./stabilization.yml \ + --stabilize-xy \ + --stabilize-z +# stabilize data +mantis stabilize \ + -i ./acq_name_labelfree.zarr/*/*/* \ + -c ./stabilization.yml \ + -o ./acq_name_labelfree_stabilized.zarr/*/*/* + # REGISTER # estimate registration parameters mantis estimate-registration \ @@ -114,6 +142,39 @@ mantis register \ -t ./acq_name_lightsheet_deskewed.zarr/*/*/* \ -c ./register_optimized.yml \ -o ./acq_name_registered.zarr + +# CONCATENATE CHANNELS +mantis concatenate \ + -c ./concatenate.yml \ + -o ./acq_name_concatenated.zarr + +# STITCH +# estimate stitching parameters +mantis estimate-stitching \ + -i ./acq_name.zarr/*/*/* \ + -o ./stitching.yml \ + --channel DAPI + --percent-overlap 0.05 +# stitch fields of view +mantis stitch \ + -i ./acq_name.zarr/*/*/* \ + -c ./stitching.yml \ + -o ./acq_name_stitched.zarr/*/*/* +``` + +## Additional utilities + +We have also developed the following CLI utilities to help with data acquisition and reconstruction + +```sh +# Estimate fluorescence bleaching +mantis estimate-bleaching --help + +# Update zarr scale metadata +mantis update-scale-metadata --help + +# Generate an HTML report with PSF measurements +mantis characterize-psf --help ``` ## Data and metadata format