class_docstr: Class to wrap general DICOM files
  
  Methods:
  
  * get_data()
  * get_pixel_array()
  * is_same_series(other)
  * __getitem__ : return attributes from `dcm_data`
  * get(key[, default]) - as usual given __getitem__ above
  
  Attributes and things that look like attributes:
  
  * affine : (4, 4) array
  * dcm_data : object
  * image_shape : tuple
  * image_orient_patient : (3,2) array
  * slice_normal : (3,) array
  * rotation_matrix : (3,3) array
  * voxel_sizes : tuple length 3
  * image_position : sequence length 3
  * slice_indicator : float
  * series_signature : tuple
docstr: A number that is higher for higher slices in Z
  
  Comparing this number between two adjacent slices should give a
  difference equal to the voxel size in Z.
  
  See doc/theory/dicom_orientation for description
docstr_tok: ["A","number","that","is","higher","for","higher","slices","in","Z","Comparing","this","number","between","two","adjacent","slices","should","give","a","difference","equal","to","the","voxel","size","in","Z",".","See","doc\/theory\/dicom_orientation","for","description"]
code: def slice_indicator(self):
      """A number that is higher for higher slices in Z
  
      Comparing this number between two adjacent slices should give a
      difference equal to the voxel size in Z.
  
      See doc/theory/dicom_orientation for description
      """
      ipp = self.image_position
      s_norm = self.slice_normal
      if ipp is None or s_norm is None:
          return None
      return np.inner(ipp, s_norm)
  
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 8 for calling the Wrapper obj's underlying member method code with example usage: obj.slice_indicator() and returns: np, None