Skip to content
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

Flex: Merge IDR changes and add new group plate option #3537

Open
wants to merge 11 commits into
base: develop
Choose a base branch
from

Conversation

dgault
Copy link
Member

@dgault dgault commented Apr 1, 2020

This PR attempts to merge the IDR specific Flex changes from https://github.com/IDR/bioformats/commits/master/components/formats-gpl/src/loci/formats/in/FlexReader.java

It also adds a new option flex.group.plate which can be used to configure the IDR behaviour. Based on initial feedback I have defaulted the option to be on.

This will require a minor release and will be memo file breaking.

@dgault dgault added this to the 6.5.0 milestone Apr 1, 2020
@dgault dgault changed the title Flex idr merge Flex: Merge IDR changes and add new group plate option Apr 1, 2020
@dgault
Copy link
Member Author

dgault commented Apr 3, 2020

Swapped the default behaviour due to large number of repo test failures: https://merge-ci.openmicroscopy.org/jenkins/job/BIOFORMATS-test-folder/55446/console

@dgault
Copy link
Member Author

dgault commented Jun 25, 2020

Moving to 6.6.0 as this PR is memo breaking and not suitable for a patch release

@dgault dgault modified the milestones: 6.5.1, 6.6.0 Jun 25, 2020
@sbesson
Copy link
Member

sbesson commented Sep 29, 2020

Initial testing using a copy of this plate from idr0001 with an options file setting flex.group.plate=true seems to reveal:

  • Bio-Formats showinf correctly includes all measurement folders as part of the filesets and creates a plate with multiple acquisitions
  • OMERO omero import -f fails to select all the files as part of the fileset.

I will keep investigating tomorrow.

@sbesson
Copy link
Member

sbesson commented Oct 8, 2020

Performed some additional testing using the first plate acquisition of the sample idr0001 fileset with the command-line tools with and without the flex.group.plate option.

Without the option, showinf detect 96 series and lists all files under Meas_01(2011-03-31_11-53-03) in the used files list. With the grouping option turned on, showinf -option flex.group.plates true detects 480 series (5 x 96 wells?) and only lists the files under Meas_01(2011-03-31_11-53-03) in the used files lists.

In both cases, the initial steps of the reader initialization parses all flex files across measurements.

Looking more closely at the diff between this PR and the state of the reader on https://github.com/IDR/bioformats

diff --git a/components/formats-gpl/src/loci/formats/in/FlexReader.java b/components/formats-gpl/src/loci/formats/in/FlexReader.java
index f2beb13f26..9a50150ee2 100644
--- a/components/formats-gpl/src/loci/formats/in/FlexReader.java
+++ b/components/formats-gpl/src/loci/formats/in/FlexReader.java
@@ -99,6 +99,9 @@ public class FlexReader extends FormatReader {
 
   // -- Fields --
 
+  public static final String GROUP_PLATES = "flex.group.plate";
+  public static final boolean GROUP_PLATES_DEFAULT = false;
+
   /** Camera binning values. */
   private int binX, binY;
 
@@ -269,10 +272,11 @@ public class FlexReader extends FormatReader {
     int nBytes = 0;
     int bpp = 0;
     double factor = 0;
+
     try (RandomAccessInputStream s = 
         new RandomAccessInputStream(getFileHandle(file.file))) {
-        IFD ifd;
       TiffParser tp = new TiffParser(s);
+      IFD ifd;
       if (file.offsets == null) {
         if (imageNumber < file.ifds.size()) {
             ifd = file.ifds.get(imageNumber);
@@ -305,10 +309,13 @@ public class FlexReader extends FormatReader {
           offsets[i] += offset;
         }
         ifd.putIFDValue(tag, offsets);
-        } else if (file.offsets != null) {
+      }
+      else if (file.offsets != null) {
         ifd = tp.getIFD(file.offsets[imageNumber]);
       }
       else {
+        tp.getStream().close();
+        s.close();
         return buf;
       }
       nBytes = ifd.getBitsPerSample()[0] / 8;
@@ -386,6 +393,25 @@ public class FlexReader extends FormatReader {
     measurementFiles = new ArrayList<String>();
     acquisitionDates = new HashMap<Integer, Timestamp>();
 
+    Location currentFile = new Location(id).getAbsoluteFile();
+    Location dir = currentFile.getParentFile();
+    runDirs = new ArrayList<Location>();
+    if (!dir.getName().startsWith("Meas_") || !groupPlates()) {
+      runDirs.add(dir);
+    }
+    else {
+      // look for other acquisitions of the same plate
+      dir = dir.getParentFile();
+      String[] parentDirs = dir.list(true);
+      Arrays.sort(parentDirs);
+      for (String d : parentDirs) {
+        Location f = new Location(dir.getAbsoluteFile(), d);
+        if (f.isDirectory() && d.startsWith("Meas_")) {
+          runDirs.add(f);
+        }
+      }
+    }
+    
     if (checkSuffix(id, FLEX_SUFFIX)) {
       initFlexFile(id);
     }
@@ -394,6 +420,7 @@ public class FlexReader extends FormatReader {
     }
     else initMeaFile(id);
 
+    if (runCount == 0) runCount = 1;
     if (plateCount == flexFiles.size() / runCount) {
       plateCount /= wellCount;
       if ((plateCount % fieldCount) == 0) {
@@ -531,24 +558,6 @@ public class FlexReader extends FormatReader {
     if (doGrouping) {
       // group together .flex files that are in the same directory
 
-      Location dir = currentFile.getParentFile();
-      runDirs = new ArrayList<Location>();
-      if (!dir.getName().startsWith("Meas_")) {
-        runDirs.add(dir);
-      }
-      else {
-        // look for other acquisitions of the same plate
-        dir = dir.getParentFile();
-        String[] parentDirs = dir.list(true);
-        Arrays.sort(parentDirs);
-        for (String d : parentDirs) {
-          Location f = new Location(dir.getAbsoluteFile(), d);
-          if (f.isDirectory() && d.startsWith("Meas_")) {
-            runDirs.add(f);
-          }
-        }
-      }
-
       for (Location runDir : runDirs) {
         String[] files = runDir.list(true);
 
@@ -557,7 +566,7 @@ public class FlexReader extends FormatReader {
           LOGGER.debug("Checking if {} belongs in the same dataset.", file);
           if (file.endsWith(".flex") && file.length() == 14) {
             flex.add(new Location(runDir, file).getAbsolutePath());
-            LOGGER.debug("Added {} to dataset.", flex.get(flex.size() - 1));
+            //LOGGER.debug("Added {} to dataset.", flex.get(flex.size() - 1));
           }
         }
       }
@@ -576,8 +585,8 @@ public class FlexReader extends FormatReader {
     LOGGER.debug("Determined that {} .flex files belong together.",
       files.length);
 
-    runCount = runDirs.size();
-
+    runCount = 1;
+    if (runCount == 0) runCount = 1;
     groupFiles(files, store);
     populateMetadataStore(store);
   }
@@ -661,6 +670,7 @@ public class FlexReader extends FormatReader {
       store.setWellSampleIndex(new NonNegativeInteger(i), pos[2], well, sampleIndex);
       store.setWellSampleImageRef(imageID, pos[2], well, sampleIndex);
 
+      if (runCount == 0) runCount = 1;
       store.setPlateAcquisitionWellSampleRef(wellSample, 0, pos[3], i % (getSeriesCount() / runCount));
     }
 
@@ -1325,10 +1335,8 @@ public class FlexReader extends FormatReader {
       if (firstBarcode == null) {
         firstBarcode = barcode;
       }
-
       if (compressed == firstCompressed  && barcode.equals(firstBarcode) && 
-        ifdCount <= firstIFDCount)
-      {
+          ifdCount == firstIFDCount) {
         int[] well = getWell(file);
         int field = getField(file);
         if (well[0] > nRows) nRows = well[0];
@@ -1394,14 +1402,21 @@ public class FlexReader extends FormatReader {
         for (String f : sortedFiles) {
           files.add(f);
         }
+        if (runCount == 0) runCount = 1;
 
         for (int field=0; field<nFiles; field++) {
           FlexFile file = new FlexFile();
           file.row = row;
           file.column = col;
+          LOGGER.info("FlexTest: RunCount = " + runCount + "  NFiles = " + nFiles);
+          if (runCount == 0) runCount = 1;
+          if (nFiles == 0) nFiles = 1;
+          if (runCount > nFiles) {
+            runCount = 1;
+          }
           file.field = field % (nFiles / runCount);
           file.file = files.get(field);
-          file.acquisition = runDirs.size() == 0 ? 0:
+          file.acquisition = (runDirs == null || runDirs.size() == 0) ? 0:
             runDirs.indexOf(new Location(file.file).getParentFile());
 
           if (file.file == null) {
@@ -1846,6 +1861,9 @@ public class FlexReader extends FormatReader {
           if (y != null) binY = Integer.parseInt(y);
         }
       }
+      else if (qName.equals("Plate")) { 
+          plateCount++; 
+      }
       else if (qName.equals("WellCoordinate")) {
         if (wellNumber.length == 1) {
           wellNumber[0][0] = Integer.parseInt(attributes.getValue("Row")) - 1;
@@ -2137,4 +2155,12 @@ public class FlexReader extends FormatReader {
     }
   }
   
+  public boolean groupPlates() {
+    MetadataOptions options = getMetadataOptions();
+    if (options instanceof DynamicMetadataOptions) {
+      return ((DynamicMetadataOptions) options).getBoolean(
+        GROUP_PLATES, GROUP_PLATES_DEFAULT);
+    }
+    return GROUP_PLATES_DEFAULT;
+  }
 }

There are a few places hardcoding runCount=1. Is this the reason why the extra files are excluded?

@sbesson
Copy link
Member

sbesson commented Oct 21, 2020

With the last changes, the non-regression tests are successfully passing with the default option behavior esp. using the representative plate from idr0001.

Turning the plate grouping option on either via passing it in the command line or using an options file with a copy of the fileset leads to a NullPointerException though

build@5bf9d954f85a:~$ /bio-formats-build/bioformats/tools/showinf -nopix -option flex.group.plate true /uod/idr/repos/curated/flex/public/idr0001/X_110331_S13/Meas_01\(2011-03-31_11-53-03\)/001001000.flex 
Checking file format [Evotec Flex]
Initializing reader
FlexReader initializing /uod/idr/repos/curated/flex/public/idr0001/X_110331_S13/Meas_01(2011-03-31_11-53-03)/001001000.flex
Storing well indices
Looking for other .flex files
Looking for files that are in the same dataset as /uod/idr/repos/curated/flex/public/idr0001/X_110331_S13/Meas_01(2011-03-31_11-53-03)/001001000.flex
Measurement files not found.
Making sure that all .flex files are valid
Grouping together files in the same dataset
parsing /uod/idr/repos/curated/flex/public/idr0001/X_110331_S13/Meas_01(2011-03-31_11-53-03)/006002000.flex
...
Exception in thread "main" java.lang.ArithmeticException: / by zero
	at loci.formats.in.FlexReader.groupFiles(FlexReader.java:1409)
	at loci.formats.in.FlexReader.initFlexFile(FlexReader.java:590)
	at loci.formats.in.FlexReader.initFile(FlexReader.java:419)
	at loci.formats.FormatReader.setId(FormatReader.java:1421)
	at loci.formats.ImageReader.setId(ImageReader.java:849)
	at loci.formats.ReaderWrapper.setId(ReaderWrapper.java:650)
	at loci.formats.tools.ImageInfo.testRead(ImageInfo.java:1035)
	at loci.formats.tools.ImageInfo.main(ImageInfo.java:1121)

@dgault dgault removed this from the 6.6.0 milestone Dec 14, 2020
@snoopycrimecop
Copy link
Member

Conflicting PR. Removed from build BIOFORMATS-push#1070. See the console output for more details.
Possible conflicts:

--conflicts

@jburel
Copy link
Member

jburel commented Jan 25, 2022

Conflicting PR. Removed from build BIOFORMATS-push#7. See the console output for more details.
Possible conflicts:

--conflicts

@jburel
Copy link
Member

jburel commented Jan 25, 2022

Conflicting PR. Removed from build BIOFORMATS-push#8. See the console output for more details.
Possible conflicts:

--conflicts

@jburel
Copy link
Member

jburel commented Jan 25, 2022

Conflicting PR. Removed from build BIOFORMATS-push#9. See the console output for more details.
Possible conflicts:

--conflicts

@snoopycrimecop
Copy link
Member

Conflicting PR. Removed from build BIOFORMATS-push#1. See the console output for more details.
Possible conflicts:

--conflicts

@jburel
Copy link
Member

jburel commented Jan 25, 2022

Conflicting PR. Removed from build BIOFORMATS-push#4. See the console output for more details.
Possible conflicts:

--conflicts

@snoopycrimecop
Copy link
Member

snoopycrimecop commented Jan 26, 2022

Conflicting PR. Removed from build BIOFORMATS-push#1120. See the console output for more details.
Possible conflicts:

--conflicts Conflict resolved in build BIOFORMATS-push#745. See the console output for more details.

@sbesson
Copy link
Member

sbesson commented Nov 14, 2022

Closing this as we might be exploring other options than trying to backport the IDR specific changes to the mainline. Effectively, this feature has only ever been used in the context of one studies (idr0001) so we might also want to collect additional use cases.

@dgault
Copy link
Member Author

dgault commented Jan 15, 2024

Reopening for investigation following discussion at IDR meeting

@dgault dgault reopened this Jan 15, 2024
@melissalinkert melissalinkert added this to the 8.0.0 milestone Jan 15, 2024
@will-moore
Copy link
Member

Testing on idr-testing as omero-server... with today's build 699 (https://merge-ci.openmicroscopy.org/jenkins/job/BIOFORMATS-build/669/default/artifact/bio-formats-build/bioformats/components/formats-gpl/target/)

$ cd /opt/omero/server
$ wget https://merge-ci.openmicroscopy.org/jenkins/job/BIOFORMATS-build/669/default/artifact/bio-formats-build/bioformats/components/formats-gpl/target/formats-gpl-7.2.0-SNAPSHOT.jar

$ mv formats-gpl-7.2.0-SNAPSHOT.jar formats-gpl-7.2.0-SNAPSHOT_b669.jar
$ rm OMERO.server/lib/server/formats-gpl.jar
$ rm OMERO.server/lib/client/formats-gpl.jar
$ cp formats-gpl-7.2.0-SNAPSHOT_b669.jar OMERO.server/lib/server/
$ cp formats-gpl-7.2.0-SNAPSHOT_b669.jar OMERO.server/lib/client/

Restarted server sudo service omero-server restart

Viewing images from first acquisition of first plate from idr0001 worked OK (after short wait for memo file to be created).
Then tried viewing Image from 2nd acquisition of the plate...

2024-01-18 17:20:14,218 INFO  [    ome.security.basic.BasicEventContext] (l.Server-1)  cctx:    group=3
2024-01-18 17:20:14,228 DEBUG [                   loci.formats.Memoizer] (l.Server-2) loaded memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267401 bytes)
2024-01-18 17:20:14,228 DEBUG [                   loci.formats.Memoizer] (l.Server-2) start[1705598414162] time[65] tag[loci.formats.Memoizer.loadMemo]
2024-01-18 17:20:14,229 DEBUG [                   loci.formats.Memoizer] (l.Server-2) start[1705598414159] time[69] tag[loci.formats.Memoizer.setId]
2024-01-18 17:20:14,230 ERROR [                ome.io.nio.PixelsService] (l.Server-2) Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
java.lang.IllegalArgumentException: Invalid series: 96  index=96
        at loci.formats.FormatReader.seriesToCoreIndex(FormatReader.java:1341)
        at loci.formats.FormatReader.setSeries(FormatReader.java:972)
        at loci.formats.ImageReader.setSeries(ImageReader.java:491)
        at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:375)
        at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:375)
        at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:375)
        at ome.io.bioformats.BfPixelBuffer.setSeries(BfPixelBuffer.java:125)
        at ome.io.nio.PixelsService.createBfPixelBuffer(PixelsService.java:898)
        at ome.io.nio.PixelsService._getPixelBuffer(PixelsService.java:653)
        at ome.io.nio.PixelsService.getPixelBuffer(PixelsService.java:571)
        at ome.services.RenderingBean$12.doWork(RenderingBean.java:2205)
        at jdk.internal.reflect.GeneratedMethodAccessor318.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
...
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
        at com.sun.proxy.$Proxy123.load_async(Unknown Source)
        at omero.api._RenderingEngineTie.load_async(_RenderingEngineTie.java:248)
        at omero.api._RenderingEngineDisp.___load(_RenderingEngineDisp.java:1223)
        at omero.api._RenderingEngineDisp.__dispatch(_RenderingEngineDisp.java:2405)
        at IceInternal.Incoming.invoke(Incoming.java:221)
        at Ice.ConnectionI.invokeAll(ConnectionI.java:2536)
        at Ice.ConnectionI.dispatch(ConnectionI.java:1145)
        at Ice.ConnectionI.message(ConnectionI.java:1056)
        at IceInternal.ThreadPool.run(ThreadPool.java:395)
        at IceInternal.ThreadPool.access$300(ThreadPool.java:12)
        at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:832)
        at java.base/java.lang.Thread.run(Thread.java:829)
2024-01-18 17:20:14,232 INFO  [                 org.perf4j.TimingLogger] (l.Server-2) start[1705598414149] time[82] tag[omero.call.exception]
2024-01-18 17:20:14,232 INFO  [        ome.services.util.ServiceHandler] (l.Server-2)  Excp:    ome.conditions.ResourceError: Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-01-18 17:20:14,232 INFO  [                 org.perf4j.TimingLogger] (l.Server-2) start[1705598414136] time[96] tag[omero.call.exception]
2024-01-18 17:20:14,232 INFO  [        ome.services.util.ServiceHandler] (l.Server-2)  Excp:    ome.conditions.ResourceError: Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-01-18 17:20:14,237 INFO  [         ome.security.basic.EventHandler] (l.Server-1)  Auth:    user=52,group=3,event=367837690(User),sess=b9658bb2-4668-4159-a1f0-fca8feebc30f
2024-01-18 17:20:14,238 INFO  [        ome.services.util.ServiceHandler] (l.Server-3)  Meth:    interface ome.api.StatefulServiceInterface.close
2024-01-18 17:20:14,238 INFO  [        ome.services.util.ServiceHandler] (l.Server-3)  Args:    ()
2024-01-18 17:20:14,238 INFO  [                 org.perf4j.TimingLogger] (l.Server-3) start[1705598414238] time[0] tag[omero.call.success.ome.services.RenderingBean.close]
2024-01-18 17:20:14,238 INFO  [        ome.services.util.ServiceHandler] (l.Server-3)  Rslt:    null
2024-01-18 17:20:14,239 INFO  [                      omero.cmd.SessionI] (l.Server-3) Unregistered servant:b9658bb2-4668-4159-a1f0-fca8feebc30f/3afc97df-ae11-42fb-adc2-32c10e690959omero.api.RenderingEngine(omero.api._RenderingEngineTie@503df9dc)
2024-01-18 17:20:14,240 INFO  [o.services.sessions.SessionContext$Count] (l.Server-7) -Reference count: b9658bb2-4668-4159-a1f0-fca8feebc30f=1
2024-01-18 17:20:14,240 INFO  [                      omero.cmd.SessionI] (l.Server-7) cleanupSelf(ServiceFactoryI(session-3fce9345-9599-4ed7-97cf-2275fe718582/b9658bb2-4668-4159-a1

Relevant memo file logs, creation loading etc

$ grep "2015-11/23/16-25-15.579" /opt/omero/server/OMERO.server/var/log/Blitz-0.log

2024-01-18 17:20:02,524 WARN  [              loci.formats.FormatHandler] (l.Server-0) parsing /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/008012001.flex
2024-01-18 17:20:04,213 DEBUG [                   loci.formats.Memoizer] (l.Server-0) saved to temp file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo16987755357726547062
2024-01-18 17:20:04,213 DEBUG [                   loci.formats.Memoizer] (l.Server-0) saved memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267401 bytes)
2024-01-18 17:20:04,213 INFO  [                ome.io.nio.PixelsService] (l.Server-0) Creating BfPixelBuffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex Series: 0
2024-01-18 17:20:05,266 INFO  [      ome.services.OmeroFilePathResolver] (l.Server-0) Metadata only file, resulting path: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-01-18 17:20:05,434 DEBUG [                   loci.formats.Memoizer] (l.Server-0) loaded memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267401 bytes)
2024-01-18 17:20:05,436 INFO  [                ome.io.nio.PixelsService] (l.Server-0) Creating BfPixelBuffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex Series: 0
2024-01-18 17:20:05,598 INFO  [      ome.services.OmeroFilePathResolver] (l.Server-5) Metadata only file, resulting path: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-01-18 17:20:05,695 DEBUG [                   loci.formats.Memoizer] (l.Server-5) loaded memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267401 bytes)
2024-01-18 17:20:05,697 INFO  [                ome.io.nio.PixelsService] (l.Server-5) Creating BfPixelBuffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex Series: 0
2024-01-18 17:20:06,285 INFO  [      ome.services.OmeroFilePathResolver] (l.Server-5) Metadata only file, resulting path: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-01-18 17:20:06,367 DEBUG [                   loci.formats.Memoizer] (l.Server-5) loaded memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267401 bytes)
2024-01-18 17:20:06,369 INFO  [                ome.io.nio.PixelsService] (l.Server-5) Creating BfPixelBuffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex Series: 0
2024-01-18 17:20:14,156 INFO  [      ome.services.OmeroFilePathResolver] (l.Server-2) Metadata only file, resulting path: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-01-18 17:20:14,228 DEBUG [                   loci.formats.Memoizer] (l.Server-2) loaded memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267401 bytes)
2024-01-18 17:20:14,230 ERROR [                ome.io.nio.PixelsService] (l.Server-2) Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-01-18 17:20:14,232 INFO  [        ome.services.util.ServiceHandler] (l.Server-2)  Excp:	ome.conditions.ResourceError: Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-01-18 17:20:14,232 INFO  [        ome.services.util.ServiceHandler] (l.Server-2)  Excp:	ome.conditions.ResourceError: Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex

@dgault dgault added the exclude label Feb 1, 2024
@dgault
Copy link
Member Author

dgault commented Feb 1, 2024

Excluding due to failures in jdk17 tests when saving memo files: https://merge-ci.openmicroscopy.org/jenkins/job/BIOFORMATS-test-folder/47958/console

@will-moore
Copy link
Member

I was reminded of this when cleaning up old tabs I have open....
It would be great if we could get this working in time for the NGFF upgrade since it requires memo file regeneration (best to combine the changes so we only have to regenerate memo files once).

@dgault dgault removed the exclude label Apr 8, 2024
@dgault dgault added exclude and removed exclude labels Apr 17, 2024
@will-moore
Copy link
Member

Since this PR is getting merged into builds now (e.g. today's https://merge-ci.openmicroscopy.org/jenkins/job/BIOFORMATS-push/45/console) tried testing again...

Testing on pilot_idrngff... Update from today's build of formats-gpl-8.0.0-SNAPSHOT.jar as described above... (Also updated ZarrReader to today's build).

As omero-server

wget https://merge-ci.openmicroscopy.org/jenkins/job/BIOFORMATS-build/45/label=testintegration/artifact/bio-formats-build/bioformats/components/formats-gpl/target/formats-gpl-8.0.0-SNAPSHOT.jar

mv formats-gpl-8.0.0-SNAPSHOT.jar formats-gpl-8.0.0-SNAPSHOT_b45.jar

rm OMERO.server/lib/server/formats-gpl.jar
rm OMERO.server/lib/client/formats-gpl.jar

cp formats-gpl-8.0.0-SNAPSHOT_b45.jar OMERO.server/lib/server/
cp formats-gpl-8.0.0-SNAPSHOT_b45.jar OMERO.server/lib/client/

Restarted server...

Tried viewing Preview panel of first Well from 2nd Acquisition of the first idr0001 Plate...
Looks like same error as above...

2024-04-22 12:29:57,155 INFO  [   o.s.b.repo.ManagedReaderSecurityCheck] (l.Server-5) noted managed repository cdf35825-def1-4580-8d0b-9c349b8f78d6
2024-04-22 12:29:57,501 DEBUG [                   loci.formats.Memoizer] (l.Server-5) saved to temp file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo14747644009559314075
2024-04-22 12:29:57,501 DEBUG [                   loci.formats.Memoizer] (l.Server-5) start[1713788997266] time[234] tag[loci.formats.Memoizer.saveMemo]
2024-04-22 12:29:57,501 DEBUG [                   loci.formats.Memoizer] (l.Server-5) saved memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267369 bytes)
2024-04-22 12:29:57,501 DEBUG [                   loci.formats.Memoizer] (l.Server-5) start[1713788925239] time[72261] tag[loci.formats.Memoizer.setId]
2024-04-22 12:29:57,505 ERROR [                ome.io.nio.PixelsService] (l.Server-5) Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
java.lang.IllegalArgumentException: Invalid series: 96  index=96
	at loci.formats.FormatReader.seriesToCoreIndex(FormatReader.java:1341)
	at loci.formats.FormatReader.setSeries(FormatReader.java:972)
	at loci.formats.ImageReader.setSeries(ImageReader.java:491)
	at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:375)
	at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:375)
	at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:375)
	at ome.io.bioformats.BfPixelBuffer.setSeries(BfPixelBuffer.java:125)
	at ome.io.nio.PixelsService.createBfPixelBuffer(PixelsService.java:898)

@will-moore
Copy link
Member

will-moore commented Apr 23, 2024

As discussed this morning, we need to be sure that the memo file is deleted, and we're not using a memo file generated before the fix was applied...

First plate:

rm -rf "/data/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo"

Tried viewing image from 3rd Acquisition of first plate Meas03...
Web returned:

    serverExceptionClass = ome.conditions.ResourceError
    message = Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
bash-4.2$ grep "16-25-15.579" /opt/omero/server/OMERO.server/var/log/Blitz-0.log
...
2024-04-23 09:39:12,690 INFO  [        ome.services.util.ServiceHandler] (.Server-14)  Rslt:	([demo_2/2015-11/23/16-25-15.579/Meas_03(2012-07-31_13-12-10)/, 005010001.flex, idr/filesets/idr0001-graml-sysgro/20151116-verified/JL_120731_S6A/Meas_01(2012-07-31_10-41-12)/00501], [demo_2/2015-11/23/16-25-15.579/Meas_03(2012-07-31_13-12-10)/, 005011001.flex, idr/filesets/idr0001-graml-sysgro/20151116-verified/JL_120731_S6A/Meas_01(2012-07-31_10-41-12)/00501], [demo_2/2015-11/23/16-25-15.579/Meas_03(2012-07-31_13-12-10)/, 005012001.flex, idr/filesets/idr0001-graml-sysgro/20151116-verified/JL_120731_S6A/Meas_01(2012-07-31_10-41-12)/00501], ... 573 more)
2024-04-23 09:42:04,461 INFO  [      ome.services.OmeroFilePathResolver] (l.Server-7) Metadata only file, resulting path: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-04-23 09:42:05,577 INFO  [                loci.formats.ImageReader] (l.Server-7) FlexReader initializing /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-04-23 09:42:05,578 INFO  [              loci.formats.FormatHandler] (l.Server-7) Looking for files that are in the same dataset as /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-04-23 09:42:05,735 WARN  [              loci.formats.FormatHandler] (l.Server-7) parsing /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-04-23 09:42:05,739 WARN  [              loci.formats.FormatHandler] (l.Server-7) parsing /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001002001.flex
...
2024-04-23 09:42:11,207 WARN  [              loci.formats.FormatHandler] (l.Server-7) parsing /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/008011001.flex
2024-04-23 09:42:11,254 WARN  [              loci.formats.FormatHandler] (l.Server-7) parsing /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/008012001.flex
2024-04-23 09:42:11,845 DEBUG [                   loci.formats.Memoizer] (l.Server-7) saved to temp file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo17264536529646091535
2024-04-23 09:42:11,845 DEBUG [                   loci.formats.Memoizer] (l.Server-7) saved memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267077 bytes)
2024-04-23 09:42:11,845 ERROR [                ome.io.nio.PixelsService] (l.Server-7) Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-04-23 09:42:11,848 INFO  [        ome.services.util.ServiceHandler] (l.Server-7)  Excp:	ome.conditions.ResourceError: Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
2024-04-23 09:42:11,848 INFO  [        ome.services.util.ServiceHandler] (l.Server-7)  Excp:	ome.conditions.ResourceError: Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
...

2024-04-23 09:42:11,666 INFO  [              loci.formats.FormatHandler] (l.Server-7) Parsing IFDs for well H12
2024-04-23 09:42:11,667 INFO  [              loci.formats.FormatHandler] (l.Server-7) Parsing .flex file (well H12, field -1)
2024-04-23 09:42:11,667 INFO  [              loci.formats.FormatHandler] (l.Server-7) Parsing XML in .flex file
2024-04-23 09:42:11,669 INFO  [              loci.formats.FormatHandler] (l.Server-7) Populating pixel scaling factors
2024-04-23 09:42:11,669 WARN  [              loci.formats.FormatHandler] (l.Server-7) mismatch between image count, names and factors (count=3072, names=32, factors=32)
2024-04-23 09:42:11,669 INFO  [              loci.formats.FormatHandler] (l.Server-7) Populating MetadataStore
2024-04-23 09:42:11,845 DEBUG [                   loci.formats.Memoizer] (l.Server-7) saved to temp file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo17264536529646091535
2024-04-23 09:42:11,845 DEBUG [                   loci.formats.Memoizer] (l.Server-7) start[1713865331760] time[84] tag[loci.formats.Memoizer.saveMemo]
2024-04-23 09:42:11,845 DEBUG [                   loci.formats.Memoizer] (l.Server-7) saved memo file: /data/OMERO/BioFormatsCache/data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/.001001001.flex.bfmemo (7267077 bytes)
2024-04-23 09:42:11,845 DEBUG [                   loci.formats.Memoizer] (l.Server-7) start[1713865324466] time[7378] tag[loci.formats.Memoizer.setId]
2024-04-23 09:42:11,845 ERROR [                ome.io.nio.PixelsService] (l.Server-7) Error instantiating pixel buffer: /data/OMERO/ManagedRepository/demo_2/2015-11/23/16-25-15.579/Meas_01(2012-07-31_10-41-12)/001001001.flex
java.lang.IllegalArgumentException: Invalid series: 192  index=96
	at loci.formats.FormatReader.seriesToCoreIndex(FormatReader.java:1355)
	at loci.formats.FormatReader.setSeries(FormatReader.java:972)
	at loci.formats.ImageReader.setSeries(ImageReader.java:493)
	at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:407)
	at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:407)
	at loci.formats.ReaderWrapper.setSeries(ReaderWrapper.java:407)
	at ome.io.bioformats.BfPixelBuffer.setSeries(BfPixelBuffer.java:125)
	at ome.io.nio.PixelsService.createBfPixelBuffer(PixelsService.java:898)
	at ome.io.nio.PixelsService._getPixelBuffer(PixelsService.java:653)

@dgault
Copy link
Member Author

dgault commented Apr 25, 2024

Excluding until the warning PR's have all been merged

@dgault dgault added exclude and removed exclude labels Apr 25, 2024
@dgault dgault added the exclude label May 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants