class_docstr: Reads a variety of image formats using the bio-formats library.
  
  This reader is Java-based.
class_docstr_tok: ["Reads","a","variety","of","image","formats","using","the","bio-formats","library",".","This","reader","is","Java-based","."]
code: def read_volume(
      self,
      series=None,
      c=None,
      z=None,
      t=None,
      rescale=True,
      xywh=None,
      wants_max_intensity=False,
      channel_names=None,
  ):
      # Whether a volume has planes stored in the z or t axis is often ambiguous.
      # If z-size > 1 we'll use z, else we'll use t. Otherwise user should choose
      # an axis to split in Images.
      bf_reader = self.get_reader()
      self._ensure_file_open()
      if series is None:
          series = 0
      bf_reader.setSeries(series)
      z_len = 0
      if z is None:
          z_len = bf_reader.getSizeZ()
          z_range = range(z_len)
      else:
          z_range = [z]
      if t is None:
          if z_len > 1:
              t_range = range(1)
          else:
              t_range = range(bf_reader.getSizeT())
      else:
          t_range = [t]
      image_stack = []
      for z_index, t_index in itertools.product(z_range, t_range):
          data = self.read(
              series=series,
              c=c,
              z=z_index,
              t=t_index,
              rescale=rescale,
              XYWH=xywh,
              wants_max_intensity=False,
              channel_names=channel_names,
          )
          image_stack.append(data)
      return np.stack(image_stack)
  
file_path: CellProfiler/src/subpackages/core/cellprofiler_core/readers/bioformats_reader.py
imports: import collections
  import itertools
  import logging
  import numpy
  import scyjava
  from ..utilities.image import is_file_url
  from ..utilities.java import jimport
  from ..constants.image import MD_SIZE_S, MD_SIZE_C, MD_SIZE_Z, MD_SIZE_T, MD_SIZE_Y, MD_SIZE_X, BIOFORMATS_IMAGE_EXTENSIONS
  from ..reader import Reader
label_desc: Use image node_id 5 for calling the BioformatsReader obj's underlying member method code with example usage: obj.read_volume(series, c, z, t, rescale, xywh, wants_max_intensity, channel_names) and returns: np