Package loci.formats.in
Class TextReader
java.lang.Object
loci.formats.FormatHandler
loci.formats.FormatReader
loci.formats.in.TextReader
- All Implemented Interfaces:
Closeable,AutoCloseable,ICompressedTileReader,IFormatHandler,IFormatReader,IMetadataConfigurable,IPyramidHandler
Reader for text files containing tables of data. All image planes
are stored in memory as 32-bit floats until the file is closed,
so very large text documents will require commensurate available RAM.
Text format is flexible, but assumed to be in tabular form with a consistent
number of columns, and a labeled header line immediately preceding the data.
- Author:
- Curtis Rueden ctrueden at wisc.edu
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate String[]List of channel labels.private float[][]Because we have no way of indexing into the text file efficiently in general, we cheat and store the entire file's data in a giant array.private static final Stringprivate static final Stringprivate static final booleanprivate intCurrent row number.private intNumber of tokens per row.private intImage width.private intImage height.private static final longHow often to report progress during initialization, in milliseconds.private intColumn index for X coordinate.private intColumn index for Y coordinate.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_DIMENSIONFields inherited from class loci.formats.FormatHandler
COMPRESSION_SUFFIXES, currentId, format, LOGGER, metadataOptions, suffixesFields inherited from interface loci.formats.IFormatReader
CAN_GROUP, CANNOT_GROUP, MUST_GROUP -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidassignValues(double[] rowData) Assigns values from the given row into the data array.private longcheckTime(long time, int no, long pos, long len) voidclose(boolean fileOnly) Closes the currently open file.getChannelLabel(int c) Gets the label for the given channel.Class<?> Returns the native data type of image planes for this reader, as returned byIFormatReader.openPlane(int, int, int, int, int)orIFormatWriter.savePlane(int, java.lang.Object).private String[]getNextLine(List<String> lines) private booleangetRowData(String[] tokens, double[] rowData) Parses numerical row data from the given tokens.private intgetX(double[] rowData) private intgetY(double[] rowData) protected voidInitializes the given file (parsing header information, etc.).booleanisThisType(loci.common.RandomAccessInputStream stream) Checks if the given stream is a valid stream for this file format.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.openPlane(int no, int x, int y, int w, int h) Obtains the specified image plane (or sub-image thereof) in the reader's native data structure.private intparseFileHeader(List<String> lines) Parses the file looking for the file header.private voidparseHeaderRow(String[] tokens) Populates rowLength, xIndex, yIndex, and channels.private voidparseTableData(List<String> lines, int linesToSkip) Reads the tabular data into the data array.private voidpopulateCoreMetadata(int sizeX, int sizeY, int sizeZ, int sizeC, int sizeT) Populates theCoreMetadatavalues.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, fileGroupOption, 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, getOptimalTileHeight, getOptimalTileWidth, getPixelType, getPixelType, getPossibleDomains, getPulse, getRequiredDirectories, getResolution, getResolutionCount, getRGBChannelCount, getRotationTransform, getSeries, getSeriesCount, getSeriesMeta, getSeriesMetadata, getSeriesMetadataValue, getSeriesUsedFiles, 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, isSingleFile, isThisType, isThisType, isThisType, isThumbnailSeries, isUsedFile, makeFilterMetadata, openBytes, openBytes, openBytes, openThumbBytes, readPlane, readPlane, readPlane, reopenFile, seriesToCoreIndex, setCoreIndex, setFillColor, setFlattenedResolutions, setGroupFiles, setId, setMetadataFiltered, setMetadataStore, setNormalized, setOriginalMetadataPopulated, setResolution, setSeries, updateMetadataListsMethods inherited from class loci.formats.FormatHandler
checkSuffix, checkSuffix, getFormat, getMetadataOptions, getSuffixes, getSupportedMetadataLevels, setMetadataOptionsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface loci.formats.ICompressedTileReader
getTileCodec, getTileCodecOptions, openCompressedBytes, openCompressedBytesMethods inherited from interface loci.formats.IFormatHandler
getFormat, getSuffixesMethods inherited from interface loci.formats.IMetadataConfigurable
getMetadataOptions, getSupportedMetadataLevels, setMetadataOptions
-
Field Details
-
LITTLE_ENDIAN
private static final boolean LITTLE_ENDIAN- See Also:
-
LABEL_X
- See Also:
-
LABEL_Y
- See Also:
-
TIME_OFFSET
private static final long TIME_OFFSETHow often to report progress during initialization, in milliseconds.- See Also:
-
data
private float[][] dataBecause we have no way of indexing into the text file efficiently in general, we cheat and store the entire file's data in a giant array. -
row
private int rowCurrent row number. -
rowLength
private int rowLengthNumber of tokens per row. -
xIndex
private int xIndexColumn index for X coordinate. -
yIndex
private int yIndexColumn index for Y coordinate. -
channels
List of channel labels. -
sizeX
private int sizeXImage width. -
sizeY
private int sizeYImage height.
-
-
Constructor Details
-
TextReader
public TextReader()Constructs a new text reader.
-
-
Method Details
-
getChannelLabel
Gets the label for the given channel. -
isThisType
Description copied from interface:IFormatReaderChecks if the given stream is a valid stream for this file format. The number of bytes read is format-dependent.- Specified by:
isThisTypein interfaceIFormatReader- Overrides:
isThisTypein classFormatReader- 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:
IOException
-
openBytes
public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException Description copied from interface:IFormatReaderObtains a sub-image of the specified image plane into a pre-allocated byte array.- Specified by:
openBytesin interfaceIFormatReader- Specified by:
openBytesin classFormatReader- 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-imagey- Y coordinate of the upper-left corner of the sub-imagew- width of the sub-imageh- height of the sub-image- Returns:
- the pre-allocated buffer
buffor convenience. - Throws:
FormatException- if there was a problem parsing the metadata of the file.IOException- if there was a problem reading the file.
-
openPlane
Description copied from interface:IFormatReaderObtains the specified image plane (or sub-image thereof) in the reader's native data structure. For most readers this is a byte array; however, some readers call external APIs that work with other types such asBufferedImage. The openPlane method exists to maintain generality and efficiency while avoiding pollution of the API with AWT-specific logic.- Specified by:
openPlanein interfaceIFormatReader- Overrides:
openPlanein classFormatReader- Throws:
FormatExceptionIOException- See Also:
-
close
Description copied from interface:IFormatReaderCloses the currently open file. If the flag is set, this is all that happens; if unset, it is equivalent to callingCloseable.close().- Specified by:
closein interfaceIFormatReader- Overrides:
closein classFormatReader- Throws:
IOException
-
getNativeDataType
Description copied from interface:IFormatHandlerReturns the native data type of image planes for this reader, as returned byIFormatReader.openPlane(int, int, int, int, int)orIFormatWriter.savePlane(int, java.lang.Object). For most readers this type will be a byte array; however, some readers call external APIs that work with other types such asBufferedImage.- Specified by:
getNativeDataTypein interfaceIFormatHandler- Overrides:
getNativeDataTypein classFormatHandler
-
initFile
Description copied from class:FormatReaderInitializes the given file (parsing header information, etc.). Most subclasses should override this method to perform initialization operations such as parsing metadata.- Overrides:
initFilein classFormatReader- Throws:
FormatException- if a parsing error occurs processing the file.IOException- if an I/O error occurs processing the file
-
readFile
- Throws:
IOException
-
parseFileHeader
Parses the file looking for the file header. Determines image extents (sets sizeX and sizeY). Determines channel names (populates channels array).- Returns:
- number of rows in the header
- Throws:
FormatException
-
parseTableData
Reads the tabular data into the data array. -
populateCoreMetadata
private void populateCoreMetadata(int sizeX, int sizeY, int sizeZ, int sizeC, int sizeT) Populates theCoreMetadatavalues. -
getRowData
Parses numerical row data from the given tokens.- Parameters:
tokens- list of token strings to parserowData- array to fill in with the data; length must match tokens- Returns:
- true if the data could be parsed
-
parseHeaderRow
Populates rowLength, xIndex, yIndex, and channels. -
assignValues
private void assignValues(double[] rowData) Assigns values from the given row into the data array. -
checkTime
private long checkTime(long time, int no, long pos, long len) -
getX
private int getX(double[] rowData) -
getY
private int getY(double[] rowData) -
getNextLine
-