mobie / mobie-viewer-fiji

BSD 2-Clause "Simplified" License
30 stars 12 forks source link

Issue1044 #1046

Closed tischi closed 1 year ago

tischi commented 1 year ago

@imagejan after the above fixes, using Load Columns... it looks now like this:

I would say this is correct, you too?

image image

However, I do have to click once into the table for it to update the display and show the new column. I am fighting with this already for a long time and never quite managed to fix it....

imagejan commented 1 year ago

@tischi I can confirm this now works as expected in the Open Image and Labels... case. 🚀

Unfortunately, it still doesn't in our MoBIE project where we added the segmentation as a merged grid view with multiple sources (from 240 wells). I still get:

There are duplicate columns: [label] Those columns will be replaced by the columns in the newly loaded table.

... and all the labels turn 0.

If you don't have an immediate idea what might cause this, I'll try to set up a minimal example project to reproduce the issue.

tischi commented 1 year ago

@imagejan this is strange indeed.

I guess label is the name of the label id column, correct?

Then those two lines of code:

final List< String > additionalColumnNames = additionalTable.columnNames().stream().filter( col -> ! mergeByColumnNames.contains( col ) ).collect( Collectors.toList() );
final List< String > duplicateColumnNames = additionalColumnNames.stream().filter( col -> columnNames.contains( col ) ).collect( Collectors.toList() );

...should be such that duplicateColumnNames cannot contain label, because it should be part of mergeByColumnNames.

So, if you run in debug mode and set a breakpoint there and check what is going on, would probably allow us to figure out the issue.

imagejan commented 1 year ago

@tischi I now uploaded an example dataset (ome-zarr and MoBIE) illustrating the issue here: https://doi.org/10.5281/zenodo.8141917

Please let me know if you can reproduce.

tischi commented 1 year ago

@imagejan

There are two segmentations: cellpose and cellpose_1, which one should I use?

image

And, to make sure you are going: Table > Load Columns ... Load from Project ... additional.tsv, right?

imagejan commented 1 year ago

@tischi wrote:

Table > Load Columns ... Load from Project ... additional.tsv, right?

Yes, correct.

cellpose and cellpose_1, which one should I use?

This was just to illustrate segmentations from two different channels in the same labels group in the zarr file, and how we can share the same common table source for both of these segmentation sources.

It shouldn't matter for the 'Load Columns' step, as the existing label ids are the same in both channels.

tischi commented 1 year ago

@imagejan I think I found several bugs.

For me it works now for the example data that you attached. Could you please build from this PR (branch1044) and confirm?

When loading the columns one gets errors like this:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 10 >= 10 at java.util.Vector.elementAt(Vector.java:479)

This is something I have been fighting with forever and still don't understand it, but I think you can simply ignore it.....

imagejan commented 1 year ago

@tischi great, thanks a lot!

I confirm that the Load Columns... step now works as expected 👍 🎉 with a mobie-viewer-fiji-4.0.7-SNAPSHOT.jar built from the issue1044 branch.