-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Design for the recOrder
-waveorder
interface
#341
Comments
In this case will recOrder still have a CLI? Or we point users to waveorder from there? |
I'm flexible on where the CLI lives...could be in I'm currently leaning towards making it a I realize this suggestion walks back one of our earlier decisions to make |
Thanks @talonchandler for flagging this problem and coming up with a good solution. My notes:
If we cannot figure out a way to co-develop recOrder and waveOrder (e.g., invoke a recOrder CLI with breakpoint deep in waveOrder array-library), we should move all HPC-related CLI to waveOrder.
Let's discuss this offline. |
@mattersoflight @ziw-liu and I came to a few conclusions in an offline meeting:
|
This plan sounds good to me too. I would advocate for clear and descriptive, possibly longer, function and variable names so that there is less confusion for both users and future developers. For me, working with the |
#347 and the issues it spawned complete this discussion, so I am closing this issue. |
Seeking comments from @mattersoflight @ziw-liu @ieivanov @edyoshikun.
As I've been refactoring phase reconstructions into
phase.py
I've been realizing that it's a good time to discuss more details of the design of therecOrder
-waveorder
interface.Background and goals: All of our reconstructions take a form similar to "do an expensive precomputation" (e.g. calculate a phase OTF, calculate the background-correction Mueller matrices), then apply that result to the acquired data. Our workflows often require some iteration (did I choose the right settings for my transfer function? what does my transfer function look like? what happens if I apply this transfer function to a different dataset?), so we need workflows that allow quick feedback for prototyping while allowing us to apply a reconstruction to a large number of positions/times/files.
This draft design of a waveorder CLI and its configuration settings/files enables the following core workflows:
Calculate a transfer function and save it to a napari-readable .zarr file (for inspection by technical users)
>> wo calc-tf tf-config.yml -o tf.zarr
then apply its inverse to a file
>> wo apply-inv-tf tf.zarr input.zarr -o output.zarr
Do both steps in one call with:
>> wo reconstruct recon-config.yml input.zarr -o output.zarr
I plan to have recOrder 0.4.0 generate the
tf-config.yml
from its GUI, then makewo tf
andwo apply-inv-tf
calls to perform the reconstruction. This will allow the user to easily transition from arecOrder
-GUI-based workflow to awo
-CLI-based workflow.I expect recOrder 1.0.0 to be able to read this set of pydantic models (or future variants) to generate much of its GUI.
Main questions:
recOrder
and it's offline mode faced difficulty in handling the expensive precomputation of transfer functions. This design puts some of the burden for handling transfer functions on the user, but I think the advantages are worth it (everyone can precompute and inspect the TFs) and a high-levelwo reconstruct
command can provide the same one-step experience if desired. Does this design make sense?recOrder
GUI...any comments here @ziw-liu?reconstruct
step intocalc-tf
andapply-inv-tf
since I wanted each step to be a verb, and it wasn't obvious what to call the second substep (is the second stepreconstruct
or are both steps togetherreconstruct
?). I'm welcoming suggestions on my naming choices throughout.Below is a skeleton design for the main pydantic models. More detailed validations/typing will follow after a first iteration here.
The text was updated successfully, but these errors were encountered: