code: def slice_iter(self, *dim_strides, **kwargs):
          
          def _create_slices(*args):
              return tuple(slice(s,e,1) for (s, e) in args)
  
          return (_create_slices(*s) for s in self.endpoint_iter(
              *dim_strides, **kwargs))
docs: Recursively iterate over the (dimension, stride)
          tuples specified in dim_strides, returning the chunk
          start offsets for each specified dimensions.
  
          For example, the following call effectively produces
          2 loops over the 'ntime' and 'nchan' dimensions
          in chunks of 10 and 4 respectively.
  
          .. code-block:: python
  
              A = np.ones(size=(100, 4))
              for ts, cs in cube.endpoint_iter(('ntime', 10), ('nchan', 4))
                  A[ts, cs].sum()
  
              for i cube.endpoint_iter(('ntime', 10), ('nchan', 4))
                  A[i].sum()
  
          Parameters
          ----------
          *dim_strides : list
              list of (dimension, stride) tuples
  
          Returns
          -------
          iterator
              Iterator producing a tuple of slices for each dimension
              :code:`(slice(d0_low, d0_high, 1), slice(d1_low, d1_high,1))`