loci.formats.in

## Class ICSReader

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

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

      public class ICSReader
      extends FormatReader

  ICSReader is the file format reader for ICS (Image Cytometry Standard) files. More information on ICS can be found at http://libics.sourceforge.net TODO : remove sub-C logic once N-dimensional support is in place see http://dev.loci.wisc.edu/trac/java/ticket/398
  Author:
    Melissa Linkert melissa at glencoesoftware.com

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.util.Vector<java.lang.Integer>` | `channelLengths` The length of each channel axis.
    `private java.util.Vector<java.lang.String>` | `channelTypes` The type of each channel axis.
    `private java.lang.String` | `currentIcsId` Current filename.
    `private java.lang.String` | `currentIdsId`
    `private byte[]` | `data` Image data.
    `static java.lang.String[]` | `DATE_FORMATS`
    `private static java.lang.String[][]` | `DOCUMENT_KEYS`
    `private boolean` | `gzip` Whether or not the pixels are GZIP-compressed.
    `private java.util.zip.GZIPInputStream` | `gzipStream`
    `private boolean` | `hasInstrumentData`
    `private static java.lang.String[][]` | `HISTORY_KEYS`
    `private boolean` | `invertY` Whether or not the image is inverted along the Y axis.
    `private java.lang.String` | `labels` Dimensional reordering for lifetime data
    `private static java.lang.String[][]` | `LAYOUT_KEYS`
    `private boolean` | `lifetime` Whether or not the channels represent lifetime histogram bins.
    `static java.lang.String` | `NL` Newline characters.
    `private long` | `offset` Offset to pixel data.
    `private static java.lang.String[][]` | `OTHER_KEYS`
    `private static java.lang.String[][]` | `PARAMETER_KEYS`
    `private int` | `prevImage`
    `private static java.lang.String[][]` | `REPRESENTATION_KEYS`
    `private static java.lang.String[][]` | `SENSOR_KEYS`
    `private boolean` | `storedRGB`
    `private boolean` | `versionTwo` Flag indicating whether current file is v2.0.
    `private static java.lang.String[][]` | `VIEW_KEYS`

    - ### 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
    `ICSReader()` Constructs a new ICSReader.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `private boolean` | `checkUnit(java.lang.String actual, java.lang.String... expected)` Verifies that a unit matches the expected value.
    `void` | `close(boolean fileOnly)` Closes the currently open file.
    `private boolean` | `compareTokens(java.lang.String[] tokens, int tokenIndex, java.lang.String[] regexes, int regexesIndex)`
    `private java.lang.String` | `concatenateTokens(java.lang.String[] tokens, int start, int stop)`
    `int` | `fileGroupOption(java.lang.String id)` Returns an indication of whether the files in a multi-file dataset can be handled individually.
    `(package private) java.lang.String[]` | `findKeyValue(java.lang.String[] tokens, java.lang.String[][] regexesArray)`
    `private java.lang.String[]` | `findKeyValueForCategory(java.lang.String[] tokens, java.lang.String[][] regexesArray)`
    `private java.lang.String[]` | `findKeyValueOther(java.lang.String[] tokens, java.lang.String[][] regexesArray)`
    `java.lang.String[]` | `getDomains()` Returns the list of domains represented by the current file.
    `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` | `isInterleaved(int subC)` Gets whether or not the given sub-channel is interleaved.
    `boolean` | `isSingleFile(java.lang.String id)` Returns true if the named file is expected to be the only file in the dataset.
    `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.
    `void` | `reopenFile()` Reopen any files that were closed, and which are expected to be open while the reader is open.
    `private java.lang.Double[]` | `splitDoubles(java.lang.String v)` Splits the given string into a list of `Double`s.
    `private java.lang.String[]` | `tokenize(java.lang.String line)`

    - ### 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, get8BitLookupTable, getAcquisitionMode, getAdvancedSeriesUsedFiles, getAdvancedUsedFiles, getArcType, getAvailableOptions, getBinning, getBitsPerPixel, getCompression, getContrastMethod, getCoreIndex, getCoreMetadataList, getCorrection, getCurrentCore, getCurrentFile, getDatasetStructureDescription, getDetectorType, getDimensionOrder, getDimensionOrder, 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, getOptimalTileHeight, 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, isLittleEndian, isMetadataComplete, isMetadataFiltered, isNormalized, isOrderCertain, isOriginalMetadataPopulated, isRGB, isThisType, isThisType, isThisType, isThisType, isThumbnailSeries, isUsedFile, makeFilterMetadata, openBytes, openBytes, openBytes, openPlane, openThumbBytes, readPlane, readPlane, readPlane, 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

    - #### NL

          public static final java.lang.String NL

      Newline characters.
      See Also:
        Constant Field Values

    - #### DATE_FORMATS

          public static final java.lang.String[] DATE_FORMATS

    - #### DOCUMENT_KEYS

          private static final java.lang.String[][] DOCUMENT_KEYS

    - #### HISTORY_KEYS

          private static final java.lang.String[][] HISTORY_KEYS

    - #### LAYOUT_KEYS

          private static final java.lang.String[][] LAYOUT_KEYS

    - #### PARAMETER_KEYS

          private static final java.lang.String[][] PARAMETER_KEYS

    - #### REPRESENTATION_KEYS

          private static final java.lang.String[][] REPRESENTATION_KEYS

    - #### SENSOR_KEYS

          private static final java.lang.String[][] SENSOR_KEYS

    - #### VIEW_KEYS

          private static final java.lang.String[][] VIEW_KEYS

    - #### OTHER_KEYS

          private static java.lang.String[][] OTHER_KEYS

    - #### currentIcsId

          private java.lang.String currentIcsId

      Current filename.

    - #### currentIdsId

          private java.lang.String currentIdsId

    - #### versionTwo

          private boolean versionTwo

      Flag indicating whether current file is v2.0.

    - #### data

          private byte[] data

      Image data.

    - #### offset

          private long offset

      Offset to pixel data.

    - #### gzip

          private boolean gzip

      Whether or not the pixels are GZIP-compressed.

    - #### gzipStream

          private java.util.zip.GZIPInputStream gzipStream

    - #### invertY

          private boolean invertY

      Whether or not the image is inverted along the Y axis.

    - #### lifetime

          private boolean lifetime

      Whether or not the channels represent lifetime histogram bins.

    - #### labels

          private java.lang.String labels

      Dimensional reordering for lifetime data

    - #### channelLengths

          private java.util.Vector<java.lang.Integer> channelLengths

      The length of each channel axis.

    - #### channelTypes

          private java.util.Vector<java.lang.String> channelTypes

      The type of each channel axis.

    - #### prevImage

          private int prevImage

    - #### hasInstrumentData

          private boolean hasInstrumentData

    - #### storedRGB

          private boolean storedRGB

  - ### Constructor Detail

    - #### ICSReader

          public ICSReader()

      Constructs a new ICSReader.

  - ### Method Detail

    - #### 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`

    - #### getDomains

          public java.lang.String[] getDomains()

      Description copied from interface: `IFormatReader`
      Returns the list of domains represented by the current file.
      Specified by:
        `getDomains` in interface `IFormatReader`
      Overrides:
        `getDomains` in class `FormatReader`

    - #### isInterleaved

          public boolean isInterleaved(int subC)

      Description copied from interface: `IFormatReader`
      Gets whether or not the given sub-channel is interleaved. This method exists because some data with multiple rasterized sub-dimensions within C have one sub-dimension interleaved, and the other not—e.g., `SDTReader` handles spectral-lifetime data with interleaved lifetime bins and non-interleaved spectral channels.
      Specified by:
        `isInterleaved` in interface `IFormatReader`
      Overrides:
        `isInterleaved` in class `FormatReader`

    - #### 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`

    - #### 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)`

    - #### 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`

    - #### 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`

    - #### reopenFile

          public void reopenFile()
                          throws java.io.IOException

      Description copied from interface: `IFormatReader`
      Reopen any files that were closed, and which are expected to be open while the reader is open. This assumes that `IFormatHandler.setId(java.lang.String)` has been called, but close(false) has not been called.
      Specified by:
        `reopenFile` in interface `IFormatReader`
      Overrides:
        `reopenFile` 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

    - #### tokenize

          private java.lang.String[] tokenize(java.lang.String line)

    - #### findKeyValue

          java.lang.String[] findKeyValue(java.lang.String[] tokens,
                                          java.lang.String[][] regexesArray)

    - #### concatenateTokens

          private java.lang.String concatenateTokens(java.lang.String[] tokens,
                                                     int start,
                                                     int stop)

    - #### findKeyValueForCategory

          private java.lang.String[] findKeyValueForCategory(java.lang.String[] tokens,
                                                             java.lang.String[][] regexesArray)

    - #### findKeyValueOther

          private java.lang.String[] findKeyValueOther(java.lang.String[] tokens,
                                                       java.lang.String[][] regexesArray)

    - #### compareTokens

          private boolean compareTokens(java.lang.String[] tokens,
                                        int tokenIndex,
                                        java.lang.String[] regexes,
                                        int regexesIndex)

    - #### splitDoubles

          private java.lang.Double[] splitDoubles(java.lang.String v)

      Splits the given string into a list of `Double`s.

    - #### checkUnit

          private boolean checkUnit(java.lang.String actual,
                                    java.lang.String... expected)

      Verifies that a unit matches the expected value.

Copyright © 2026 Open Microscopy Environment