<commit_before>//
// ReaderWrapper.java
//

/*
LOCI Bio-Formats package for reading and converting biological file formats.
Copyright (C) 2005-@year@ <NAME>, <NAME>, <NAME>,
<NAME> and <NAME>.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Library General Public License for more details.

You should have received a copy of the GNU Library General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

package loci.formats;

import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Hashtable;

/**
 * Abstract superclass of reader logic that wraps other readers.
 * All methods are simply delegated to the wrapped reader.
 *
 * <dl><dt><b>Source code:</b></dt>
 * <dd><a href="https://skyking.microscopy.wisc.edu/trac/java/browser/trunk/loci/formats/ReaderWrapper.java">Trac</a>,
 * <a href="https://skyking.microscopy.wisc.edu/svn/java/trunk/loci/formats/ReaderWrapper.java">SVN</a></dd></dl>
 */
public abstract class ReaderWrapper implements IFormatReader {

  // -- Fields --

  /** FormatReader used to read the file. */
  protected IFormatReader reader;

  // -- Constructors --

  /** Constructs a reader wrapper around a new image reader. */
  public ReaderWrapper() { this(new ImageReader()); }

  /** Constructs a reader wrapper around the given reader. */
  public ReaderWrapper(IFormatReader r) {
    if (r == null) {
      throw new IllegalArgumentException("Format reader cannot be null");
    }
    reader = r;
  }

  // -- ReaderWrapper API methods --

  /** Gets the wrapped reader. */
  public IFormatReader getReader() { return reader; }

  // -- IFormatReader API methods --

  public boolean isThisType(byte[] block) {
    return reader.isThisType(block);
  }

  public void setId(String id) throws FormatException, IOException {
    reader.setId(id);
  }

  public void setId(String id, boolean force)
    throws FormatException, IOException
  {
    reader.setId(id, force);
  }

  public int getImageCount() {
    return reader.getImageCount();
  }

  public boolean isRGB() {
    return reader.isRGB();
  }

  public int getSizeX() {
    return reader.getSizeX();
  }

  public int getSizeY() {
    return reader.getSizeY();
  }

  public int getSizeZ() {
    return reader.getSizeZ();
  }

  public int getSizeC() {
    return reader.getSizeC();
  }

  public int getSizeT() {
    return reader.getSizeT();
  }

  public int getPixelType() {
    return reader.getPixelType();
  }

  public int getEffectiveSizeC() {
    return getImageCount() / (getSizeZ() * getSizeT());
  }

  public int getRGBChannelCount() {
    return getSizeC() / getEffectiveSizeC();
  }

  public boolean isIndexed() {
    return reader.isIndexed();
  }

  public boolean isFalseColor() {
    return reader.isFalseColor();
  }

  public byte[][] get8BitLookupTable() throws FormatException, IOException {
    return reader.get8BitLookupTable();
  }

  public short[][] get16BitLookupTable() throws FormatException, IOException {
    return reader.get16BitLookupTable();
  }

  public int[] getChannelDimLengths() {
    return reader.getChannelDimLengths();
  }

  public String[] getChannelDimTypes() {
    return reader.getChannelDimTypes();
  }

  public int getThumbSizeX() {
    return reader.getThumbSizeX();
  }

  public int getThumbSizeY() {
    return reader.getThumbSizeY();
  }

  public boolean isLittleEndian() {
    return reader.isLittleEndian();
  }

  public String getDimensionOrder() {
    return reader.getDimensionOrder();
  }

  public boolean isOrderCertain() {
    return reader.isOrderCertain();
  }

  public boolean isInterleaved() {
    return reader.isInterleaved();
  }

  public boolean isInterleaved(int subC) {
    return reader.isInterleaved(subC);
  }

  public BufferedImage openImage(int no) throws FormatException, IOException {
    return reader.openImage(no);
  }

  public byte[] openBytes(int no) throws FormatException, IOException {
    return reader.openBytes(no);
  }

  public byte[] openBytes(int no, byte[] buf)
    throws FormatException, IOException
  {
    return reader.openBytes(no, buf);
  }

  public BufferedImage openThumbImage(int no)
    throws FormatException, IOException
  {
    return reader.openThumbImage(no);
  }

  public byte[] openThumbBytes(int no) throws FormatException, IOException {
    return reader.openThumbBytes(no);
  }

  public void close(boolean fileOnly) throws IOException {
    reader.close(fileOnly);
  }

  public void close() throws IOException {
    reader.close();
  }

  public int getSeriesCount() {
    return reader.getSeriesCount();
  }

  public void setSeries(int no) {
    reader.setSeries(no);
  }

  public int getSeries() {
    return reader.getSeries();
  }

  public void setGroupFiles(boolean group) {
    reader.setGroupFiles(group);
  }

  public boolean isGroupFiles() {
    return reader.isGroupFiles();
  }

  public int fileGroupOption(String id) throws FormatException, IOException {
    return reader.fileGroupOption(id);
  }

  public boolean isMetadataComplete() {
    return reader.isMetadataComplete();
  }

  public void setNormalized(boolean normalize) {
    reader.setNormalized(normalize);
  }

  public boolean isNormalized() { return reader.isNormalized(); }

  public void setMetadataCollected(boolean collect) {
    reader.setMetadataCollected(collect);
  }

  public boolean isMetadataCollected() { return reader.isMetadataCollected(); }

  public void setOriginalMetadataPopulated(boolean populate) {
    reader.setOriginalMetadataPopulated(populate);
  }

  public boolean isOriginalMetadataPopulated() {
    return reader.isOriginalMetadataPopulated();
  }

  public String[] getUsedFiles() {
    return reader.getUsedFiles();
  }

  public String getCurrentFile() { return reader.getCurrentFile(); }

  public int getIndex(int z, int c, int t) {
    return reader.getIndex(z, c, t);
  }

  public int[] getZCTCoords(int index) {
    return reader.getZCTCoords(index);
  }

  public Object getMetadataValue(String field) {
    return reader.getMetadataValue(field);
  }

  public Hashtable getMetadata() {
    return reader.getMetadata();
  }

  public CoreMetadata getCoreMetadata() {
    return reader.getCoreMetadata();
  }

  public void setMetadataFiltered(boolean filter) {
    reader.setMetadataFiltered(filter);
  }

  public boolean isMetadataFiltered() { return reader.isMetadataFiltered(); }

  public void setMetadataStore(MetadataStore store) {
    reader.setMetadataStore(store);
  }

  public MetadataStore getMetadataStore() {
    return reader.getMetadataStore();
  }

  public Object getMetadataStoreRoot() {
    return reader.getMetadataStoreRoot();
  }

  // -- IFormatHandler API methods --

  public boolean isThisType(String name) {
    return reader.isThisType(name);
  }

  public boolean isThisType(String name, boolean open) {
    return reader.isThisType(name, open);
  }

  public String getFormat() {
    return reader.getFormat();
  }

  public String[] getSuffixes() {
    return reader.getSuffixes();
  }

  // -- StatusReporter API methods --

  public void addStatusListener(StatusListener l) {
    reader.addStatusListener(l);
  }

  public void removeStatusListener(StatusListener l) {
    reader.removeStatusListener(l);
  }

  public StatusListener[] getStatusListeners() {
    return reader.getStatusListeners();
  }

  // -- Deprecated IFormatReader API methods --

  /** @deprecated Replaced by IFormatReader#getImageCount() */
  public int getImageCount(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getImageCount();
  }

  /** @deprecated Replaced by IFormatReader#isRGB() */
  public boolean isRGB(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.isRGB();
  }

  /** @deprecated Replaced by IFormatReader#getSizeX() */
  public int getSizeX(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeX();
  }

  /** @deprecated Replaced by IFormatReader#getSizeY() */
  public int getSizeY(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeY();
  }

  /** @deprecated Replaced by IFormatReader#getSizeZ() */
  public int getSizeZ(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeZ();
  }

  /** @deprecated Replaced by IFormatReader#getSizeC() */
  public int getSizeC(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeC();
  }

  /** @deprecated Replaced by IFormatReader#getSizeT() */
  public int getSizeT(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeT();
  }

  /** @deprecated Replaced by IFormatReader#getPixelType() */
  public int getPixelType(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getPixelType();
  }

  /** @deprecated Replaced by IFormatReader#getEffectiveSizeC() */
  public int getEffectiveSizeC(String id) throws FormatException, IOException {
    reader.setId(id);
    return getImageCount() / (getSizeZ() * getSizeT());
  }

  /** @deprecated Replaced by IFormatReader#getRGBChannelCount() */
  public int getRGBChannelCount(String id) throws FormatException, IOException {
    reader.setId(id);
    return getSizeC() / getEffectiveSizeC();
  }

  /** @deprecated Replaced by IFormatReader#getChannelDimLengths() */
  public int[] getChannelDimLengths(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getChannelDimLengths();
  }

  /** @deprecated Replaced by IFormatReader#getChannelDimTypes() */
  public String[] getChannelDimTypes(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getChannelDimTypes();
  }

  /** @deprecated Replaced by IFormatReader#getThumbSizeX() */
  public int getThumbSizeX(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getThumbSizeX();
  }

  /** @deprecated Replaced by IFormatReader#getThumbSizeY() */
  public int getThumbSizeY(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getThumbSizeY();
  }

  /** @deprecated Replaced by IFormatReader#isLittleEndian() */
  public boolean isLittleEndian(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.isLittleEndian();
  }

  /** @deprecated Replaced by IFormatReader#getDimensionOrder() */
  public String getDimensionOrder(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getDimensionOrder();
  }

  /** @deprecated Replaced by IFormatReader#isOrderCertain() */
  public boolean isOrderCertain(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.isOrderCertain();
  }

  /** @deprecated Replaced by IFormatReader#isInterleaved() */
  public boolean isInterleaved(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.isInterleaved();
  }

  /** @deprecated Replaced by IFormatReader#isInterleaved(int) */
  public boolean isInterleaved(String id, int subC)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.isInterleaved(subC);
  }

  /** @deprecated Replaced by IFormatReader#openImage(int) */
  public BufferedImage openImage(String id, int no)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openImage(no);
  }

  /** @deprecated Replaced by IFormatReader#openBytes(int) */
  public byte[] openBytes(String id, int no)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openBytes(no);
  }

  /** @deprecated Replaced by IFormatReader#openBytes(int, byte[]) */
  public byte[] openBytes(String id, int no, byte[] buf)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openBytes(no, buf);
  }

  /** @deprecated Replaced by IFormatReader#openThumbImage(int) */
  public BufferedImage openThumbImage(String id, int no)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openThumbImage(no);
  }

  /** @deprecated Replaced by IFormatReader#openThumbBytes(int) */
  public byte[] openThumbBytes(String id, int no)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openThumbBytes(no);
  }

  /** @deprecated Replaced by IFormatReader#getSeriesCount() */
  public int getSeriesCount(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSeriesCount();
  }

  /** @deprecated Replaced by IFormatReader#setSeries(int) */
  public void setSeries(String id, int no) throws FormatException, IOException {
    reader.setId(id);
    reader.setSeries(no);
  }

  /** @deprecated Replaced by IFormatReader#getSeries() */
  public int getSeries(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSeries();
  }

  /** @deprecated Replaced by IFormatReader#getUsedFiles() */
  public String[] getUsedFiles(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getUsedFiles();
  }

  /** @deprecated Replaced by IFormatReader#getIndex(int, int, int) */
  public int getIndex(String id, int z, int c, int t)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getIndex(z, c, t);
  }

  /** @deprecated Replaced by IFormatReader#getZCTCoords(int) */
  public int[] getZCTCoords(String id, int index)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getZCTCoords(index);
  }

  /** @deprecated Replaced by IFormatReader#getMetadataValue(String) */
  public Object getMetadataValue(String id, String field)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getMetadataValue(field);
  }

  /** @deprecated Replaced by IFormatReader#getMetadata() */
  public Hashtable getMetadata(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getMetadata();
  }

  /** @deprecated Replaced by IFormatReader#getCoreMetadata() */
  public CoreMetadata getCoreMetadata(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getCoreMetadata();
  }

  /** @deprecated Replaced by IFormatReader#getMetadataStore() */
  public MetadataStore getMetadataStore(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getMetadataStore();
  }

  /** @deprecated Replaced by IFormatReader#getMetadataStoreRoot() */
  public Object getMetadataStoreRoot(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getMetadataStoreRoot();
  }

}
<commit_msg>Implemented new sub-image API methods - this should have been in r3357.<commit_after>//
// ReaderWrapper.java
//

/*
LOCI Bio-Formats package for reading and converting biological file formats.
Copyright (C) 2005-@year@ <NAME>, <NAME>, <NAME>,
<NAME> and <NAME>.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Library General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Library General Public License for more details.

You should have received a copy of the GNU Library General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

package loci.formats;

import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Hashtable;

/**
 * Abstract superclass of reader logic that wraps other readers.
 * All methods are simply delegated to the wrapped reader.
 *
 * <dl><dt><b>Source code:</b></dt>
 * <dd><a href="https://skyking.microscopy.wisc.edu/trac/java/browser/trunk/loci/formats/ReaderWrapper.java">Trac</a>,
 * <a href="https://skyking.microscopy.wisc.edu/svn/java/trunk/loci/formats/ReaderWrapper.java">SVN</a></dd></dl>
 */
public abstract class ReaderWrapper implements IFormatReader {

  // -- Fields --

  /** FormatReader used to read the file. */
  protected IFormatReader reader;

  // -- Constructors --

  /** Constructs a reader wrapper around a new image reader. */
  public ReaderWrapper() { this(new ImageReader()); }

  /** Constructs a reader wrapper around the given reader. */
  public ReaderWrapper(IFormatReader r) {
    if (r == null) {
      throw new IllegalArgumentException("Format reader cannot be null");
    }
    reader = r;
  }

  // -- ReaderWrapper API methods --

  /** Gets the wrapped reader. */
  public IFormatReader getReader() { return reader; }

  // -- IFormatReader API methods --

  public boolean isThisType(byte[] block) {
    return reader.isThisType(block);
  }

  public void setId(String id) throws FormatException, IOException {
    reader.setId(id);
  }

  public void setId(String id, boolean force)
    throws FormatException, IOException
  {
    reader.setId(id, force);
  }

  public int getImageCount() {
    return reader.getImageCount();
  }

  public boolean isRGB() {
    return reader.isRGB();
  }

  public int getSizeX() {
    return reader.getSizeX();
  }

  public int getSizeY() {
    return reader.getSizeY();
  }

  public int getSizeZ() {
    return reader.getSizeZ();
  }

  public int getSizeC() {
    return reader.getSizeC();
  }

  public int getSizeT() {
    return reader.getSizeT();
  }

  public int getPixelType() {
    return reader.getPixelType();
  }

  public int getEffectiveSizeC() {
    return getImageCount() / (getSizeZ() * getSizeT());
  }

  public int getRGBChannelCount() {
    return getSizeC() / getEffectiveSizeC();
  }

  public boolean isIndexed() {
    return reader.isIndexed();
  }

  public boolean isFalseColor() {
    return reader.isFalseColor();
  }

  public byte[][] get8BitLookupTable() throws FormatException, IOException {
    return reader.get8BitLookupTable();
  }

  public short[][] get16BitLookupTable() throws FormatException, IOException {
    return reader.get16BitLookupTable();
  }

  public int[] getChannelDimLengths() {
    return reader.getChannelDimLengths();
  }

  public String[] getChannelDimTypes() {
    return reader.getChannelDimTypes();
  }

  public int getThumbSizeX() {
    return reader.getThumbSizeX();
  }

  public int getThumbSizeY() {
    return reader.getThumbSizeY();
  }

  public boolean isLittleEndian() {
    return reader.isLittleEndian();
  }

  public String getDimensionOrder() {
    return reader.getDimensionOrder();
  }

  public boolean isOrderCertain() {
    return reader.isOrderCertain();
  }

  public boolean isInterleaved() {
    return reader.isInterleaved();
  }

  public boolean isInterleaved(int subC) {
    return reader.isInterleaved(subC);
  }

  public BufferedImage openImage(int no) throws FormatException, IOException {
    return reader.openImage(no);
  }

  public BufferedImage openImage(int no, int x, int y, int w, int h)
    throws FormatException, IOException
  {
    return reader.openImage(no, x, y, w, h);
  }

  public byte[] openBytes(int no) throws FormatException, IOException {
    return reader.openBytes(no);
  }

  public byte[] openBytes(int no, int x, int y, int w, int h)
    throws FormatException, IOException
  {
    return reader.openBytes(no, x, y, w, h);
  }

  public byte[] openBytes(int no, byte[] buf)
    throws FormatException, IOException
  {
    return reader.openBytes(no, buf);
  }

  public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h)
    throws FormatException, IOException
  {
    return reader.openBytes(no, buf, x, y, w, h);
  }

  public BufferedImage openThumbImage(int no)
    throws FormatException, IOException
  {
    return reader.openThumbImage(no);
  }

  public byte[] openThumbBytes(int no) throws FormatException, IOException {
    return reader.openThumbBytes(no);
  }

  public void close(boolean fileOnly) throws IOException {
    reader.close(fileOnly);
  }

  public void close() throws IOException {
    reader.close();
  }

  public int getSeriesCount() {
    return reader.getSeriesCount();
  }

  public void setSeries(int no) {
    reader.setSeries(no);
  }

  public int getSeries() {
    return reader.getSeries();
  }

  public void setGroupFiles(boolean group) {
    reader.setGroupFiles(group);
  }

  public boolean isGroupFiles() {
    return reader.isGroupFiles();
  }

  public int fileGroupOption(String id) throws FormatException, IOException {
    return reader.fileGroupOption(id);
  }

  public boolean isMetadataComplete() {
    return reader.isMetadataComplete();
  }

  public void setNormalized(boolean normalize) {
    reader.setNormalized(normalize);
  }

  public boolean isNormalized() { return reader.isNormalized(); }

  public void setMetadataCollected(boolean collect) {
    reader.setMetadataCollected(collect);
  }

  public boolean isMetadataCollected() { return reader.isMetadataCollected(); }

  public void setOriginalMetadataPopulated(boolean populate) {
    reader.setOriginalMetadataPopulated(populate);
  }

  public boolean isOriginalMetadataPopulated() {
    return reader.isOriginalMetadataPopulated();
  }

  public String[] getUsedFiles() {
    return reader.getUsedFiles();
  }

  public String getCurrentFile() { return reader.getCurrentFile(); }

  public int getIndex(int z, int c, int t) {
    return reader.getIndex(z, c, t);
  }

  public int[] getZCTCoords(int index) {
    return reader.getZCTCoords(index);
  }

  public Object getMetadataValue(String field) {
    return reader.getMetadataValue(field);
  }

  public Hashtable getMetadata() {
    return reader.getMetadata();
  }

  public CoreMetadata getCoreMetadata() {
    return reader.getCoreMetadata();
  }

  public void setMetadataFiltered(boolean filter) {
    reader.setMetadataFiltered(filter);
  }

  public boolean isMetadataFiltered() { return reader.isMetadataFiltered(); }

  public void setMetadataStore(MetadataStore store) {
    reader.setMetadataStore(store);
  }

  public MetadataStore getMetadataStore() {
    return reader.getMetadataStore();
  }

  public Object getMetadataStoreRoot() {
    return reader.getMetadataStoreRoot();
  }

  // -- IFormatHandler API methods --

  public boolean isThisType(String name) {
    return reader.isThisType(name);
  }

  public boolean isThisType(String name, boolean open) {
    return reader.isThisType(name, open);
  }

  public String getFormat() {
    return reader.getFormat();
  }

  public String[] getSuffixes() {
    return reader.getSuffixes();
  }

  // -- StatusReporter API methods --

  public void addStatusListener(StatusListener l) {
    reader.addStatusListener(l);
  }

  public void removeStatusListener(StatusListener l) {
    reader.removeStatusListener(l);
  }

  public StatusListener[] getStatusListeners() {
    return reader.getStatusListeners();
  }

  // -- Deprecated IFormatReader API methods --

  /** @deprecated Replaced by IFormatReader#getImageCount() */
  public int getImageCount(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getImageCount();
  }

  /** @deprecated Replaced by IFormatReader#isRGB() */
  public boolean isRGB(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.isRGB();
  }

  /** @deprecated Replaced by IFormatReader#getSizeX() */
  public int getSizeX(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeX();
  }

  /** @deprecated Replaced by IFormatReader#getSizeY() */
  public int getSizeY(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeY();
  }

  /** @deprecated Replaced by IFormatReader#getSizeZ() */
  public int getSizeZ(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeZ();
  }

  /** @deprecated Replaced by IFormatReader#getSizeC() */
  public int getSizeC(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeC();
  }

  /** @deprecated Replaced by IFormatReader#getSizeT() */
  public int getSizeT(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSizeT();
  }

  /** @deprecated Replaced by IFormatReader#getPixelType() */
  public int getPixelType(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getPixelType();
  }

  /** @deprecated Replaced by IFormatReader#getEffectiveSizeC() */
  public int getEffectiveSizeC(String id) throws FormatException, IOException {
    reader.setId(id);
    return getImageCount() / (getSizeZ() * getSizeT());
  }

  /** @deprecated Replaced by IFormatReader#getRGBChannelCount() */
  public int getRGBChannelCount(String id) throws FormatException, IOException {
    reader.setId(id);
    return getSizeC() / getEffectiveSizeC();
  }

  /** @deprecated Replaced by IFormatReader#getChannelDimLengths() */
  public int[] getChannelDimLengths(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getChannelDimLengths();
  }

  /** @deprecated Replaced by IFormatReader#getChannelDimTypes() */
  public String[] getChannelDimTypes(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getChannelDimTypes();
  }

  /** @deprecated Replaced by IFormatReader#getThumbSizeX() */
  public int getThumbSizeX(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getThumbSizeX();
  }

  /** @deprecated Replaced by IFormatReader#getThumbSizeY() */
  public int getThumbSizeY(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getThumbSizeY();
  }

  /** @deprecated Replaced by IFormatReader#isLittleEndian() */
  public boolean isLittleEndian(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.isLittleEndian();
  }

  /** @deprecated Replaced by IFormatReader#getDimensionOrder() */
  public String getDimensionOrder(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getDimensionOrder();
  }

  /** @deprecated Replaced by IFormatReader#isOrderCertain() */
  public boolean isOrderCertain(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.isOrderCertain();
  }

  /** @deprecated Replaced by IFormatReader#isInterleaved() */
  public boolean isInterleaved(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.isInterleaved();
  }

  /** @deprecated Replaced by IFormatReader#isInterleaved(int) */
  public boolean isInterleaved(String id, int subC)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.isInterleaved(subC);
  }

  /** @deprecated Replaced by IFormatReader#openImage(int) */
  public BufferedImage openImage(String id, int no)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openImage(no);
  }

  /** @deprecated Replaced by IFormatReader#openBytes(int) */
  public byte[] openBytes(String id, int no)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openBytes(no);
  }

  /** @deprecated Replaced by IFormatReader#openBytes(int, byte[]) */
  public byte[] openBytes(String id, int no, byte[] buf)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openBytes(no, buf);
  }

  /** @deprecated Replaced by IFormatReader#openThumbImage(int) */
  public BufferedImage openThumbImage(String id, int no)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openThumbImage(no);
  }

  /** @deprecated Replaced by IFormatReader#openThumbBytes(int) */
  public byte[] openThumbBytes(String id, int no)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.openThumbBytes(no);
  }

  /** @deprecated Replaced by IFormatReader#getSeriesCount() */
  public int getSeriesCount(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSeriesCount();
  }

  /** @deprecated Replaced by IFormatReader#setSeries(int) */
  public void setSeries(String id, int no) throws FormatException, IOException {
    reader.setId(id);
    reader.setSeries(no);
  }

  /** @deprecated Replaced by IFormatReader#getSeries() */
  public int getSeries(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getSeries();
  }

  /** @deprecated Replaced by IFormatReader#getUsedFiles() */
  public String[] getUsedFiles(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getUsedFiles();
  }

  /** @deprecated Replaced by IFormatReader#getIndex(int, int, int) */
  public int getIndex(String id, int z, int c, int t)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getIndex(z, c, t);
  }

  /** @deprecated Replaced by IFormatReader#getZCTCoords(int) */
  public int[] getZCTCoords(String id, int index)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getZCTCoords(index);
  }

  /** @deprecated Replaced by IFormatReader#getMetadataValue(String) */
  public Object getMetadataValue(String id, String field)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getMetadataValue(field);
  }

  /** @deprecated Replaced by IFormatReader#getMetadata() */
  public Hashtable getMetadata(String id) throws FormatException, IOException {
    reader.setId(id);
    return reader.getMetadata();
  }

  /** @deprecated Replaced by IFormatReader#getCoreMetadata() */
  public CoreMetadata getCoreMetadata(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getCoreMetadata();
  }

  /** @deprecated Replaced by IFormatReader#getMetadataStore() */
  public MetadataStore getMetadataStore(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getMetadataStore();
  }

  /** @deprecated Replaced by IFormatReader#getMetadataStoreRoot() */
  public Object getMetadataStoreRoot(String id)
    throws FormatException, IOException
  {
    reader.setId(id);
    return reader.getMetadataStoreRoot();
  }

}

{'fraction_non_alphanumeric': 0.10769726247987117, 'fraction_numerical': 0.0017391304347826088, 'mean_word_length': 3.927947944770671, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6864435', 'n_tokens_mistral': 9323, 'n_tokens_neox': 9031, 'n_words': 2398}