code: def _apply_mask(self, roi_mask):
          
  
          # TODO ensure compatible with input image
          #   - must have < N dim and same size in moving dims.
          rows_to_delete = list() # to allow for additional masks to be applied in the future
          if isinstance(roi_mask,
                        np.ndarray):  # not (roi_mask is None or roi_mask=='auto'):
              self._set_roi_mask(roi_mask)
  
              rows_roi = np.where(self.roi_mask.flatten() == cfg.background_value)
  
              # TODO below would cause differences in size/shape across mask and carpet!
              self.carpet = np.delete(self.carpet, rows_roi, axis=0)
  
          else:
              self.roi_mask = np.ones(self.carpet.shape)
docs: Removes voxels outside the given mask or ROI set.