loci.formats.in

## Class BioRadReader

- java.lang.Object
- - loci.formats.FormatHandler
  - - loci.formats.FormatReader
    - - loci.formats.in.BioRadReader

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, ICompressedTileReader, IFormatHandler, IFormatReader, IMetadataConfigurable, IPyramidHandler

      public class BioRadReader
      extends FormatReader

  BioRadReader is the file format reader for Bio-Rad PIC files.
  Author:
    Curtis Rueden ctrueden at wisc.edu, Melissa Linkert melissa at glencoesoftware.com

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `BioRadReader.BioRadHandler` SAX handler for parsing XML.
    `(package private) class` | `BioRadReader.Note`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private boolean` | `brokenNotes`
    `private java.util.List<java.lang.Double>` | `gain`
    `private int` | `lastChannel`
    `private static boolean` | `LITTLE_ENDIAN` Always little endian.
    `private byte[][][]` | `lut`
    `static int` | `LUT_LENGTH`
    `private static java.lang.String[]` | `MERGE_NAMES` List of merge types.
    `static java.lang.String[]` | `NOTE_NAMES` List of note types.
    `static int` | `NOTE_TYPE_4D_SERIES`
    `static int` | `NOTE_TYPE_ARROW`
    `static int` | `NOTE_TYPE_COLLECT`
    `static int` | `NOTE_TYPE_FILE1`
    `static int` | `NOTE_TYPE_FILE2`
    `static int` | `NOTE_TYPE_LINE`
    `static int` | `NOTE_TYPE_LIVE`
    `static int` | `NOTE_TYPE_MERGE`
    `static int` | `NOTE_TYPE_NUMBER`
    `static int` | `NOTE_TYPE_SCALEBAR`
    `static int` | `NOTE_TYPE_STRUCTURE`
    `static int` | `NOTE_TYPE_THRUVIEW`
    `static int` | `NOTE_TYPE_USER`
    `static int` | `NOTE_TYPE_VARIABLE`
    `private java.util.List<BioRadReader.Note>` | `noteStrings`
    `private java.util.List<java.lang.Double>` | `offset`
    `private static int` | `PIC_FILE_ID` Numerical ID of a valid Bio-Rad PIC file.
    `static java.lang.String[]` | `PIC_SUFFIX`
    `private java.lang.String[]` | `picFiles`
    `static java.lang.String[]` | `STRUCTURE_LABELS_1` Structure labels.
    `static java.lang.String[]` | `STRUCTURE_LABELS_2`
    `static java.lang.String[]` | `STRUCTURE_LABELS_3`
    `static java.lang.String[]` | `STRUCTURE_LABELS_4`
    `static java.lang.String[]` | `STRUCTURE_LABELS_5`
    `static java.lang.String[]` | `STRUCTURE_LABELS_6`
    `private java.util.List<java.lang.String>` | `used`

    - ### Fields inherited from class loci.formats.FormatReader

      `core, coreIndex, datasetDescription, domains, fillColor, filterMetadata, flattenedResolutions, group, hasCompanionFiles, in, indexedAsRGB, metadata, metadataStore, normalizeData, resolution, saveOriginalMetadata, series, suffixNecessary, suffixSufficient, THUMBNAIL_DIMENSION`

    - ### Fields inherited from class loci.formats.FormatHandler

      `COMPRESSION_SUFFIXES, currentId, format, LOGGER, metadataOptions, suffixes`

    - ### Fields inherited from interface loci.formats.IFormatReader

      `CAN_GROUP, CANNOT_GROUP, MUST_GROUP`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BioRadReader()` Constructs a new BioRadReader.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close(boolean fileOnly)` Closes the currently open file.
    `int` | `fileGroupOption(java.lang.String id)` Returns an indication of whether the files in a multi-file dataset can be handled individually.
    `byte[][]` | `get8BitLookupTable()` Gets the 8-bit color lookup table associated with the most recently opened image.
    `int` | `getOptimalTileHeight()` Returns the optimal sub-image height for use with openBytes.
    `java.lang.String[]` | `getSeriesUsedFiles(boolean noPixels)` Returns an array of filenames needed to open the current series.
    `protected void` | `initFile(java.lang.String id)` Initializes the given file (parsing header information, etc.).
    `boolean` | `isSingleFile(java.lang.String id)` Returns true if the named file is expected to be the only file in the dataset.
    `boolean` | `isThisType(loci.common.RandomAccessInputStream stream)` Checks if the given stream is a valid stream for this file format.
    `boolean` | `isThisType(java.lang.String name, boolean open)` Checks if a file matches the type of this format reader.
    `byte[]` | `openBytes(int no, byte[] buf, int x, int y, int w, int h)` Obtains a sub-image of the specified image plane into a pre-allocated byte array.
    `private boolean` | `parseNotes(MetadataStore store)`
    `private void` | `readLookupTables(loci.common.RandomAccessInputStream s)` Read all lookup tables from the given file into the 'lut' variable.
    `private void` | `readNotes(loci.common.RandomAccessInputStream s, boolean add)` Read all of the note strings from the given file.

    - ### Methods inherited from class loci.formats.FormatReader

      `addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMetaList, addMeta, addMetaList, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMetaList, close, coreIndexToSeries, flattenHashtables, get16BitLookupTable, getAcquisitionMode, getAdvancedSeriesUsedFiles, getAdvancedUsedFiles, getArcType, getAvailableOptions, getBinning, getBitsPerPixel, getCompression, getContrastMethod, getCoreIndex, getCoreMetadataList, getCorrection, getCurrentCore, getCurrentFile, getDatasetStructureDescription, getDetectorType, getDimensionOrder, getDimensionOrder, getDomains, getEffectiveSizeC, getExperimentType, getFilamentType, getFillColor, getFillRule, getFilterType, getFontFamily, getFontStyle, getGlobalMeta, getGlobalMetadata, getIlluminationType, getImageCount, getImmersion, getIndex, getIndex, getLaserMedium, getLaserType, getMarker, getMedium, getMetadataStore, getMetadataStoreRoot, getMetadataValue, getMicrobeamManipulationType, getMicroscopeType, getModuloC, getModuloT, getModuloZ, getNamingConvention, getOptimalTileWidth, getPixelType, getPixelType, getPossibleDomains, getPulse, getRequiredDirectories, getResolution, getResolutionCount, getRGBChannelCount, getRotationTransform, getSeries, getSeriesCount, getSeriesMeta, getSeriesMetadata, getSeriesMetadataValue, getSeriesUsedFiles, getSizeC, getSizeT, getSizeX, getSizeY, getSizeZ, getThumbSizeX, getThumbSizeY, getTileColumns, getTileRows, getUnderlyingReaders, getUsedFiles, getUsedFiles, getZCTCoords, getZCTModuloCoords, hasCompanionFiles, hasFlattenedResolutions, isFalseColor, isGroupFiles, isIndexed, isInterleaved, isInterleaved, isLittleEndian, isMetadataComplete, isMetadataFiltered, isNormalized, isOrderCertain, isOriginalMetadataPopulated, isRGB, isThisType, isThisType, isThumbnailSeries, isUsedFile, makeFilterMetadata, openBytes, openBytes, openBytes, openPlane, openThumbBytes, readPlane, readPlane, readPlane, reopenFile, seriesToCoreIndex, setCoreIndex, setFillColor, setFlattenedResolutions, setGroupFiles, setId, setMetadataFiltered, setMetadataStore, setNormalized, setOriginalMetadataPopulated, setResolution, setSeries, updateMetadataLists`

    - ### Methods inherited from class loci.formats.FormatHandler

      `checkSuffix, checkSuffix, getFormat, getMetadataOptions, getNativeDataType, getSuffixes, getSupportedMetadataLevels, setMetadataOptions`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface loci.formats.IFormatHandler

      `getFormat, getNativeDataType, getSuffixes`

    - ### Methods inherited from interface loci.formats.IMetadataConfigurable

      `getMetadataOptions, getSupportedMetadataLevels, setMetadataOptions`

    - ### Methods inherited from interface loci.formats.ICompressedTileReader

      `getTileCodec, getTileCodecOptions, openCompressedBytes, openCompressedBytes`

- - ### Field Detail

    - #### PIC_FILE_ID

          private static final int PIC_FILE_ID

      Numerical ID of a valid Bio-Rad PIC file.
      See Also:
        Constant Field Values

    - #### LITTLE_ENDIAN

          private static final boolean LITTLE_ENDIAN

      Always little endian.
      See Also:
        Constant Field Values

    - #### MERGE_NAMES

          private static final java.lang.String[] MERGE_NAMES

      List of merge types.

    - #### NOTE_NAMES

          public static final java.lang.String[] NOTE_NAMES

      List of note types.

    - #### NOTE_TYPE_LIVE

          public static final int NOTE_TYPE_LIVE

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_FILE1

          public static final int NOTE_TYPE_FILE1

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_NUMBER

          public static final int NOTE_TYPE_NUMBER

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_USER

          public static final int NOTE_TYPE_USER

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_LINE

          public static final int NOTE_TYPE_LINE

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_COLLECT

          public static final int NOTE_TYPE_COLLECT

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_FILE2

          public static final int NOTE_TYPE_FILE2

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_SCALEBAR

          public static final int NOTE_TYPE_SCALEBAR

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_MERGE

          public static final int NOTE_TYPE_MERGE

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_THRUVIEW

          public static final int NOTE_TYPE_THRUVIEW

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_ARROW

          public static final int NOTE_TYPE_ARROW

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_VARIABLE

          public static final int NOTE_TYPE_VARIABLE

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_STRUCTURE

          public static final int NOTE_TYPE_STRUCTURE

      See Also:
        Constant Field Values

    - #### NOTE_TYPE_4D_SERIES

          public static final int NOTE_TYPE_4D_SERIES

      See Also:
        Constant Field Values

    - #### STRUCTURE_LABELS_1

          public static final java.lang.String[] STRUCTURE_LABELS_1

      Structure labels.

    - #### STRUCTURE_LABELS_2

          public static final java.lang.String[] STRUCTURE_LABELS_2

    - #### STRUCTURE_LABELS_3

          public static final java.lang.String[] STRUCTURE_LABELS_3

    - #### STRUCTURE_LABELS_4

          public static final java.lang.String[] STRUCTURE_LABELS_4

    - #### STRUCTURE_LABELS_5

          public static final java.lang.String[] STRUCTURE_LABELS_5

    - #### STRUCTURE_LABELS_6

          public static final java.lang.String[] STRUCTURE_LABELS_6

    - #### PIC_SUFFIX

          public static final java.lang.String[] PIC_SUFFIX

    - #### LUT_LENGTH

          public static final int LUT_LENGTH

      See Also:
        Constant Field Values

    - #### used

          private java.util.List<java.lang.String> used

    - #### picFiles

          private java.lang.String[] picFiles

    - #### lut

          private byte[][][] lut

    - #### lastChannel

          private int lastChannel

    - #### brokenNotes

          private boolean brokenNotes

    - #### noteStrings

          private java.util.List<BioRadReader.Note> noteStrings

    - #### offset

          private java.util.List<java.lang.Double> offset

    - #### gain

          private java.util.List<java.lang.Double> gain

  - ### Constructor Detail

    - #### BioRadReader

          public BioRadReader()

      Constructs a new BioRadReader.

  - ### Method Detail

    - #### getOptimalTileHeight

          public int getOptimalTileHeight()

      Description copied from interface: `IFormatReader`
      Returns the optimal sub-image height for use with openBytes.
      Specified by:
        `getOptimalTileHeight` in interface `IFormatReader`
      Overrides:
        `getOptimalTileHeight` in class `FormatReader`

    - #### isSingleFile

          public boolean isSingleFile(java.lang.String id)
                               throws FormatException,
                                      java.io.IOException

      Description copied from interface: `IFormatReader`
      Returns true if the named file is expected to be the only file in the dataset. For single-file formats, always returns true.
      Specified by:
        `isSingleFile` in interface `IFormatReader`
      Overrides:
        `isSingleFile` in class `FormatReader`
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### isThisType

          public boolean isThisType(java.lang.String name,
                                    boolean open)

      Description copied from class: `FormatReader`
      Checks if a file matches the type of this format reader. Checks filename suffixes against those known for this format. If the suffix check is inconclusive and the open parameter is true, the file is opened and tested with `FormatReader.isThisType(RandomAccessInputStream)`.
      Specified by:
        `isThisType` in interface `IFormatReader`
      Overrides:
        `isThisType` in class `FormatReader`
        `open` - If true, and the file extension is insufficient to determine the file type, the (existing) file is opened for further analysis.

    - #### isThisType

          public boolean isThisType(loci.common.RandomAccessInputStream stream)
                             throws java.io.IOException

      Description copied from interface: `IFormatReader`
      Checks if the given stream is a valid stream for this file format. The number of bytes read is format-dependent.
      Specified by:
        `isThisType` in interface `IFormatReader`
      Overrides:
        `isThisType` in class `FormatReader`
      Parameters:
        `stream` - A RandomAccessInputStream representing the file to check. The first byte in the stream is assumed to be the first byte in the file.
      Returns:
        true if the file represented by the stream can be read by this reader; false otherwise.
      Throws:
        `java.io.IOException`

    - #### fileGroupOption

          public int fileGroupOption(java.lang.String id)
                              throws FormatException,
                                     java.io.IOException

      Description copied from interface: `IFormatReader`
      Returns an indication of whether the files in a multi-file dataset can be handled individually. This method is only useful for formats and datasets which contain multiple files.
      Specified by:
        `fileGroupOption` in interface `IFormatReader`
      Overrides:
        `fileGroupOption` in class `FormatReader`
      Parameters:
        `id` - a file in the multi-file dataset
      Returns:
        an int indicating that we cannot, must, or might group the files. A return value of `FormatTools.MUST_GROUP` indicates that the files cannot be handled separately; the reader will always detect and read all files in the dataset. `FormatTools.CAN_GROUP` indicates that the files may be handled separately, but file grouping must then be disabled via `IFormatReader.setGroupFiles(boolean)`. `FormatTools.CANNOT_GROUP` indicates that the files must be handled separately; the reader will not attempt to read all files in the dataset (this is rare).
      Throws:
        `FormatException`
        `java.io.IOException`
      See Also:
        `FormatTools.MUST_GROUP`, `FormatTools.CAN_GROUP`, `FormatTools.CANNOT_GROUP`

    - #### get8BitLookupTable

          public byte[][] get8BitLookupTable()

      Description copied from interface: `IFormatReader`
      Gets the 8-bit color lookup table associated with the most recently opened image. If no image planes have been opened, or if `IFormatReader.isIndexed()` returns false, then this may return null. Also, if `IFormatReader.getPixelType()` returns anything other than `FormatTools.INT8` or `FormatTools.UINT8`, this method will return null.
      Specified by:
        `get8BitLookupTable` in interface `IFormatReader`
      Overrides:
        `get8BitLookupTable` in class `FormatReader`

    - #### getSeriesUsedFiles

          public java.lang.String[] getSeriesUsedFiles(boolean noPixels)

      Description copied from interface: `IFormatReader`
      Returns an array of filenames needed to open the current series. If the 'noPixels' flag is set, then only files that do not contain pixel data will be returned. The first element in the array is expected to be the path passed to `IFormatHandler.setId(String)`, if appropriate based upon 'noPixels'. The remaining elements are expected to be in a consistent order; if a directory listing is necessary to build the list then it should be sorted first.
      Specified by:
        `getSeriesUsedFiles` in interface `IFormatReader`
      Overrides:
        `getSeriesUsedFiles` in class `FormatReader`

    - #### openBytes

          public byte[] openBytes(int no,
                                  byte[] buf,
                                  int x,
                                  int y,
                                  int w,
                                  int h)
                           throws FormatException,
                                  java.io.IOException

      Description copied from interface: `IFormatReader`
      Obtains a sub-image of the specified image plane into a pre-allocated byte array.
      Specified by:
        `openBytes` in interface `IFormatReader`
      Specified by:
        `openBytes` in class `FormatReader`
      Parameters:
        `no` - the plane index within the current series.
        `buf` - a pre-allocated buffer.
        `x` - X coordinate of the upper-left corner of the sub-image
        `y` - Y coordinate of the upper-left corner of the sub-image
        `w` - width of the sub-image
        `h` - height of the sub-image
      Returns:
        the pre-allocated buffer `buf` for convenience.
      Throws:
        `FormatException` - if there was a problem parsing the metadata of the file.
        `java.io.IOException` - if there was a problem reading the file.
      See Also:
        `IFormatReader.openBytes(int, byte[], int, int, int, int)`

    - #### close

          public void close(boolean fileOnly)
                     throws java.io.IOException

      Description copied from interface: `IFormatReader`
      Closes the currently open file. If the flag is set, this is all that happens; if unset, it is equivalent to calling `Closeable.close()`.
      Specified by:
        `close` in interface `IFormatReader`
      Overrides:
        `close` in class `FormatReader`
      Throws:
        `java.io.IOException`

    - #### initFile

          protected void initFile(java.lang.String id)
                           throws FormatException,
                                  java.io.IOException

      Description copied from class: `FormatReader`
      Initializes the given file (parsing header information, etc.). Most subclasses should override this method to perform initialization operations such as parsing metadata.
      Overrides:
        `initFile` in class `FormatReader`
      Throws:
        `FormatException` - if a parsing error occurs processing the file.
        `java.io.IOException` - if an I/O error occurs processing the file

    - #### readNotes

          private void readNotes(loci.common.RandomAccessInputStream s,
                                 boolean add)
                          throws java.io.IOException

      Read all of the note strings from the given file. If the 'add' flag is set, the notes will be added to the 'noteStrings' list.
      Throws:
        `java.io.IOException`

    - #### parseNotes

          private boolean parseNotes(MetadataStore store)
                              throws FormatException

      Throws:
        `FormatException`

    - #### readLookupTables

          private void readLookupTables(loci.common.RandomAccessInputStream s)
                                 throws java.io.IOException

      Read all lookup tables from the given file into the 'lut' variable.
      Throws:
        `java.io.IOException`

Copyright © 2026 Open Microscopy Environment