Class SDTReader

All Implemented Interfaces:
Closeable, AutoCloseable, ICompressedTileReader, IFormatHandler, IFormatReader, IMetadataConfigurable, IPyramidHandler

public class SDTReader extends FormatReader
SDTReader is the file format reader for Becker & Hickl SPC-Image SDT files.
Author:
Curtis Rueden ctrueden at wisc.edu Please Note: This format holds FLIM data arranged so that each decay is stored contiguously. Therefore, as in other FLIM format readers e.g. SDTReader.java, on the first call to openBytes the whole data cube (x, y, t) (NB actually t, not real-time T) is loaded from the file and buffered. On further calls to openBytes the appropriate 2D (x, y) plane (timebin) is returned from this buffer. This is in the interest of significantly improved performance when all the planes are requested one after another. There will be a performance cost if a single plane is requested but this is highly unlikely for FLIM data. In order to limit the size of the buffer, beyond a certain size threshold only a subset of planes (a Block) are retained in the buffer.
  • Field Details

    • info

      protected SDTInfo info
      Object containing SDT header information.
    • timeBins

      protected int timeBins
      Number of time bins in lifetime histogram.
    • channels

      protected int channels
      Number of spectral channels.
    • intensity

      protected boolean intensity
      Whether to combine lifetime bins into single intensity image planes.
    • preLoad

      protected boolean preLoad
      Whether to pre-load all lifetime bins for faster loading.
    • storedChannel

      protected int storedChannel
    • storedSeries

      protected int storedSeries
    • dataStore

      protected byte[] dataStore
    • currentBlock

      protected int currentBlock
      Block of time bins currently stored for faster loading.
    • blockLength

      protected int blockLength
      No of timeBins pre-loaded as a block
  • Constructor Details

    • SDTReader

      public SDTReader()
      Constructs a new SDT reader.
  • Method Details

    • setIntensity

      public void setIntensity(boolean intensity)
      Toggles whether the reader should return intensity data only (the sum of each lifetime histogram).
    • setPreLoad

      public void setPreLoad(boolean preLoad)
      Toggles whether the reader should pre-load data for increased performance.
    • isIntensity

      public boolean isIntensity()
      Gets whether the reader is combining each lifetime histogram into a summed intensity image plane.
    • getTimeBinCount

      public int getTimeBinCount()
      Gets the number of bins in the lifetime histogram.
    • getChannelCount

      public int getChannelCount()
      Gets the number of spectral channels.
    • getInfo

      public SDTInfo getInfo()
      Gets object containing SDT header information.
    • 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
    • openBytes

      public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, 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.
      IOException - if there was a problem reading the file.
      See Also:
    • close

      public void close(boolean fileOnly) throws 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:
      IOException
    • initFile

      protected void initFile(String id) throws FormatException, 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.
      IOException - if an I/O error occurs processing the file
    • readPixels

      private void readPixels(byte[] rowBuf, loci.common.RandomAccessInputStream in, ZipInputStream codec, long skip) throws IOException
      Throws:
      IOException