/** * Append keep to server map * * @param key * @param mapValue */ protected void mapFlexServer(String key, String mapValue) { try { FlexReader.appendServerMap(key, mapValue); log.info(String.format("Added Flex reader server map '%s' = '%s'.", key, mapValue)); // Temporarily catching Exception to fix build } catch (Exception e) { log.warn(String.format( "Unable to add Flex reader server map '%s' = '%s'", key, mapValue), e); } }
@Override protected void initFile(String id) throws FormatException, IOException { super.initFile(id); measurementFiles = new ArrayList<String>(); acquisitionDates = new HashMap<Integer, Timestamp>(); if (checkSuffix(id, FLEX_SUFFIX)) { initFlexFile(id); } else if (checkSuffix(id, RES_SUFFIX)) { initResFile(id); } else initMeaFile(id); if (plateCount == flexFiles.size()) { plateCount /= wellCount; if ((plateCount % fieldCount) == 0) { plateCount /= fieldCount; } } }
/** * Search for files that correspond to the given file. * If the given file is a .mea file, then the corresponding files will be * .res and .flex files. * If the given file is a .flex file, then the corresponding files will be * .res and .mea files. */ private String[] findFiles(Location baseFile) throws IOException { String[] suffixes = new String[0]; if (checkSuffix(baseFile.getName(), FLEX_SUFFIX)) { suffixes = new String[] {MEA_SUFFIX, RES_SUFFIX}; LOGGER.debug("Looking for files with the suffix '{}' or '{}'.", MEA_SUFFIX, RES_SUFFIX); } else if (checkSuffix(baseFile.getName(), MEA_SUFFIX)) { suffixes = new String[] {FLEX_SUFFIX, RES_SUFFIX}; LOGGER.debug("Looking for files with the suffix '{}' or '{}'.", FLEX_SUFFIX, RES_SUFFIX); } return findFiles(baseFile, suffixes); }
@Override public boolean isSingleFile(String id) throws FormatException, IOException { if (!checkSuffix(id, FLEX_SUFFIX)) return false; return serverMap.isEmpty() || !isGroupFiles(); }
FlexFile firstFile = lookupFile(0); FlexFile file = lookupFile(getSeries()); int[] pos = FormatTools.rasterToPosition(lengths, getSeries()); int imageNumber = file.offsets == null ? getImageCount() * pos[0] + no : 0; double factor = 0; try (RandomAccessInputStream s = new RandomAccessInputStream(getFileHandle(file.file))) { IFD ifd; if (file.offsets == null) { final int planeSize = getSizeX() * getSizeY() * getRGBChannelCount() * ifd.getBitsPerSample()[0] / 8; final int index = getImageCount() * pos[0] + no; long offset = (index == file.offsets.length - 1 ? s.length() : file.offsets[index + 1]) - offsets[0] - planeSize; bpp = FormatTools.getBytesPerPixel(getPixelType()); LOGGER.trace("first offset for series={} no={}: {}", getCoreIndex(), no, ifd.getStripOffsets()[0]); for (int i=num-1; i>=0; i--) { int q = nBytes == 1 ? buf[i] & 0xff : DataTools.bytesToInt(buf, i * nBytes, nBytes, isLittleEndian()); q = (int) (q * factor); DataTools.unpackBytes(q, buf, i * bpp, bpp, isLittleEndian());
try { String name = currentFile.getName(); int[] well = getWell(name); if (well[0] > nRows) nRows = well[0]; if (well[1] > nCols) nCols = well[1]; if (!isGroupFiles()) doGrouping = false; if (isGroupFiles()) { LOGGER.debug("Attempting to find files in the same dataset."); try { findFiles(currentFile); if (checkSuffix(f, RES_SUFFIX)) { parseResFile(f); MetadataStore store = makeFilterMetadata(); files.length); groupFiles(files, store); populateMetadataStore(store);
LOGGER.debug("Could not build .flex list from .mea."); LOGGER.info("Building list of valid .flex files"); String[] files = findFiles(file); if (files != null) { for (String f : files) { if (checkSuffix(f, FLEX_SUFFIX)) flex.add(f); String[] files = findFiles(file, new String[] {RES_SUFFIX}); if (files != null) { for (String f : files) { measurementFiles.add(f); parseResFile(f); MetadataStore store = makeFilterMetadata(); groupFiles(flex.toArray(new String[flex.size()]), store); populateMetadataStore(store);
FlexFile file = lookupFile(wellRow, wellCol, field < 0 ? 0 : field); if (file == null) return; populateCoreMetadata(wellRow, wellCol, field < 0 ? 0 : field, n); int totalPlanes = getSeriesCount() * getImageCount(); addGlobalMetaList("Name", ns); addGlobalMetaList("Factor", fs); core.get(i).pixelType = getPixelType();
Location currentFile = new Location(getCurrentFile()).getAbsoluteFile(); int[] lengths = new int[] {fieldCount, wellCount, plateCount}; for (int i=0; i<getSeriesCount(); i++) { int[] pos = FormatTools.rasterToPosition(lengths, i); String imageID = MetadataTools.createLSID("Image", i); if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { String instrumentID = MetadataTools.createLSID("Instrument", 0); store.setInstrumentID(instrumentID, 0); for (int i=0; i<getSeriesCount(); i++) { int[] pos = FormatTools.rasterToPosition(lengths, i); int seriesIndex = i * getImageCount(); if (seriesIndex < objectiveRefs.size()) { store.setObjectiveSettingsID(objectiveRefs.get(seriesIndex), i); for (int c=0; c<getEffectiveSizeC(); c++) { int channelIndex = seriesIndex + c; if (seriesIndex > 0 && channelNames.length == getEffectiveSizeC() * getSeriesCount()) { channelIndex = i * getEffectiveSizeC() + c; for (int c=0; c<getEffectiveSizeC(); c++) { int index = seriesIndex + c; if (index < cameraRefs.size()) { for (int image=0; image<getImageCount(); image++) { int plane = i * getImageCount() + image;
", column " + wellCol); CoreMetadata ms0 = core.get(0); if (getSizeC() == 0 && getSizeT() == 0) { if (fieldCount == 0 || (imageNames.size() % fieldCount) != 0) { fieldCount = 1; if (getSizeZ() == 0) ms0.sizeZ = 1; ms0.sizeT = imageNames.size() / (fieldCount * getSizeC() * getSizeZ()); if (getSizeC() == 0) { ms0.sizeC = (int) Math.max(channelNames.length, 1); if (getSizeZ() == 0) ms0.sizeZ = 1; if (getSizeT() == 0) ms0.sizeT = 1; if (plateCount == 0) plateCount = 1; if (wellCount == 0) wellCount = 1; FlexFile file = lookupFile(wellRow, wellCol, field); IFD ifd = file.ifds.get(0); int nPlanes = file.ifds.size(); ms0.imageCount = getSizeZ() * getSizeC() * getSizeT(); if (getImageCount() == imageNames.size()) { fieldCount = 1; if (getImageCount() * fieldCount != nPlanes && ((getImageCount() != nPlanes && nFiles > 1) || nFiles == 1))
int[] well = getWell(file); int field = getField(file); if (well[0] > nRows) nRows = well[0]; if (well[1] > nCols) nCols = well[1]; wellNumber[currentWell][1] = col; s = new RandomAccessInputStream(getFileHandle(file.file)); TiffParser tp = new TiffParser(s); parseFlexFile(currentWell, row, col, nFiles == 1 ? -1 : field, firstFile, store); s.close(); if (firstFile) firstFile = false;
/** Initialize the dataset from a .res file. */ private void initResFile(String id) throws FormatException, IOException { LOGGER.debug("initResFile({})", id); parseResFile(id); Location thisFile = new Location(id).getAbsoluteFile(); Location parent = thisFile.getParentFile(); LOGGER.debug(" Looking for an .mea file in {}", parent.getAbsolutePath()); String[] list = parent.list(); for (String file : list) { if (checkSuffix(file, MEA_SUFFIX)) { String mea = new Location(parent, file).getAbsolutePath(); LOGGER.debug(" Found .mea file {}", mea); initMeaFile(mea); if (!measurementFiles.contains(thisFile.getAbsolutePath())) { measurementFiles.add(thisFile.getAbsolutePath()); } return; } } throw new FormatException("Could not find an .mea file."); }
String lfile = file.toLowerCase(); String path = new Location(plateDir, file).getAbsolutePath(); if (checkSuffix(file, suffixes)) { fileList.add(path); LOGGER.debug("Found file {}", path); boolean foundSuffix = false; for (String file : fileList) { if (checkSuffix(file, suffix)) { foundSuffix = true; break; for (String file : fileList) { LOGGER.debug(" {}", file); if (checkSuffix(file, MEASUREMENT_SUFFIXES) && !measurementFiles.contains(file)) for (String file : fileList) { LOGGER.debug(" {}", file); if (checkSuffix(file, MEASUREMENT_SUFFIXES) && !measurementFiles.contains(file))
FlexFile firstFile = lookupFile(0); FlexFile file = lookupFile(getSeries()); int[] pos = FormatTools.rasterToPosition(lengths, getSeries()); int imageNumber = file.offsets == null ? getImageCount() * pos[0] + no : 0; double factor = 0; try (RandomAccessInputStream s = new RandomAccessInputStream(getFileHandle(file.file))) { IFD ifd; if (file.offsets == null) { final int planeSize = getSizeX() * getSizeY() * getRGBChannelCount() * ifd.getBitsPerSample()[0] / 8; final int index = getImageCount() * pos[0] + no; long offset = (index == file.offsets.length - 1 ? s.length() : file.offsets[index + 1]) - offsets[0] - planeSize; bpp = FormatTools.getBytesPerPixel(getPixelType()); LOGGER.trace("first offset for series={} no={}: {}", getCoreIndex(), no, ifd.getStripOffsets()[0]); for (int i=num-1; i>=0; i--) { int q = nBytes == 1 ? buf[i] & 0xff : DataTools.bytesToInt(buf, i * nBytes, nBytes, isLittleEndian()); q = (int) (q * factor); DataTools.unpackBytes(q, buf, i * bpp, bpp, isLittleEndian());
try { String name = currentFile.getName(); int[] well = getWell(name); if (well[0] > nRows) nRows = well[0]; if (well[1] > nCols) nCols = well[1]; if (!isGroupFiles()) doGrouping = false; if (isGroupFiles()) { LOGGER.debug("Attempting to find files in the same dataset."); try { findFiles(currentFile); if (checkSuffix(f, RES_SUFFIX)) { parseResFile(f); MetadataStore store = makeFilterMetadata(); files.length); groupFiles(files, store); populateMetadataStore(store);
LOGGER.debug("Could not build .flex list from .mea."); LOGGER.info("Building list of valid .flex files"); String[] files = findFiles(file); if (files != null) { for (String f : files) { if (checkSuffix(f, FLEX_SUFFIX)) flex.add(f); String[] files = findFiles(file, new String[] {RES_SUFFIX}); if (files != null) { for (String f : files) { measurementFiles.add(f); parseResFile(f); MetadataStore store = makeFilterMetadata(); groupFiles(flex.toArray(new String[flex.size()]), store); populateMetadataStore(store);
FlexFile file = lookupFile(wellRow, wellCol, field < 0 ? 0 : field); if (file == null) return; populateCoreMetadata(wellRow, wellCol, field < 0 ? 0 : field, n); int totalPlanes = getSeriesCount() * getImageCount(); addGlobalMetaList("Name", ns); addGlobalMetaList("Factor", fs); core.get(i).pixelType = getPixelType();
Location currentFile = new Location(getCurrentFile()).getAbsoluteFile(); int[] lengths = new int[] {fieldCount, wellCount, plateCount}; for (int i=0; i<getSeriesCount(); i++) { int[] pos = FormatTools.rasterToPosition(lengths, i); String imageID = MetadataTools.createLSID("Image", i); if (getMetadataOptions().getMetadataLevel() != MetadataLevel.MINIMUM) { String instrumentID = MetadataTools.createLSID("Instrument", 0); store.setInstrumentID(instrumentID, 0); for (int i=0; i<getSeriesCount(); i++) { int[] pos = FormatTools.rasterToPosition(lengths, i); int seriesIndex = i * getImageCount(); if (seriesIndex < objectiveRefs.size()) { store.setObjectiveSettingsID(objectiveRefs.get(seriesIndex), i); for (int c=0; c<getEffectiveSizeC(); c++) { int channelIndex = seriesIndex + c; if (seriesIndex > 0 && channelNames.length == getEffectiveSizeC() * getSeriesCount()) { channelIndex = i * getEffectiveSizeC() + c; for (int c=0; c<getEffectiveSizeC(); c++) { int index = seriesIndex + c; if (index < cameraRefs.size()) { for (int image=0; image<getImageCount(); image++) { int plane = i * getImageCount() + image;
", column " + wellCol); CoreMetadata ms0 = core.get(0); if (getSizeC() == 0 && getSizeT() == 0) { if (fieldCount == 0 || (imageNames.size() % fieldCount) != 0) { fieldCount = 1; if (getSizeZ() == 0) ms0.sizeZ = 1; ms0.sizeT = imageNames.size() / (fieldCount * getSizeC() * getSizeZ()); if (getSizeC() == 0) { ms0.sizeC = (int) Math.max(channelNames.length, 1); if (getSizeZ() == 0) ms0.sizeZ = 1; if (getSizeT() == 0) ms0.sizeT = 1; if (plateCount == 0) plateCount = 1; if (wellCount == 0) wellCount = 1; FlexFile file = lookupFile(wellRow, wellCol, field); IFD ifd = file.ifds.get(0); int nPlanes = file.ifds.size(); ms0.imageCount = getSizeZ() * getSizeC() * getSizeT(); if (getImageCount() == imageNames.size()) { fieldCount = 1; if (getImageCount() * fieldCount != nPlanes && ((getImageCount() != nPlanes && nFiles > 1) || nFiles == 1))
int[] well = getWell(file); int field = getField(file); if (well[0] > nRows) nRows = well[0]; if (well[1] > nCols) nCols = well[1]; wellNumber[currentWell][1] = col; s = new RandomAccessInputStream(getFileHandle(file.file)); TiffParser tp = new TiffParser(s); parseFlexFile(currentWell, row, col, nFiles == 1 ? -1 : field, firstFile, store); s.close(); if (firstFile) firstFile = false;