Closed talonchandler closed 1 year ago
I'd add that this CLI will use the new unified polarization algebra and deconvolution algorithms being developed in waveOrder
. This CLI will seed the design of the offline analysis GUI we plan to have in release 1.0.0 of recOrder.
Some thoughts on CLI
gui_state.yml
to microscope_params.yml
, microscope_state.yml
or recorder_params.yml
--params=3dphase,3dbiref
, --channels= 3dphase,3dbiref
is more intuitive. recorder reconstruct --channels=3dphase,3dbiref --input=/path/to/data.zarr --output=/path/to/output.zarr --config=microscope_params.yml
- We're thinking of giving the user the option to append to an existing zarr (enabled by iohub!), possibly by setting the output equal to the input. Good idea?
Yes! It does make sense to write the reconstructed data as channels that can be read with fluorescence or raw transmission data. A workflow for the user will be
- We're planning to have the CLI fail early. We'll validate file i/o, check the input/output shapes for the requested params, and validate the config file before proceeding to the actual computation.
- recOrder is currently set up around single-position datasets. @ziw-liu pointed out that these CLI calls could easily be adapted to multi-position files (acquired via MM then converted to zarr) by using the nested structure of iohub zarrs.
šš¼ to both of the above.
@ziw-liu @mattersoflight and I have been brainstorming about a key set of features to prepare ahead of AQLM.
We've roughly settled on providing a
recorder reconstruct
CLI that lets the user reproduce what they've done in the GUI. Followup tweaking of reconstruction parameters can be performed by modifying a .yaml file that is saved after eachrecOrder
GUI acquisition.We're imagining the following workflow:
Calibration proceeds like usual in the "Calibration" tab and results are saved in
calibration_metadata.txt
The user acquires and reconstructs data in the "Acquire" tab, and iterates on the microscope until they're happy with their data.
After each acquisition is complete,
recOrder
saves all of its parameters to agui_state.yml
file and prints a one-line CLI call that can be used to reproduce the reconstruction that they've been shown in the napari GUI. The CLI call will look like:recorder reconstruct --input=/path/to/data.zarr --output=/path/to/output.zarr --params=3dphase,3dbiref --config=gui_state.yml
The user can modify the
gui_state.yml
file to change the reconstruction parameters (regularization parameters, etc).279 already saves the
gui_state.yml
file with enough information to recreate the reconstruction, so we're planning to modify the example scripts into a CLI that reads thegui_state.yml
file.We're very open to feedback on this plan, which is our main issue to solve for 0.4.0. A few specific questions:
--params=3dphase,3dbiref
?iohub
!), possibly by setting the output equal to the input. Good idea?recOrder
is currently set up around single-position datasets. @ziw-liu pointed out that these CLI calls could easily be adapted to multi-position files (acquired via MM then converted to zarr) by using the nested structure ofiohub
zarrs.