mobie / mobie-viewer-fiji

BSD 2-Clause "Simplified" License
33 stars 13 forks source link

Running MoBIE from the command line #919

Open tischi opened 1 year ago

tischi commented 1 year ago

@constantinpape @k-dominik

I have a first prototype that could be tested.


Installation instructions

These instructions should work on:

As prerequisites please ensure that the below commands are available from your terminal:

Step by step instructions:


Does it work?

constantinpape commented 1 year ago

Cool! I don't have time today, but I will test it tomorrow.

tischi commented 1 year ago

I uploaded new things to the issue811 branch and it may not work now. Maybe this commit in the issue811 could work: f9dcb689a882287e8e9a45e6da670774227cf3d1

tischi commented 1 year ago

Ah, it is more complex as you'll also need a special version of mobie-io. Could you build mobie-io locally?

constantinpape commented 1 year ago

Could you build mobie-io locally?

Yes

tischi commented 1 year ago

OK, I updated the instructions above (now the respective latest commits in the two repos work on my computer).

constantinpape commented 1 year ago

I tried with the example data and it works!

Just as a sidenote: while opening the data it throws the following exception, but this doesn't seem to affect the functionality:

[ERROR] java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 1                                              
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)                                       
        at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)                             
        at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)                                       
        at java.base/java.util.Objects.checkIndex(Objects.java:372)                                                           
        at java.base/java.util.ArrayList.get(ArrayList.java:459)                                                              
        at net.imagej.legacy.IJ1Helper$IJ1MenuWrapper.getParentMenu(IJ1Helper.java:1025)                                      
        at net.imagej.legacy.IJ1Helper$IJ1MenuWrapper.create(IJ1Helper.java:984)                                              
        at net.imagej.legacy.IJ1Helper$IJ1MenuWrapper.access$700(IJ1Helper.java:956)                                          
        at net.imagej.legacy.IJ1Helper.addMenuItems(IJ1Helper.java:941)                                                       
        at net.imagej.legacy.LegacyService.initialize(LegacyService.java:507)                                                 
        at org.scijava.service.ServiceHelper.createServiceRecursively(ServiceHelper.java:352)                                 
        at org.scijava.service.ServiceHelper.createExactService(ServiceHelper.java:267)                                       
        at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:229)                                              
        at org.scijava.service.ServiceHelper.loadService(ServiceHelper.java:192)                                              
        at org.scijava.service.ServiceHelper.loadServices(ServiceHelper.java:164)                                             
        at org.scijava.Context.<init>(Context.java:285)                                                                       
        at org.scijava.Context.<init>(Context.java:234)                                                                       
        at org.scijava.Context.<init>(Context.java:174)                                                                       
        at org.scijava.Context.<init>(Context.java:160)                                                                       
        at net.imagej.ImageJ.<init>(ImageJ.java:75)                                                                           
        at org.embl.mobie.cmd.MoBIECommandLineInterface.run(MoBIECommandLineInterface.java:31)                                
        at org.embl.mobie.cmd.MoBIECommandLineInterface.call(MoBIECommandLineInterface.java:25)                               
        at org.embl.mobie.cmd.MoBIECommandLineInterface.call(MoBIECommandLineInterface.java:13)                               
        at picocli.CommandLine.executeUserObject(CommandLine.java:1853)                                                       
        at picocli.CommandLine.access$1100(CommandLine.java:145)                                                              
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2255)                 
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2249)                                                          
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2213)                                                          
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2080)                                      
        at picocli.CommandLine.execute(CommandLine.java:1978)                                     
tischi commented 1 year ago

Yes, I know, I made an issue: https://github.com/mobie/mobie-viewer-fiji/issues/930

Cool that it works!

Would you have some minimal example data that is relevant for your use-cases?

I would work next on reading a MorpholibJ CSV ImageJ ResultsTable.

If you have some other minimal example with image, segmentation, table, maybe using the mobie column name spec that would be helpful.

constantinpape commented 1 year ago

Would you have some minimal example data that is relevant for your use-cases?

Yes, I can compile some examples. (But not sure if I will have time for it today.)

constantinpape commented 1 year ago

I have created 3 relevant examples and uploaded them here: https://owncloud.gwdg.de/index.php/s/WXc7jjisLQs6cX1 The examples are:

For all three the segmentation tables are stored in the format from skimage.regionprops (I will create an issue on this later.)

tischi commented 1 year ago

2d timeseries data: image and segmentation are stored as ome.zarr

The column centroid-2 exists in the table even though this is 2-D data; maybe something wrong?

constantinpape commented 1 year ago

The column centroid-2 exists in the table even though this is 2-D data; maybe something wrong?

Yes, indeed something went wrong there. I uploaded a fixed version here: https://owncloud.gwdg.de/index.php/s/YUGwnCfm9yn2Chg