class_docstr: 4D image from a set of 3D volumes,
  supports resampling and reorientation.
  
  The 3D volumes are concatenated in the fifth dim (modality dim)
class_docstr_tok: ["4D","image","from","a","set","of","3D","volumes",",","supports","resampling","and","reorientation",".","The","3D","volumes","are","concatenated","in","the","fifth","dim","(","modality","dim",")"]
docstr: Inferring spatial rank from array shape.
  
  In the case of concatenating ``M`` volumes of ``[x, y, 1]``
  the outcome ``[x, y, 1, 1, M]`` will have a spatial rank 2
  (resampling/reorientation will not be done in this case).
  
  :return: an integer
code: def spatial_rank(self):
      """
      Inferring spatial rank from array shape.
  
      In the case of concatenating ``M`` volumes of ``[x, y, 1]``
      the outcome ``[x, y, 1, 1, M]`` will have a spatial rank 2
      (resampling/reorientation will not be done in this case).
  
      :return: an integer
      """
      return int(np.sum([dim > 1 for dim in self.shape[:3]]))
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import os
  from abc import ABCMeta, abstractmethod
  import nibabel
  import numpy
  import tensorflow
  from six import with_metaclass, string_types
  import niftynet.io.misc_io
  from niftynet.io.image_loader import load_image_obj
  from niftynet.io.misc_io import resolve_file_name, dtype_casting
  from niftynet.utilities.niftynet_global_config import NiftyNetGlobalConfig
label_desc: Use image node_id 2 for calling the SpatialImage4D obj's underlying member method code with example usage: obj.spatial_rank() and returns: int