loci.formats.in

## Class MIASReader

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

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

      public class MIASReader
      extends FormatReader

  MIASReader is the file format reader for Maia Scientific MIAS-2 datasets.
  Author:
    Melissa Linkert melissa at glencoesoftware.com

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `MIASReader.AnalysisFile`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private java.util.List<MIASReader.AnalysisFile>` | `analysisFiles`
    `private int[]` | `bpp`
    `private byte[]` | `cachedTileBuffer` Cached tile buffer to avoid re-allocations when reading tiles.
    `private java.util.Map<java.lang.String,java.lang.String>` | `overlayFiles`
    `private java.util.Map<java.lang.String,java.lang.Integer>` | `overlayPlanes`
    `private boolean` | `parseMasks` Whether or not mask pixel data should be parsed in setId.
    `private MinimalTiffReader[][]` | `readers` Delegate readers.
    `private java.lang.String` | `resultFile` Path to file containing analysis results for all plates.
    `private java.util.List<MIASReader.AnalysisFile>` | `roiFiles`
    `private java.lang.String` | `templateFile`
    `private java.lang.String[][]` | `tiffs` TIFF files - indexed by well and file.
    `private int` | `tileCols`
    `private int` | `tileHeight`
    `private int` | `tileRows`
    `private int` | `tileWidth`
    `private int` | `wellColumns`
    `private int[]` | `wellNumber`

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

  - ### 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.
    `short[][]` | `get16BitLookupTable()` Gets the 16-bit color lookup table associated with the most recently opened image.
    `byte[][]` | `get8BitLookupTable()` Gets the 8-bit color lookup table associated with the most recently opened image.
    `private ome.xml.model.primitives.Color` | `getChannelColorFromFile(java.lang.String file)` Get the color associated with the given file's channel.
    `int` | `getOptimalTileHeight()` Returns the optimal sub-image height for use with openBytes.
    `int` | `getOptimalTileWidth()` Returns the optimal sub-image width for use with openBytes.
    `private int[]` | `getPositionFromFile(java.lang.String file)` Returns an array of length 5 that contains the well, time point, Z and channel indices corresponding to the given analysis file.
    `int` | `getRequiredDirectories(java.lang.String[] files)` Returns the number of parent directories that are important when processing the given list of files.
    `java.lang.String[]` | `getSeriesUsedFiles(boolean noPixels)` Returns an array of filenames needed to open the current series.
    `private byte[]` | `getTile(int well, int no, int row, int col, loci.common.Region intersection)`
    `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 filename, 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.
    `void` | `parseMasks(MetadataStore overlayStore)` Parse masks into a separate overlay-specific MetadataStore.
    `private int` | `parseMasks(MetadataStore store, int series, int roi, java.lang.String overlayTiff)` Parse Mask ROIs from the given TIFF and place them in the given MetadataStore.
    `private void` | `parseTemplateFile(MetadataStore store)` Parse metadata from the Nugenesistemplate.txt file.
    `boolean` | `populateMaskPixels(int imageIndex, int roiIndex, int shapeIndex, MetadataStore store)` Populate the MaskPixels.BinData attribute for the Mask identified by the given Image index, ROI index, and Shape index.
    `private void` | `populateROI(java.util.List<java.lang.String> columns, java.lang.String[] data, int series, int roi, int time, int z, MetadataStore store)`
    `void` | `setAutomaticallyParseMasks(boolean parse)` Toggle whether or not Mask pixel data should be parsed in setId.

    - ### 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, 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, getPixelType, getPixelType, getPossibleDomains, getPulse, 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

    - #### tiffs

          private java.lang.String[][] tiffs

      TIFF files - indexed by well and file.

    - #### readers

          private MinimalTiffReader[][] readers

      Delegate readers.

    - #### resultFile

          private java.lang.String resultFile

      Path to file containing analysis results for all plates.

    - #### analysisFiles

          private java.util.List<MIASReader.AnalysisFile> analysisFiles

    - #### roiFiles

          private java.util.List<MIASReader.AnalysisFile> roiFiles

    - #### wellNumber

          private int[] wellNumber

    - #### tileRows

          private int tileRows

    - #### tileCols

          private int tileCols

    - #### tileWidth

          private int tileWidth

    - #### tileHeight

          private int tileHeight

    - #### wellColumns

          private int wellColumns

    - #### bpp

          private int[] bpp

    - #### templateFile

          private java.lang.String templateFile

    - #### overlayFiles

          private final java.util.Map<java.lang.String,java.lang.String> overlayFiles

    - #### overlayPlanes

          private final java.util.Map<java.lang.String,java.lang.Integer> overlayPlanes

    - #### parseMasks

          private boolean parseMasks

      Whether or not mask pixel data should be parsed in setId.

    - #### cachedTileBuffer

          private byte[] cachedTileBuffer

      Cached tile buffer to avoid re-allocations when reading tiles.

  - ### Constructor Detail

    - #### MIASReader

          public MIASReader()

      Constructs a new MIAS reader.

  - ### Method Detail

    - #### getRequiredDirectories

          public int getRequiredDirectories(java.lang.String[] files)
                                     throws FormatException,
                                            java.io.IOException

      Description copied from interface: `IFormatReader`
      Returns the number of parent directories that are important when processing the given list of files. The number of directories is relative to the common parent. For example, given a list with these two files: /path/to/file/foo /path/to/file/that/is/related A return value of 0 indicates that "/path/to/file/" is irrelevant. A return value of 1 indicates that "/path/to/" is irrelevant. Return values less than 0 are invalid. All listed files are assumed to belong to datasets of the same format.
      Specified by:
        `getRequiredDirectories` in interface `IFormatReader`
      Overrides:
        `getRequiredDirectories` in class `FormatReader`
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### 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 filename,
                                    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()
                                      throws FormatException,
                                             java.io.IOException

      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`
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### get16BitLookupTable

          public short[][] get16BitLookupTable()
                                        throws FormatException,
                                               java.io.IOException

      Description copied from interface: `IFormatReader`
      Gets the 16-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.INT16` or `FormatTools.UINT16`, this method will return null.
      Specified by:
        `get16BitLookupTable` in interface `IFormatReader`
      Overrides:
        `get16BitLookupTable` in class `FormatReader`
      Throws:
        `FormatException`
        `java.io.IOException`

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

    - #### getOptimalTileWidth

          public int getOptimalTileWidth()

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

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

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

    - #### getChannelColorFromFile

          private ome.xml.model.primitives.Color getChannelColorFromFile(java.lang.String file)
                                                                  throws FormatException,
                                                                         java.io.IOException

      Get the color associated with the given file's channel. The file must be one of the Well_mode_z_t_AllModesOverlay.tif files in //results/
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### getPositionFromFile

          private int[] getPositionFromFile(java.lang.String file)

      Returns an array of length 5 that contains the well, time point, Z and channel indices corresponding to the given analysis file.

    - #### populateROI

          private void populateROI(java.util.List<java.lang.String> columns,
                                   java.lang.String[] data,
                                   int series,
                                   int roi,
                                   int time,
                                   int z,
                                   MetadataStore store)

    - #### getTile

          private byte[] getTile(int well,
                                 int no,
                                 int row,
                                 int col,
                                 loci.common.Region intersection)
                          throws FormatException,
                                 java.io.IOException

      Throws:
        `FormatException`
        `java.io.IOException`

    - #### parseTemplateFile

          private void parseTemplateFile(MetadataStore store)
                                  throws java.io.IOException

      Parse metadata from the Nugenesistemplate.txt file.
      Throws:
        `java.io.IOException`

    - #### parseMasks

          public void parseMasks(MetadataStore overlayStore)
                          throws FormatException,
                                 java.io.IOException

      Parse masks into a separate overlay-specific MetadataStore.
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### parseMasks

          private int parseMasks(MetadataStore store,
                                 int series,
                                 int roi,
                                 java.lang.String overlayTiff)
                          throws FormatException,
                                 java.io.IOException

      Parse Mask ROIs from the given TIFF and place them in the given MetadataStore.
      Returns:
        the number of masks parsed
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### populateMaskPixels

          public boolean populateMaskPixels(int imageIndex,
                                            int roiIndex,
                                            int shapeIndex,
                                            MetadataStore store)
                                     throws FormatException,
                                            java.io.IOException

      Populate the MaskPixels.BinData attribute for the Mask identified by the given Image index, ROI index, and Shape index.
      Returns:
        true if the mask was populated successfully.
      Throws:
        `FormatException`
        `java.io.IOException`

    - #### setAutomaticallyParseMasks

          public void setAutomaticallyParseMasks(boolean parse)
                                          throws FormatException

      Toggle whether or not Mask pixel data should be parsed in setId. By default, it is not parsed.
      Throws:
        `FormatException`

Copyright © 2026 Open Microscopy Environment