/** * cgb - created from the methods below? * * Retrieves how many bytes per pixel the current plane or section has. * @return the number of bytes per pixel. */ public String getPixelsType() { return FormatTools.getPixelTypeString(reader.getPixelType()); }
public void getPixelType(String[] pixelType) { pixelType[0] = FormatTools.getPixelTypeString(r.getPixelType()); }
public void getPixelType(String[] pixelType) { pixelType[0] = FormatTools.getPixelTypeString(r.getPixelType()); }
/** * Populates the given {@link MetadataStore}, for the specified series, using * the values from the provided {@link CoreMetadata}. * <p> * After calling this method, the metadata store will be sufficiently * populated for use with an {@link IFormatWriter} (assuming it is also a * {@link MetadataRetrieve}). * </p> */ public static void populateMetadata(MetadataStore store, int series, String imageName, CoreMetadata coreMeta) { final String pixelType = FormatTools.getPixelTypeString(coreMeta.pixelType); final int effSizeC = coreMeta.imageCount / coreMeta.sizeZ / coreMeta.sizeT; final int samplesPerPixel = coreMeta.sizeC / effSizeC; populateMetadata(store, null, series, imageName, coreMeta.littleEndian, coreMeta.dimensionOrder, pixelType, coreMeta.sizeX, coreMeta.sizeY, coreMeta.sizeZ, coreMeta.sizeC, coreMeta.sizeT, samplesPerPixel); }
/** * Populates the given {@link MetadataStore}, for the specified series, using * the values from the provided {@link CoreMetadata}. * <p> * After calling this method, the metadata store will be sufficiently * populated for use with an {@link IFormatWriter} (assuming it is also a * {@link MetadataRetrieve}). * </p> */ public static void populateMetadata(MetadataStore store, int series, String imageName, CoreMetadata coreMeta) { final String pixelType = FormatTools.getPixelTypeString(coreMeta.pixelType); final int effSizeC = coreMeta.imageCount / coreMeta.sizeZ / coreMeta.sizeT; final int samplesPerPixel = coreMeta.sizeC / effSizeC; populateMetadata(store, null, series, imageName, coreMeta.littleEndian, coreMeta.dimensionOrder, pixelType, coreMeta.sizeX, coreMeta.sizeY, coreMeta.sizeZ, coreMeta.sizeC, coreMeta.sizeT, samplesPerPixel); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(super.toString() + ":"); sb.append("\n\tsizeX = " + sizeX); sb.append("\n\tsizeY = " + sizeY); sb.append("\n\tsizeZ = " + sizeZ); sb.append("\n\tsizeC = " + sizeC); sb.append("\n\tsizeT = " + sizeT); sb.append("\n\tthumbSizeX = " + thumbSizeX); sb.append("\n\tthumbSizeY = " + thumbSizeY); sb.append("\n\tpixelType = " + FormatTools.getPixelTypeString(pixelType)); sb.append("\n\tbitsPerPixel = " + bitsPerPixel); sb.append("\n\timageCount = " + imageCount); sb.append("\n\tdimensionOrder = " + dimensionOrder); sb.append("\n\torderCertain = " + orderCertain); sb.append("\n\trgb = " + rgb); sb.append("\n\tlittleEndian = " + littleEndian); sb.append("\n\tinterleaved = " + interleaved); sb.append("\n\tindexed = " + indexed); sb.append("\n\tfalseColor = " + falseColor); sb.append("\n\tmetadataComplete = " + metadataComplete); sb.append("\n\tseriesMetadata = " + seriesMetadata.size() + " keys"); sb.append("\n\tthumbnail = " + thumbnail); return sb.toString(); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(super.toString() + ":"); sb.append("\n\tsizeX = " + sizeX); sb.append("\n\tsizeY = " + sizeY); sb.append("\n\tsizeZ = " + sizeZ); sb.append("\n\tsizeC = " + sizeC); sb.append("\n\tsizeT = " + sizeT); sb.append("\n\tthumbSizeX = " + thumbSizeX); sb.append("\n\tthumbSizeY = " + thumbSizeY); sb.append("\n\tpixelType = " + FormatTools.getPixelTypeString(pixelType)); sb.append("\n\tbitsPerPixel = " + bitsPerPixel); sb.append("\n\timageCount = " + imageCount); sb.append("\n\tdimensionOrder = " + dimensionOrder); sb.append("\n\torderCertain = " + orderCertain); sb.append("\n\trgb = " + rgb); sb.append("\n\tlittleEndian = " + littleEndian); sb.append("\n\tinterleaved = " + interleaved); sb.append("\n\tindexed = " + indexed); sb.append("\n\tfalseColor = " + falseColor); sb.append("\n\tmetadataComplete = " + metadataComplete); sb.append("\n\tseriesMetadata = " + seriesMetadata.size() + " keys"); sb.append("\n\tthumbnail = " + thumbnail); return sb.toString(); }
@Test(dataProvider = "dimZTC") public void testStitch(Integer[] dims) throws IOException, FormatException { // dims: ZCT dimensions for each individual file in the pattern // dimensions set to 1 must be spread out across a pattern block Integer[] patternDims = new Integer[] {1, 1, 1}; StringBuilder blocks = new StringBuilder(); for (int i = 0; i < dims.length; i++) { if (dims[i] == 1) { patternDims[i] = DIMS[i]; } blocks.append(mkBlock(DIM_TAGS[i], patternDims[i])); } List<String> filenames = new ArrayList<String>(); String tag; String ptString = FormatTools.getPixelTypeString(PIXEL_TYPE); for (List<Integer> idx: product(Arrays.asList(patternDims))) { tag = String.format("Z%dT%dC%d", idx.toArray(new Integer[idx.size()])); filenames.add(String.format( TEMPLATE, tag, ptString, SIZE_X, SIZE_Y, dims[0], dims[1], dims[2])); } String pattern = String.format(TEMPLATE, blocks.toString(), ptString, SIZE_X, SIZE_Y, dims[0], dims[1], dims[2]); check(pattern, filenames.toArray(new String[filenames.size()]), dims); }
filename.append(FormatTools.getPixelTypeString(pixelType)); filename.append("&sizeX="); filename.append(sizeX);
@Test(dataProvider = "pixelFeatures") public void testSpecialPixels(int pixelType, boolean little) throws Exception { String pt = FormatTools.getPixelTypeString(pixelType); int nSeries = 2; int sizeC = 3; int sizeZ = 4; int sizeT = 5; reader.setId(String.format( "foo&pixelType=%s&series=%s&sizeZ=%s&sizeC=%s&sizeT=%s&little=%s.fake", pt, nSeries, sizeZ, sizeC, sizeT, little)); reader.setSeries(1); int no = sizeC * sizeZ * sizeT - 1; byte[] plane = reader.openBytes(no); int[] exp = new int[] {1, no, sizeZ - 1, sizeC - 1, sizeT - 1}; assertEquals(FakeReader.readSpecialPixels(plane, pixelType, little), exp); if (pixelType == FormatTools.UINT8) { assertEquals(FakeReader.readSpecialPixels(plane), exp); } }
/** tests that a dataset has had its Z & T dimensions swapped */ private void swappedZtTest(ImagePlus imp, int pixType, boolean virtual, int originalZ, int originalC, int originalT) { LOGGER.debug("swappedZtTest() : virtual {} pixType {}", virtual, FormatTools.getPixelTypeString(pixType)); stackTest(imp,(originalZ*originalC*originalT)); ImageStack st = imp.getStack(); // verify that the dimensional extents were swapped final int actualSizeZ = imp.getNSlices(); final int actualSizeC = imp.getNChannels(); final int actualSizeT = imp.getNFrames(); assertEquals(originalT, actualSizeZ); // Z<->T swapped assertEquals(originalC, actualSizeC); assertEquals(originalZ, actualSizeT); // Z<->T swapped // verify that every plane appears in the swapped order int slice = 0; for (int tIndex = 0; tIndex < actualSizeT; tIndex++) { for (int zIndex = 0; zIndex < actualSizeZ; zIndex++) { for (int cIndex = 0; cIndex < actualSizeC; cIndex++) { int actualZ, actualC, actualT; ImageProcessor proc = st.getProcessor(++slice); actualZ = tIndex(proc); // Z<->T swapped actualC = cIndex(proc); actualT = zIndex(proc); // Z<->T swapped assertEquals(zIndex, actualZ); assertEquals(cIndex, actualC); assertEquals(tIndex, actualT); } } } }
FormatTools.getPixelTypeString(pixelType) + "'.");
boolean crop, double calib, int sizeC) final String pix = FormatTools.getPixelTypeString(pixelType); final String id = "autoscale&pixelType=" + pix + "&sizeX=" + WIDTH + "&sizeY=" + HEIGHT + "&sizeC=" + sizeC + ".fake";
@Test(groups = {"all", "fast", "automated"}) public void testPixelType() { if (config == null) throw new SkipException("No config tree"); String testName = "PixelType"; if (!initFile()) result(testName, false, "initFile"); for (int i=0; i<reader.getSeriesCount(); i++) { reader.setSeries(i); config.setSeries(i); if (reader.getPixelType() != FormatTools.pixelTypeFromString(config.getPixelType())) { result(testName, false, "Series " + i + " (expected " + config.getPixelType() + ", actual " + FormatTools.getPixelTypeString(reader.getPixelType()) + ")"); } } result(testName, true); }
public static void checkImage(TiffReader reader, Plane originalPlane, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression) throws FormatException, IOException { for (int s=0; s<reader.getSeriesCount(); s++) { reader.setSeries(s); assertEquals(reader.getSizeC(), rgbChannels); int imageCount = reader.isRGB() ? seriesCount * sizeT : rgbChannels * sizeT * seriesCount; assertEquals(reader.getImageCount(), imageCount); for (int image=0; image<reader.getImageCount(); image++) { byte[] readPlane = reader.openBytes(image); boolean lossy = compression.equals(COMPRESSION_JPEG) || compression.equals(COMPRESSION_J2K_LOSSY); boolean isJ2K = compression.equals(COMPRESSION_J2K) || compression.equals(COMPRESSION_J2K_LOSSY); boolean interleavedDiffs = interleaved || (isJ2K && !interleaved); if (!(lossy || interleavedDiffs)) { Plane newPlane = new Plane(readPlane, reader.isLittleEndian(), !reader.isInterleaved(), reader.getRGBChannelCount(), FormatTools.getPixelTypeString(reader.getPixelType())); assert(originalPlane.equals(newPlane)); } } } }
/** tests BF's options.setSwapDimensions() */ private void datasetSwapDimsTester(boolean virtual, int pixType, int x, int y, int z, int t) { LOGGER.debug("datsetSwapDimsTester() virtual = {} pixType = {}", virtual, FormatTools.getPixelTypeString(pixType)); int c = 3; ChannelOrder swappedOrder = ChannelOrder.TCZ; // original order is ZCT String path = constructFakeFilename("swapDims", pixType, x, y, z, c, t, -1, false, -1, false, -1); ImagePlus[] imps = null; try { ImporterOptions options = new ImporterOptions(); options.setAutoscale(false); options.setVirtual(virtual); options.setId(path); options.setSwapDimensions(true); options.setInputOrder(0, bfChanOrd(swappedOrder)); imps = BF.openImagePlus(options); } catch (IOException e) { fail(e.getMessage()); } catch (FormatException e) { fail(e.getMessage()); } impsCountTest(imps,1); ImagePlus imp = imps[0]; xyzctTest(imp,x,y,t,c,z); // Z<->T swapped swappedZtTest(imp,pixType,virtual,z,c,t); }
Plane newPlane = new Plane(readPlane, reader.isLittleEndian(), !reader.isInterleaved(), reader.getRGBChannelCount(), FormatTools.getPixelTypeString(reader.getPixelType()));
public static Plane writeImage(String file, int tileSize, boolean littleEndian, boolean interleaved, int rgbChannels, int seriesCount, int sizeT, String compression, int pixelType, boolean bigTiff) throws Exception { TiffWriter writer = new TiffWriter(); String pixelTypeString = FormatTools.getPixelTypeString(pixelType); writer.setMetadataRetrieve(createMetadata(pixelTypeString, rgbChannels, seriesCount, littleEndian, sizeT)); writer.setCompression(compression); writer.setInterleaved(interleaved); writer.setBigTiff(bigTiff); if (tileSize != 0) { writer.setTileSizeX(tileSize); writer.setTileSizeY(tileSize); } writer.setId(file); int bytes = FormatTools.getBytesPerPixel(pixelType); byte[] plane = getPlane(PLANE_WIDTH, PLANE_HEIGHT, bytes * rgbChannels); Plane originalPlane = new Plane(plane, littleEndian, !writer.isInterleaved(), rgbChannels, FormatTools.getPixelTypeString(pixelType)); for (int s=0; s<seriesCount; s++) { writer.setSeries(s); for (int t=0; t<sizeT; t++) { writer.saveBytes(t, plane); } } writer.close(); return originalPlane; }
public static void populatePixelsOnly(MetadataStore store, IFormatReader r) { int oldSeries = r.getSeries(); for (int i=0; i<r.getSeriesCount(); i++) { r.setSeries(i); String pixelType = FormatTools.getPixelTypeString(r.getPixelType()); populatePixelsOnly(store, i, r.isLittleEndian(), r.getDimensionOrder(), pixelType, r.getSizeX(), r.getSizeY(), r.getSizeZ(), r.getSizeC(), r.getSizeT(), r.getRGBChannelCount()); if (store instanceof IPyramidStore) { for (int res=1; res<r.getResolutionCount(); res++) { r.setResolution(res); ((IPyramidStore) store).setResolutionSizeX( new PositiveInteger(r.getSizeX()), i, res); ((IPyramidStore) store).setResolutionSizeY( new PositiveInteger(r.getSizeY()), i, res); } r.setResolution(0); } } r.setSeries(oldSeries); }
public static void populatePixelsOnly(MetadataStore store, IFormatReader r) { int oldSeries = r.getSeries(); for (int i=0; i<r.getSeriesCount(); i++) { r.setSeries(i); String pixelType = FormatTools.getPixelTypeString(r.getPixelType()); populatePixelsOnly(store, i, r.isLittleEndian(), r.getDimensionOrder(), pixelType, r.getSizeX(), r.getSizeY(), r.getSizeZ(), r.getSizeC(), r.getSizeT(), r.getRGBChannelCount()); if (store instanceof IPyramidStore) { for (int res=1; res<r.getResolutionCount(); res++) { r.setResolution(res); ((IPyramidStore) store).setResolutionSizeX( new PositiveInteger(r.getSizeX()), i, res); ((IPyramidStore) store).setResolutionSizeY( new PositiveInteger(r.getSizeY()), i, res); } r.setResolution(0); } } r.setSeries(oldSeries); }