for (int z = 0; z < getSizeZ(); z++) { final int index = frameIndex(sequence, z, t, s); final Frame frame = sequence.getFrame(index); if (frame == null) { warnFrame(sequence, index);
/** Parses metadata from Prairie XML file. */ private void parseXML(final Document doc) { final Element pvScan = doc.getDocumentElement(); checkElement(pvScan, "PVScan"); // parse <PVStateShard> key/value block parsePVStateShard(pvScan, scanValues); // parse acquisition date date = attr(pvScan, "date"); // iterate over all Sequence elements final NodeList sequenceNodes = doc.getElementsByTagName("Sequence"); for (int s = 0; s < sequenceNodes.getLength(); s++) { final Element sequenceElement = el(sequenceNodes, s); if (sequenceElement == null) continue; final Sequence sequence = new Sequence(sequenceElement); if (firstSequence == null) firstSequence = sequence; final int cycle = sequence.getCycle(); if (cycle < cycleMin) cycleMin = cycle; if (cycle > cycleMax) cycleMax = cycle; sequences.put(cycle, sequence); } }
setSeries(s); final Sequence sequence = sequence(s); final Frame firstFrame = sequence.getFirstFrame(); for (int z = 0; z < getSizeZ(); z++) { final int index = frameIndex(tSequence, z, t, s); final Frame zFrame = tSequence.getFrame(index); if (zFrame == null) { warnFrame(sequence, index);
setSeries(s); final Sequence sequence = sequence(s); final Frame firstFrame = sequence.getFirstFrame(); for (int z = 0; z < getSizeZ(); z++) { final int index = frameIndex(tSequence, z, t, s); final Frame zFrame = tSequence.getFrame(index); if (zFrame == null) { warnFrame(sequence, index);
for (int s = 0; s < seriesCount; s++) { final Sequence sequence = sequence(0, s, seriesCount); final Frame frame = sequence.getFirstFrame(); final PFile file = frame == null ? null : frame.getFirstFile(); if (frame == null || file == null) { final int indexCount = sequence.getIndexCount(); framesAreTime[s] = sequence.isTimeSeries() && sizeT == 1;
for (int s = 0; s < seriesCount; s++) { final Sequence sequence = sequence(0, s, seriesCount); final Frame frame = sequence.getFirstFrame(); final PFile file = frame == null ? null : frame.getFirstFile(); if (frame == null || file == null) { final int indexCount = sequence.getIndexCount(); framesAreTime[s] = sequence.isTimeSeries() && sizeT == 1;
final Sequence initialSequence = sequence(0, p, sizeP); final int indexMin = initialSequence.getIndexMin(); final int indexCount = initialSequence.getIndexCount(); for (int z = 0; z < indexCount; z++) { final int index = z + indexMin; final Frame initialFrame = initialSequence.getFrame(index); if (initialFrame == null) { warnFrame(initialSequence, index); final Frame frame = sequence.getFrame(index); if (frame == null) { warnFrame(sequence, index);
final Sequence initialSequence = sequence(0, p, sizeP); final int indexMin = initialSequence.getIndexMin(); final int indexCount = initialSequence.getIndexCount(); for (int z = 0; z < indexCount; z++) { final int index = z + indexMin; final Frame initialFrame = initialSequence.getFrame(index); if (initialFrame == null) { warnFrame(initialSequence, index); final Frame frame = sequence.getFrame(index); if (frame == null) { warnFrame(sequence, index);
for (int z = 0; z < getSizeZ(); z++) { final int index = frameIndex(sequence, z, t, s); final Frame frame = sequence.getFrame(index); if (frame == null) { warnFrame(sequence, index);
/** * This steps populates the original metadata table (the tables returned by * {@link #getGlobalMetadata()} and {@link #getSeriesMetadata()}). */ private void populateOriginalMetadata() { final boolean minimumMetadata = isMinimumMetadata(); if (minimumMetadata) return; // populate global metadata addGlobalMeta("cycleCount", meta.getCycleCount()); addGlobalMeta("date", meta.getDate()); addGlobalMeta("waitTime", meta.getWaitTime()); addGlobalMeta("sequenceCount", sequences.size()); final ValueTable config = meta.getConfig(); for (final String key : config.keySet()) { addGlobalMeta(key, config.get(key).toString()); } addGlobalMeta("meta", meta); // populate series metadata final int seriesCount = getSeriesCount(); for (int s = 0; s < seriesCount; s++) { setSeries(s); final Sequence sequence = sequence(s); addSeriesMeta("cycle", sequence.getCycle()); addSeriesMeta("indexCount", sequence.getIndexCount()); addSeriesMeta("type", sequence.getType()); } setSeries(0); }
@Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); if (singleTiffMode) return tiff.openBytes(no, buf, x, y, w, h); // convert 1D index to (sequence, index, channel) coordinates. final int[] zct = getZCTCoords(no); final int z = zct[0], c = zct[1], t = zct[2]; final Sequence sequence = sequence(t, getSeries()); final int index = frameIndex(sequence, z, t, getSeries()); final Frame frame = sequence.getFrame(index); if (frame == null) { warnFrame(sequence, index); return blank(buf); } final int channel = channels[c]; final PFile file = frame.getFile(channel); if (file == null) { warnFile(sequence, index, channel); return blank(buf); } tiff.setId(getPath(file)); return tiff.openBytes(0, buf, x, y, w, h); }
/** * This steps populates the original metadata table (the tables returned by * {@link #getGlobalMetadata()} and {@link #getSeriesMetadata()}). */ private void populateOriginalMetadata() { final boolean minimumMetadata = isMinimumMetadata(); if (minimumMetadata) return; // populate global metadata addGlobalMeta("cycleCount", meta.getCycleCount()); addGlobalMeta("date", meta.getDate()); addGlobalMeta("waitTime", meta.getWaitTime()); addGlobalMeta("sequenceCount", sequences.size()); final ValueTable config = meta.getConfig(); for (final String key : config.keySet()) { addGlobalMeta(key, config.get(key).toString()); } addGlobalMeta("meta", meta); // populate series metadata final int seriesCount = getSeriesCount(); for (int s = 0; s < seriesCount; s++) { setSeries(s); final Sequence sequence = sequence(s); addSeriesMeta("cycle", sequence.getCycle()); addSeriesMeta("indexCount", sequence.getIndexCount()); addSeriesMeta("type", sequence.getType()); } setSeries(0); }
@Override public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) throws FormatException, IOException { FormatTools.checkPlaneParameters(this, no, buf.length, x, y, w, h); if (singleTiffMode) return tiff.openBytes(no, buf, x, y, w, h); // convert 1D index to (sequence, index, channel) coordinates. final int[] zct = getZCTCoords(no); final int z = zct[0], c = zct[1], t = zct[2]; final Sequence sequence = sequence(t, getSeries()); final int index = frameIndex(sequence, z, t, getSeries()); final Frame frame = sequence.getFrame(index); if (frame == null) { warnFrame(sequence, index); return blank(buf); } final int channel = channels[c]; final PFile file = frame.getFile(channel); if (file == null) { warnFile(sequence, index, channel); return blank(buf); } tiff.setId(getPath(file)); return tiff.openBytes(0, buf, x, y, w, h); }
/** Parses metadata from Prairie XML file. */ private void parseXML(final Document doc) { final Element pvScan = doc.getDocumentElement(); checkElement(pvScan, "PVScan"); // parse <PVStateShard> key/value block parsePVStateShard(pvScan, scanValues); // parse acquisition date date = attr(pvScan, "date"); // iterate over all Sequence elements final NodeList sequenceNodes = doc.getElementsByTagName("Sequence"); for (int s = 0; s < sequenceNodes.getLength(); s++) { final Element sequenceElement = el(sequenceNodes, s); if (sequenceElement == null) continue; final Sequence sequence = new Sequence(sequenceElement); if (firstSequence == null) firstSequence = sequence; final int cycle = sequence.getCycle(); if (cycle < cycleMin) cycleMin = cycle; if (cycle > cycleMax) cycleMax = cycle; sequences.put(cycle, sequence); } }
@Test public void testParseNewXML() throws ParserConfigurationException, SAXException, IOException { final Document xml = XMLTools.parseDOM(NEW_XML); final PrairieMetadata meta = new PrairieMetadata(xml, null, null); final ValueTable positionCurrent = (ValueTable) meta.getSequence(1).getFrame(1).getValue("positionCurrent"); final ValueTable xAxis = (ValueTable) positionCurrent.get("XAxis"); assertEquals("-621.412879412341", xAxis.value()); final ValueTable yAxis = (ValueTable) positionCurrent.get("YAxis"); assertEquals("255.652372573538", yAxis.value()); final ValueTable zAxis = (ValueTable) positionCurrent.get("ZAxis"); assertEquals("28.15", zAxis.get(0).value()); assertEquals("111.23", zAxis.get(1).value()); } }
@Test public void testParseOldXML() throws ParserConfigurationException, SAXException, IOException { final Document xml = XMLTools.parseDOM(OLD_XML); final PrairieMetadata meta = new PrairieMetadata(xml, null, null); final Value positionCurrent = meta.getSequence(1).getFrame(1).getValue("positionCurrent"); final Value xAxis = positionCurrent.get("XAxis"); assertEquals("0.95", xAxis.value()); final Value yAxis = positionCurrent.get("YAxis"); assertEquals("-4.45", yAxis.value()); final ValueTable zAxis = (ValueTable) positionCurrent.get("ZAxis"); assertEquals("-9", zAxis.get(0).value()); assertEquals("62.45", zAxis.get(1).value()); }
/** Emits a warning about a missing {@code <Frame>}. */ private void warnFrame(final Sequence sequence, final int index) { LOGGER.warn("No Frame at cycle #{}, index #{}", sequence.getCycle(), index); }
/** Emits a warning about a missing {@code <Frame>}. */ private void warnFrame(final Sequence sequence, final int index) { LOGGER.warn("No Frame at cycle #{}, index #{}", sequence.getCycle(), index); }
/** * Gets the {@code Frame} at the given ({@code cycle}, {@code index}, * {@code channel}). */ public PFile getFile(final int index, final int channel) { final Frame frame = getFrame(index); if (frame == null) return null; return frame.getFile(channel); }
/** * Gets the {@code value} of the given {@code key}, beneath this * {@code Frame}, inferring the value from the parent {@code <Sequence>} * or grandparent {@code <PVScan>} section as needed. */ public Value getValue(final String key) { if (frameValues.containsKey(key)) return frameValues.get(key); return getSequence().getValue(key); }