public class CellVoyagerReader extends FormatReader
This reader opens the dataset generated by the Yokagawa Cellvoyager automated
microscope. The user should point the reader to the file named
MeasurementResult.xml in the dataset folder.
The file format itself consists of several nested folder containing a lot of - sometimes redundant - information. This specific reader exploits the following files:
MeasurementResult.xml that contains high level information
about image geometry, well (if any) organization, fields arrangement, etc..
MeasurementResult.ome.xml is a malformed OME xml file that
contains information on one of the numerous TIF files that compose the pixel
data. It is used to easily extract common metadata.
Image folder: They contain the
pixel data itself. Each well (if any) can have several Areas (fields in the
HCS vocable), in turn composed of several tiles that are to be stitched
border to border, without the possibility of a more subtle stitching process.
This reader version was derived from reverse-engineering data files generated
on a system hosted by the imaging facility of the Institut Pasteur, Paris
(Imagopole / PFID). It spits file versioned 1.0. The file format
contains several obvious typos, notably in some XML tags, and as mentionned
above, the ome.xml is malformed. It is likely that that
subsequent versions of the CellVoyager format will fix these problems, alas
incapacitating this reader. Should it happen, mail the author to help them
update this reader.
| Modifier and Type | Class and Description |
|---|---|
private static class |
CellVoyagerReader.AreaInfo |
private static class |
CellVoyagerReader.ChannelInfo |
private static class |
CellVoyagerReader.FieldInfo |
private static class |
CellVoyagerReader.WellInfo |
| Modifier and Type | Field and Description |
|---|---|
private java.util.List<CellVoyagerReader.ChannelInfo> |
channelInfos |
private java.lang.String |
imageFolder |
private java.lang.String |
measurementResultFile |
private java.lang.String |
omeMeasurementFile |
private static java.lang.String |
SINGLE_TIFF_PATH_BUILDER |
private java.util.List<java.lang.Integer> |
timePoints |
private java.util.List<CellVoyagerReader.WellInfo> |
wells |
core, coreIndex, datasetDescription, domains, fillColor, filterMetadata, flattenedResolutions, group, hasCompanionFiles, in, indexedAsRGB, metadata, metadataStore, normalizeData, resolution, saveOriginalMetadata, series, suffixNecessary, suffixSufficient, THUMBNAIL_DIMENSIONCOMPRESSION_SUFFIXES, currentId, format, LOGGER, metadataOptions, suffixesCAN_GROUP, CANNOT_GROUP, MUST_GROUP| Constructor and Description |
|---|
CellVoyagerReader() |
| Modifier and Type | Method and Description |
|---|---|
int |
fileGroupOption(java.lang.String id)
Returns an indication of whether the files in a multi-file dataset can
be handled individually.
|
private static org.w3c.dom.Element |
getChild(org.w3c.dom.Element parent,
java.lang.String childName) |
private static org.w3c.dom.Element |
getChild(org.w3c.dom.Element parent,
java.lang.String[] path) |
private static java.util.List<org.w3c.dom.Element> |
getChildren(org.w3c.dom.Element parent,
java.lang.String name) |
private static java.lang.String |
getChildText(org.w3c.dom.Element parent,
java.lang.String childName) |
private static java.lang.String |
getChildText(org.w3c.dom.Element parent,
java.lang.String[] path) |
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.
|
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(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 CellVoyagerReader.AreaInfo |
readArea(org.w3c.dom.Element areaEl,
int startingFieldIndex,
double pixelWidth,
double pixelHeight,
int tileWidth,
int tileHeight) |
private CellVoyagerReader.ChannelInfo |
readChannel(org.w3c.dom.Element channelEl) |
private CellVoyagerReader.FieldInfo |
readField(org.w3c.dom.Element fieldEl) |
private double |
readFrameInterval(org.w3c.dom.Document document) |
private void |
readInfo(org.w3c.dom.Document msDocument,
org.w3c.dom.Document omeDocument) |
private java.util.List<java.lang.Integer> |
readTimePoints(org.w3c.dom.Document document) |
private CellVoyagerReader.WellInfo |
readWellInfo(org.w3c.dom.Element wellEl,
double pixelWidth,
double pixelHeight,
int tileWidth,
int tileHeight) |
private int[] |
seriesToWellArea(int series)
Returns the well index (in the field
wells) and the area index
(in the field CellVoyagerReader.WellInfo.areas corresponding to the specified
series. |
addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMeta, addGlobalMetaList, addMeta, addMetaList, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMeta, addSeriesMetaList, close, 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, getOptimalTileHeight, getOptimalTileWidth, 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, 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, updateMetadataListscheckSuffix, checkSuffix, getFormat, getMetadataOptions, getNativeDataType, getSuffixes, getSupportedMetadataLevels, setMetadataOptionsclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetFormat, getNativeDataType, getSuffixesgetMetadataOptions, getSupportedMetadataLevels, setMetadataOptionsgetTileCodec, getTileCodecOptions, openCompressedBytes, openCompressedBytesprivate static final java.lang.String SINGLE_TIFF_PATH_BUILDER
private java.lang.String imageFolder
private java.util.List<CellVoyagerReader.ChannelInfo> channelInfos
private java.util.List<CellVoyagerReader.WellInfo> wells
private java.util.List<java.lang.Integer> timePoints
private java.lang.String measurementResultFile
private java.lang.String omeMeasurementFile
public byte[] openBytes(int no,
byte[] buf,
int x,
int y,
int w,
int h)
throws FormatException,
java.io.IOException
IFormatReaderopenBytes in interface IFormatReaderopenBytes in class FormatReaderno - 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-imagebuf for convenience.FormatException - if there was a problem parsing the metadata of the
file.java.io.IOException - if there was a problem reading the file.public int fileGroupOption(java.lang.String id)
throws FormatException,
java.io.IOException
IFormatReaderfileGroupOption in interface IFormatReaderfileGroupOption in class FormatReaderid - a file in the multi-file datasetFormatTools.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).FormatExceptionjava.io.IOExceptionFormatTools.MUST_GROUP,
FormatTools.CAN_GROUP,
FormatTools.CANNOT_GROUPpublic int getRequiredDirectories(java.lang.String[] files)
throws FormatException,
java.io.IOException
IFormatReadergetRequiredDirectories in interface IFormatReadergetRequiredDirectories in class FormatReaderFormatExceptionjava.io.IOExceptionpublic boolean isSingleFile(java.lang.String id)
throws FormatException,
java.io.IOException
IFormatReaderisSingleFile in interface IFormatReaderisSingleFile in class FormatReaderFormatExceptionjava.io.IOExceptionpublic boolean isThisType(java.lang.String name,
boolean open)
FormatReaderFormatReader.isThisType(RandomAccessInputStream).isThisType in interface IFormatReaderisThisType in class FormatReaderopen - If true, and the file extension is insufficient to determine
the file type, the (existing) file is opened for further analysis.protected void initFile(java.lang.String id)
throws FormatException,
java.io.IOException
FormatReaderinitFile in class FormatReaderFormatException - if a parsing error occurs processing the file.java.io.IOException - if an I/O error occurs processing the filepublic java.lang.String[] getSeriesUsedFiles(boolean noPixels)
IFormatReaderIFormatHandler.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.getSeriesUsedFiles in interface IFormatReadergetSeriesUsedFiles in class FormatReaderprivate int[] seriesToWellArea(int series)
wells) and the area index
(in the field CellVoyagerReader.WellInfo.areas corresponding to the specified
series.series - the desired series.int[] { well, area }.private void readInfo(org.w3c.dom.Document msDocument,
org.w3c.dom.Document omeDocument)
throws FormatException
FormatExceptionprivate CellVoyagerReader.ChannelInfo readChannel(org.w3c.dom.Element channelEl)
private CellVoyagerReader.WellInfo readWellInfo(org.w3c.dom.Element wellEl, double pixelWidth, double pixelHeight, int tileWidth, int tileHeight)
private CellVoyagerReader.AreaInfo readArea(org.w3c.dom.Element areaEl, int startingFieldIndex, double pixelWidth, double pixelHeight, int tileWidth, int tileHeight)
private CellVoyagerReader.FieldInfo readField(org.w3c.dom.Element fieldEl)
private java.util.List<java.lang.Integer> readTimePoints(org.w3c.dom.Document document)
private double readFrameInterval(org.w3c.dom.Document document)
private static final org.w3c.dom.Element getChild(org.w3c.dom.Element parent,
java.lang.String childName)
private static final org.w3c.dom.Element getChild(org.w3c.dom.Element parent,
java.lang.String[] path)
private static final java.util.List<org.w3c.dom.Element> getChildren(org.w3c.dom.Element parent,
java.lang.String name)
private static final java.lang.String getChildText(org.w3c.dom.Element parent,
java.lang.String[] path)
private static final java.lang.String getChildText(org.w3c.dom.Element parent,
java.lang.String childName)
Copyright © 2025 Open Microscopy Environment