class_docstr: Class for Siemens mosaic format data
  
  Mosaic format is a way of storing a 3D image in a 2D slice - and
  it's as simple as you'd imagine it would be - just storing the slices
  in a mosaic similar to a light-box print.
  
  We need to allow for this when getting the data and (because of an
  idiosyncrasy in the way Siemens stores the images) calculating the
  position of the first voxel.
  
  Adds attributes:
  
  * n_mosaic : int
  * mosaic_size : int
docstr: Return image shape as returned by ``get_data()``
docstr_tok: ["Return","image","shape","as","returned","by","``","get_data","(",")","``"]
code: def image_shape(self):
      """Return image shape as returned by ``get_data()``"""
      # reshape pixel slice array back from mosaic
      rows = self.get("Rows")
      cols = self.get("Columns")
      if None in (rows, cols):
          return None
      return (
          rows // self.mosaic_size,
          cols // self.mosaic_size,
          self.n_mosaic,
      )
  
imports: import operator
  import warnings
  import numpy
  from nibabel.optpkg import optional_package
  from ..onetime import auto_attr
  from ..openers import ImageOpener
  from .None import csareader
  from .dwiparams import B2q, nearest_pos_semi_def, q2bg
label_desc: Use image node_id 2 for calling the MosaicWrapper obj's underlying member method code with example usage: obj.image_shape() and returns: unknown,  unknown,  self, None