private void addUserCommentMeta(Element imageNode, int image) throws FormatException { NodeList attachmentNodes = getNodes(imageNode, "User-Comment"); if (attachmentNodes == null) return; for (int i=0; i<attachmentNodes.getLength(); i++) { Node attachment = attachmentNodes.item(i); addSeriesMeta("User-Comment[" + i + "]", attachment.getTextContent()); if (i == 0 && descriptions[image] == null) { descriptions[image] = attachment.getTextContent(); } } }
if (!isRGB()) { int[] pos = getZCTCoords(no); lastChannel = realChannel[getTileIndex(series)][pos[1]]; int index = getTileIndex(series); if (index >= offsets.size()) { int bytes = FormatTools.getBytesPerPixel(getPixelType()); int bpp = bytes * getRGBChannelCount(); long planeSize = (long) getSizeX() * getSizeY() * bpp; long nextOffset = index + 1 < offsets.size() ? offsets.get(index + 1).longValue() : endPointer; int bytesToSkip = (int) (nextOffset - offset - planeSize * getImageCount()); bytesToSkip /= getSizeY(); if ((getSizeX() % 4) == 0) bytesToSkip = 0; if (offset + (planeSize + bytesToSkip * getSizeY()) * no >= in.length()) { seekStartOfPlane(no, offset, planeSize); readPlane(in, x, y, w, h, buf); in.skipBytes(bytesToSkip * getSizeY() * no); in.skipBytes(y * (getSizeX() * bpp + bytesToSkip)); for (int row=0; row<h; row++) { in.skipBytes(x * bpp); in.read(buf, row * w * bpp, w * bpp); in.skipBytes(bpp * (getSizeX() - w - x) + bytesToSkip);
private NodeList getChannelDescriptionNodes(Element root) { Element imageDescription = getImageDescription(root); Element channels = (Element) imageDescription.getElementsByTagName("Channels").item(0); return channels.getElementsByTagName("ChannelDescription"); }
private void translateTimestamps(Element imageNode, int image) throws FormatException NodeList timeStampLists = getNodes(imageNode, "TimeStampList"); if (timeStampLists == null) return; timestamps[image] = new Double[getImageCount()]; List<String> timeStamps = Arrays.asList(timeStampsRaw.split(" ")); for (int stamp = 0; stamp < timeStamps.size(); stamp++) { if (stamp < getImageCount()) { String timestamp = timeStamps.get(stamp); timestamps[image][stamp] = translateSingleTimestamp(timestamp); NodeList timestampNodes = getNodes(imageNode, "TimeStamp"); if (timestampNodes != null) { if (stamp < getImageCount()) { Element timestamp = (Element) timestampNodes.item(stamp); timestamps[image][stamp] = translateSingleTimestamp(timestamp);
private void translateMetadata(Element root) throws FormatException { Element realRoot = (Element) root.getChildNodes().item(0); NodeList toPrune = getNodes(realRoot, "LDM_Block_Sequential_Master"); if (toPrune != null) { for (int i=0; i<toPrune.getLength(); i++) { NodeList images = getNodes(realRoot, "Image"); List<Element> imageNodes = new ArrayList<Element>(); Long[] oldOffsets = null; setSeries(index); translateImageNames(image, index); translateImageNodes(image, index); translateAttachmentNodes(image, index); translateScannerSettings(image, index); translateFilterSettings(image, index); translateTimestamps(image, index); translateLaserLines(image, index); translateROIs(image, index); translateSingleROIs(image, index); translateDetectors(image, index); populateOriginalMetadata(image, nameStack); addUserCommentMeta(image, i); setSeries(0);
MetadataStore store = makeFilterMetadata(); translateMetadata(getMetadataRoot(xml)); setSeries(i); addSeriesMeta("Image name", imageNames[i]); setSeries(0); int index = getTileIndex(i); if (realChannel[index] != null) { continue; for (int i=0; i<getSeriesCount(); i++) { setSeries(i); int index = getTileIndex(i); while (channelNames != null && nextChannel < getEffectiveSizeC() && channelNames[index] != null && ((channelNames[index][nextChannel] == null || if (nextChannel < getEffectiveSizeC()) { String id = MetadataTools.createLSID("LightSource", i, laser); store.setChannelLightSourceSettingsID(id, i, nextChannel); if (detectors != null) { nextChannel = 0; int start = detectors.size() - getEffectiveSizeC();
ms.falseColor = true; NodeList channels = getChannelDescriptionNodes(imageNode); NodeList dimensions = getDimensionDescriptionNodes(imageNode); boolean oldPhysicalSize = useOldPhysicalSizeCalculation(); switch (id) { case 1: // X axis Arrays.sort(bytes); ms.dimensionOrder = "XY"; if (getRGBChannelCount() == 1 || getRGBChannelCount() == getSizeC()) { if (getRGBChannelCount() > 1) { ms.dimensionOrder += 'C';
initMetadata(xml); xml = null; if (offsets.size() > getSeriesCount()) { Long[] storedOffsets = offsets.toArray(new Long[offsets.size()]); offsets.clear(); int index = 0; for (int i=0; i<getSeriesCount(); i++) { setSeries(i); long nBytes = (long) FormatTools.getPlaneSize(this) * getImageCount(); long start = storedOffsets[index]; long end = index == storedOffsets.length - 1 ? in.length() : index++; setSeries(0);
!suffix.equals("LowInteger")) addSeriesMetaList(key.toString() + suffix, value); !attr.getName().equals("LowInteger")) addSeriesMeta(key.toString() + attr.getName(), attr.getValue()); Object child = children.item(i); if (child instanceof Element) { populateOriginalMetadata((Element) child, nameStack);
private void translateScannerSettings(Element imageNode, int image) throws FormatException NodeList scannerSettings = getNodes(imageNode, "ScannerSettingRecord"); if (scannerSettings == null) return; expTimes[image] = new Double[getEffectiveSizeC()]; gains[image] = new Double[getEffectiveSizeC()]; detectorOffsets[image] = new Double[getEffectiveSizeC()]; channelNames[image] = new String[getEffectiveSizeC()]; exWaves[image] = new Double[getEffectiveSizeC()]; detectorModels[image] = new ArrayList<String>(); addSeriesMeta("Reverse X orientation", "1".equals(value.trim())); addSeriesMeta("Reverse Y orientation", "1".equals(value.trim())); if (c < 0 || c >= getEffectiveSizeC()) { continue;
private void translateDetectors(Element imageNode, int image) throws FormatException NodeList definitions = getNodes(imageNode, "ATLConfocalSettingDefinition"); if (definitions == null) return; String parentName = definitionNode.getParentNode().getNodeName(); boolean isMaster = parentName.endsWith("Master"); NodeList detectors = getNodes(definitionNode, "Detector"); if (detectors == null) return; int count = 0; NodeList multibands = null; if (!isMaster) { multibands = getNodes(definitionNode, "MultiBand"); if (nextChannel < getEffectiveSizeC()) { if (gains[image] != null) { gains[image][nextChannel] = gain; for (int i=0; i<getEffectiveSizeC(); i++) { int index = i + channels.size() - getEffectiveSizeC(); if (index >= 0 && index < channels.size()) { if (channelNames[image][i] == null ||
private void translateFilterSettings(Element imageNode, int image) throws FormatException NodeList filterSettings = getNodes(imageNode, "FilterSettingRecord"); if (filterSettings == null) return; int channel = getChannelIndex(filterSetting); if (channel < 0) continue;
private void translateMetadata(Element root) throws FormatException { Element realRoot = (Element) root.getChildNodes().item(0); NodeList toPrune = getNodes(realRoot, "LDM_Block_Sequential_Master"); if (toPrune != null) { for (int i=0; i<toPrune.getLength(); i++) { NodeList images = getNodes(realRoot, "Image"); List<Element> imageNodes = new ArrayList<Element>(); Long[] oldOffsets = null; setSeries(index); translateImageNames(image, index); translateImageNodes(image, index); translateAttachmentNodes(image, index); translateScannerSettings(image, index); translateFilterSettings(image, index); translateTimestamps(image, index); translateLaserLines(image, index); translateROIs(image, index); translateSingleROIs(image, index); translateDetectors(image, index); populateOriginalMetadata(image, nameStack); addUserCommentMeta(image, i); setSeries(0);
MetadataStore store = makeFilterMetadata(); translateMetadata(getMetadataRoot(xml)); setSeries(i); addSeriesMeta("Image name", imageNames[i]); setSeries(0); int index = getTileIndex(i); if (realChannel[index] != null) { continue; for (int i=0; i<getSeriesCount(); i++) { setSeries(i); int index = getTileIndex(i); while (channelNames != null && nextChannel < getEffectiveSizeC() && channelNames[index] != null && ((channelNames[index][nextChannel] == null || if (nextChannel < getEffectiveSizeC()) { String id = MetadataTools.createLSID("LightSource", i, laser); store.setChannelLightSourceSettingsID(id, i, nextChannel); if (detectors != null) { nextChannel = 0; int start = detectors.size() - getEffectiveSizeC();
ms.falseColor = true; NodeList channels = getChannelDescriptionNodes(imageNode); NodeList dimensions = getDimensionDescriptionNodes(imageNode); boolean oldPhysicalSize = useOldPhysicalSizeCalculation(); switch (id) { case 1: // X axis Arrays.sort(bytes); ms.dimensionOrder = "XY"; if (getRGBChannelCount() == 1 || getRGBChannelCount() == getSizeC()) { if (getRGBChannelCount() > 1) { ms.dimensionOrder += 'C';
initMetadata(xml); xml = null; if (offsets.size() > getSeriesCount()) { Long[] storedOffsets = offsets.toArray(new Long[offsets.size()]); offsets.clear(); int index = 0; for (int i=0; i<getSeriesCount(); i++) { setSeries(i); long nBytes = (long) FormatTools.getPlaneSize(this) * getImageCount(); long start = storedOffsets[index]; long end = index == storedOffsets.length - 1 ? in.length() : index++; setSeries(0);
private void translateTimestamps(Element imageNode, int image) throws FormatException NodeList timeStampLists = getNodes(imageNode, "TimeStampList"); if (timeStampLists == null) return; timestamps[image] = new Double[getImageCount()]; List<String> timeStamps = Arrays.asList(timeStampsRaw.split(" ")); for (int stamp = 0; stamp < timeStamps.size(); stamp++) { if (stamp < getImageCount()) { String timestamp = timeStamps.get(stamp); timestamps[image][stamp] = translateSingleTimestamp(timestamp); NodeList timestampNodes = getNodes(imageNode, "TimeStamp"); if (timestampNodes != null) { if (stamp < getImageCount()) { Element timestamp = (Element) timestampNodes.item(stamp); timestamps[image][stamp] = translateSingleTimestamp(timestamp);
!suffix.equals("LowInteger")) addSeriesMetaList(key.toString() + suffix, value); !attr.getName().equals("LowInteger")) addSeriesMeta(key.toString() + attr.getName(), attr.getValue()); Object child = children.item(i); if (child instanceof Element) { populateOriginalMetadata((Element) child, nameStack);
private void translateScannerSettings(Element imageNode, int image) throws FormatException NodeList scannerSettings = getNodes(imageNode, "ScannerSettingRecord"); if (scannerSettings == null) return; expTimes[image] = new Double[getEffectiveSizeC()]; gains[image] = new Double[getEffectiveSizeC()]; detectorOffsets[image] = new Double[getEffectiveSizeC()]; channelNames[image] = new String[getEffectiveSizeC()]; exWaves[image] = new Double[getEffectiveSizeC()]; detectorModels[image] = new ArrayList<String>(); addSeriesMeta("Reverse X orientation", "1".equals(value.trim())); addSeriesMeta("Reverse Y orientation", "1".equals(value.trim())); if (c < 0 || c >= getEffectiveSizeC()) { continue;
private void translateDetectors(Element imageNode, int image) throws FormatException NodeList definitions = getNodes(imageNode, "ATLConfocalSettingDefinition"); if (definitions == null) return; String parentName = definitionNode.getParentNode().getNodeName(); boolean isMaster = parentName.endsWith("Master"); NodeList detectors = getNodes(definitionNode, "Detector"); if (detectors == null) return; int count = 0; NodeList multibands = null; if (!isMaster) { multibands = getNodes(definitionNode, "MultiBand"); if (nextChannel < getEffectiveSizeC()) { if (gains[image] != null) { gains[image][nextChannel] = gain; for (int i=0; i<getEffectiveSizeC(); i++) { int index = i + channels.size() - getEffectiveSizeC(); if (index >= 0 && index < channels.size()) { if (channelNames[image][i] == null ||