Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is the purpose of this PR?
This PR close #7 by implementing the required utility functions to run inference on ome.tiff files. The final implementation looks pretty different than the design doc. In the design doc, I proposed to implement .ome.tif versions of the following functions
calculate_normalization
,prepare_normalization_dict
,predict_fovs
. While implementing this, I figured that this is not nicely extendable, especially when thinking about additional data representations (eg. zarr, etc.) that we might need to treat in the future. Thus I decided to add a classMultiplexDataset
that abstracts away the data representation and gives a common interface via class methodsget_channel(fov: str, channel: str)
andget_segmentation(fov: str)
to the data.How did you implement your changes
I added the following new classes:
LazyOMETIFFReader
which extends pyometiffsOMETIFFReader
to allow for lazy loading of single channels from an .ome.tiff files. This makes the ViewerWidget way more responsive for .ome.tiffs.MultiplexDataset
which abstracts away the different data representations of the .ome.tiff stacks and the one-folder-per-fov representation and offers a common interface viaget_channel(fov: str, channel: str)
andget_segmentation(fov: str)
.Nimbus
andViewerWidget
classes as well as in the normalization_dict preparation code to make it work with theMultiplexDataset
.Remaining issues