code: def get_bounds(self, R):
          
  
          max_sigma = self._get_max_sigma(R)
          final_lower = np.zeros(self.K * (self.n_dim + 1))
          final_lower[0:self.K * self.n_dim] =\
              np.tile(np.nanmin(R, axis=0), self.K)
          final_lower[self.K * self.n_dim:] =\
              np.repeat(self.lower_ratio * max_sigma, self.K)
          final_upper = np.zeros(self.K * (self.n_dim + 1))
          final_upper[0:self.K * self.n_dim] =\
              np.tile(np.nanmax(R, axis=0), self.K)
          final_upper[self.K * self.n_dim:] =\
              np.repeat(self.upper_ratio * max_sigma, self.K)
          bounds = (final_lower, final_upper)
          return bounds
docs: Calculate lower and upper bounds for centers and widths
  
          Parameters
          ----------
  
          R : 2D array, with shape [n_voxel, n_dim]
              The coordinate matrix of fMRI data from one subject
  
  
          Returns
          -------
  
          bounds : 2-tuple of array_like, default: None
              The lower and upper bounds on factor's centers and widths.