loci.formats.in

## Class MicromanagerReader

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

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

      public class MicromanagerReader
      extends FormatReader

  MicromanagerReader is the file format reader for Micro-Manager files.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `MicromanagerReader.Index`
    `(package private) class` | `MicromanagerReader.MicromanagerHandler` SAX handler for parsing Acqusition.xml.
    `(package private) class` | `MicromanagerReader.Position`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `DATE_FORMAT`
    `private static int` | `JSON_TAG`
    `private static int` | `MAX_MAJOR_VERSION` Defines maximum Micro-Manager version supported.
    `private static java.lang.String` | `MAX_VERSION`
    `private static java.lang.String` | `METADATA` File containing extra metadata.
    `private static int` | `MM_JSON_TAG`
    `private java.util.Vector<MicromanagerReader.Position>` | `positions`
    `private boolean` | `spim`
    `private int` | `start`
    `private MinimalTiffReader` | `tiffReader` Helper reader for TIFF files.
    `private static java.lang.String` | `XML` Optional file containing additional acquisition parameters.

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `private void` | `buildTIFFList(int posIndex)`
    `private void` | `buildTIFFList(int posIndex, java.lang.String baseTiff)` Populate the list of TIFF files using the given file name as a pattern.
    `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.
    `private java.lang.String` | `getNextLine(byte[] buf)`
    `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 java.lang.String` | `getPrefixMetadataName(java.lang.String baseName)`
    `java.lang.String[]` | `getSeriesUsedFiles(boolean noPixels)` Returns an array of filenames needed to open the current series.
    `private void` | `handleKeyValue(java.lang.String key, java.lang.String value)` Process a piece of metadata represented by a key/value pair.
    `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 void` | `parseKeyAndValue(java.lang.String key, java.lang.String value, int digits, int plane, int nPlanes)`
    `private void` | `parsePosition(int posIndex)`
    `private void` | `parsePosition(java.lang.String jsonData, int posIndex)`
    `private void` | `parseXMLFile()` Parse metadata values from the Acqusition.xml file.
    `private void` | `populateMetadata()`
    `void` | `populateMetadataStore(java.lang.String[] jsonData)`
    `private void` | `setupReader()` Initialize the TIFF reader with the first non-null file in the current series.

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

    - #### DATE_FORMAT

          public static final java.lang.String DATE_FORMAT

      See Also:
        Constant Field Values

    - #### METADATA

          private static final java.lang.String METADATA

      File containing extra metadata.
      See Also:
        Constant Field Values

    - #### JSON_TAG

          private static final int JSON_TAG

      See Also:
        Constant Field Values

    - #### MM_JSON_TAG

          private static final int MM_JSON_TAG

      See Also:
        Constant Field Values

    - #### MAX_MAJOR_VERSION

          private static final int MAX_MAJOR_VERSION

      Defines maximum Micro-Manager version supported. Anything acquired with a version after 1.4.22 (especially 2.x.x) is expected to not work reliably.
      See Also:
        Constant Field Values

    - #### MAX_VERSION

          private static final java.lang.String MAX_VERSION

      See Also:
        Constant Field Values

    - #### XML

          private static final java.lang.String XML

      Optional file containing additional acquisition parameters. (And yes, the spelling is correct.)
      See Also:
        Constant Field Values

    - #### tiffReader

          private MinimalTiffReader tiffReader

      Helper reader for TIFF files.

    - #### positions

          private java.util.Vector<MicromanagerReader.Position> positions

    - #### start

          private int start

    - #### spim

          private boolean spim

  - ### Constructor Detail

    - #### MicromanagerReader

          public MicromanagerReader()

      Constructs a new Micromanager reader.

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

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

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

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

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

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

          public 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

    - #### populateMetadata

          private void populateMetadata()
                                 throws FormatException,
                                        java.io.IOException

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

    - #### populateMetadataStore

          public void populateMetadataStore(java.lang.String[] jsonData)
                                     throws FormatException,
                                            java.io.IOException

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

    - #### parsePosition

          private void parsePosition(int posIndex)
                              throws java.io.IOException,
                                     FormatException

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

    - #### parseKeyAndValue

          private void parseKeyAndValue(java.lang.String key,
                                        java.lang.String value,
                                        int digits,
                                        int plane,
                                        int nPlanes)

    - #### buildTIFFList

          private void buildTIFFList(int posIndex)
                              throws FormatException

      Throws:
        `FormatException`

    - #### parsePosition

          private void parsePosition(java.lang.String jsonData,
                                     int posIndex)
                              throws java.io.IOException,
                                     FormatException

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

    - #### buildTIFFList

          private void buildTIFFList(int posIndex,
                                     java.lang.String baseTiff)

      Populate the list of TIFF files using the given file name as a pattern.

    - #### parseXMLFile

          private void parseXMLFile()
                             throws java.io.IOException

      Parse metadata values from the Acqusition.xml file.
      Throws:
        `java.io.IOException`

    - #### setupReader

          private void setupReader()

      Initialize the TIFF reader with the first non-null file in the current series.

    - #### getPrefixMetadataName

          private java.lang.String getPrefixMetadataName(java.lang.String baseName)

    - #### handleKeyValue

          private void handleKeyValue(java.lang.String key,
                                      java.lang.String value)

      Process a piece of metadata represented by a key/value pair. Mostly this just adds to the original metadata table, but is also helpful for handling specific keys consistently independent of which file/INI table the key and value came from.

    - #### getNextLine

          private java.lang.String getNextLine(byte[] buf)
                                        throws java.io.UnsupportedEncodingException

      Throws:
        `java.io.UnsupportedEncodingException`

Copyright © 2026 Open Microscopy Environment