[ome-devel] ScanR dataset failed to load
Melissa Linkert
melissa at glencoesoftware.com
Thu Aug 23 09:16:53 BST 2012
Hi Rubén,
> I have obtained an ScanR dataset from a collaborator that failed to open with LOCI tools.
> The error reads as follows:
>
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
> at loci.formats.in.ScanrReader.initFile(ScanrReader.java:591)
> at loci.formats.FormatReader.setId(FormatReader.java:1091)
> at loci.plugins.in.ImportProcess.initializeFile(ImportProcess.java:480)
> at loci.plugins.in.ImportProcess.execute(ImportProcess.java:144)
> at loci.plugins.in.Importer.showDialogs(Importer.java:139)
> at loci.plugins.in.Importer.run(Importer.java:77)
> at loci.plugins.LociImporter.run(LociImporter.java:79)
> at ij.IJ.runUserPlugIn(IJ.java:183)
> at ij.IJ.runPlugIn(IJ.java:150)
>
> The example has been uploaded as 'TestPlate_Mock_01_001.zip' to your FTP if you would like to have a look.
> The cause is that in this particular experiment some (inner) fields were software-disabled. That was not tested with the importer before.
>
> One can identify these cases and correct the number of fields during conversion.
>
> A patch suggestion based on the current ScanrReader trunk version follows.
>
> In my opinion, the ScanR format defines in 'subposition list' the 'set of fields that are *really* acquired, whereas 'rows/well' and 'columns/well' are the the number of fields that are available.
As always, thanks for this.
I have turned your patch into a GitHub pull request:
https://github.com/openmicroscopy/bioformats/pull/125
We're in the middle of a new release (and I am in the middle of
travelling), so it will likely be a few days until this can be properly
reviewed. But it's now at least set up to be included in all of our
tests and development builds.
Regards,
-Melissa
On Wed, Aug 22, 2012 at 01:17:51PM +0200, Rubén Muñoz wrote:
> Hi Melissa,
>
> I have obtained an ScanR dataset from a collaborator that failed to open with LOCI tools.
> The error reads as follows:
>
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 4
> at loci.formats.in.ScanrReader.initFile(ScanrReader.java:591)
> at loci.formats.FormatReader.setId(FormatReader.java:1091)
> at loci.plugins.in.ImportProcess.initializeFile(ImportProcess.java:480)
> at loci.plugins.in.ImportProcess.execute(ImportProcess.java:144)
> at loci.plugins.in.Importer.showDialogs(Importer.java:139)
> at loci.plugins.in.Importer.run(Importer.java:77)
> at loci.plugins.LociImporter.run(LociImporter.java:79)
> at ij.IJ.runUserPlugIn(IJ.java:183)
> at ij.IJ.runPlugIn(IJ.java:150)
>
> The example has been uploaded as 'TestPlate_Mock_01_001.zip' to your FTP if you would like to have a look.
> The cause is that in this particular experiment some (inner) fields were software-disabled. That was not tested with the importer before.
>
> One can identify these cases and correct the number of fields during conversion.
>
> A patch suggestion based on the current ScanrReader trunk version follows.
>
> In my opinion, the ScanR format defines in 'subposition list' the 'set of fields that are *really* acquired, whereas 'rows/well' and 'columns/well' are the the number of fields that are available.
>
> Please let me know if I can help with some information,
>
> Best regards,
>
> Rubén
>
>
> ---------------------------------------
>
> diff --git a/components/bio-formats/src/loci/formats/in/ScanrReader.java b/components/bio-formats/src/loci/formats/in/Scanr
> index ff7e627..46bc53e 100644
> --- a/components/bio-formats/src/loci/formats/in/ScanrReader.java
> +++ b/components/bio-formats/src/loci/formats/in/ScanrReader.java
> @@ -92,6 +92,7 @@ public class ScanrReader extends FormatReader {
> private String[] tiffs;
> private MinimalTiffReader reader;
>
> + private boolean foundPositions = false;
> private double[] fieldPositionX;
> private double[] fieldPositionY;
> private Vector<Double> exposures = new Vector<Double>();
> @@ -358,7 +359,11 @@ public class ScanrReader extends FormatReader {
> int nSlices = getSizeZ() == 0 ? 1 : getSizeZ();
> int nTimepoints = getSizeT();
> int nWells = wellCount;
> - int nPos = fieldRows * fieldColumns;
> + int nPos = 0;
> + if (foundPositions)
> + nPos = fieldPositionX.length;
> + else
> + nPos = fieldRows * fieldColumns;
> if (nPos == 0) nPos = 1;
>
> // get list of TIFF files
> @@ -555,7 +560,11 @@ public class ScanrReader extends FormatReader {
> String plateAcqID = MetadataTools.createLSID("PlateAcquisition", 0, 0);
> store.setPlateAcquisitionID(plateAcqID, 0, 0);
>
> - int nFields = fieldRows * fieldColumns;
> + int nFields = 0;
> + if (foundPositions)
> + nFields = fieldPositionX.length;
> + else
> + nFields = fieldRows * fieldColumns;
>
> if (nFields > 0) {
> store.setPlateAcquisitionMaximumFieldCount(
> @@ -653,7 +662,6 @@ public class ScanrReader extends FormatReader {
> private String wellIndex;
>
> private boolean validChannel = false;
> - private boolean foundPositions = false;
> private boolean foundPlateLayout = false;
> private int nextXPos = 0;
> private int nextYPos = 0;
More information about the ome-devel
mailing list