-
Notifications
You must be signed in to change notification settings - Fork 20
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
Support NGFF using n5-universe #328
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This branch reflects an effort to rework the main class of the Mamut app: the MamutAppModel. The main goal is to make the app model the core of a Mastodon session, and have all of its fields final, and have them containing everything we need to run all featuures of the app. This is a WIP but so far we have: - The windowManager is now a field of the app model. - The app model is immutable: it cannot change under the user feet. When a user loads a project, it gets another instance, but cannot modify an existing one. - And to do this, the main work of this PR is the rework of the project loading and saving, detailed a bit below. The ProjectManager class is gone, replaced by 4 classes with only static methods, in the package org.mastodon.mamut.io. Each one takes care about loading, saving, importing or exporting. The loading methods all produces a new MamutAppModel instance. This instance receives the MamutProject it was created on (handy to save it later). The app model is properly initiatialized ONCE with everything. Then a consumer can create a MainWindow to pilot it. I have updated all the classes so that they compile. The tests all run (except for the garbage collection from Mathias, which requires changing two deps). But I am anxious to see if we cover all the use cases below: - [x] open a project - [ ] save a modified project - [x] 'save as' a project - [ ] test that we can reload a saved project - [ ] test that we can reload a 'saved as' project The importers and exporters work, as seen by the tests, but I would like to test them and rework their UI. Then I will rework again the app model, rename it etc...
Also make more explicit their respective role in the javadoc.
We rely on MamutAppModel for non-view related fields. Also, do not test for appModel == null anymore.
They will generate an error in v2.0.
This commit removes mention of the deprecated SetupAssignments and BrightnessDialog classes. The actions that brought the corresponding dialogs are removed as well. There is some code to still make it possible to save/load bdv settings and use ones that are generated 'elsewhere'.
Mainly as an effort to reduce the number of fields and methods in the window manager class. We began with just a manager for BDV and TrackScheme styles but now we have 5 of them. For now. Also this will make it easier to extend Mastodon with new views in the future.
The view lists are stored in a map, indexed by their class, like for the manager. This diminish the number of fields and methods in the window manager class. This also allows for treating views in a general manner without having to change too much code when a new view will be added. For this I shall find a way to create view instances in a generic manner, probably with a factory pattern.
We started with just 2 views (BDV and TrackScheme) but now there are enough of them is that it is worthwhile having some generic way of handling them. The next commits will be about coming with a sensible way of doing it. Ideally, we want to make it possible for 3rd parties to extends Mastodon with new views without having to recompile it.
- Get rid of IMastodonView and IMastodonFrameView - An interface for views that have a ViewerFrame, that MastodonFrameView implements. - An interface for all Mamut views (branch and core graphs) that extend from it, and add methods for GroupHandle on onClose(). - MamutView and MamutBranchView both implement this interface.
So that now we can have one factory type for both branch and core graph views. Tune the bdv factory accordingly.
Please note that the MinIO server is locally launched here.
add license text
support OME-Zarr v0.4 and N5 Viewer formats
@ksugar Awesome! I will make basic tests then merge. All in time! |
Doc for the N5 dialog is here: |
6 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Overview
This PR implements loaders for the NGFF formats using n5-universe.
Supported formats
Plugins › BigDataViewer › Export Current Image as XML/HDF5
in FijiFile › Save As › HDF5/N5/Zarr/OME-NGFF ...
in FijiUsage
new project from URL
in Mastodon launcher.browse
button to open N5 dialog.Browse
button to load local dataset, or input a URL and and press theDetect datasets
button.Please use the URLs starting with
http:
orhttps:
because thes3:
protocol is not fully supported at the moment.(multiscale)
dataset and press theOK
button..xml
file that contains the SpimData information.create
button.bdv
window.Work with authentication of the remote storage
If the remote storage requires authentication or fails to load data, a dialog will appear, allowing you to enter the username (or
AWS_ACCESS_KEY_ID
) and password (orAWS_SECRET_ACCESS_KEY
).Alternatively, the user can set the credentials permanently on the system using the AWS credentials provider chain.
https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html