code: def _init_structures(self, data, subjects):
          
          x = []
          mu = []
          rho2 = np.zeros(subjects)
  
          trace_xtx = np.zeros(subjects)
          for subject in range(subjects):
              mu.append(np.mean(data[subject], 1))
              rho2[subject] = 1
              trace_xtx[subject] = np.sum(data[subject] ** 2)
              x.append(data[subject] - mu[subject][:, np.newaxis])
  
          return x, mu, rho2, trace_xtx
docs: Initializes data structures for SRM and preprocess the data.
  
  
          Parameters
          ----------
          data : list of 2D arrays, element i has shape=[voxels_i, samples]
              Each element in the list contains the fMRI data of one subject.
  
          subjects : int
              The total number of subjects in `data`.
  
  
          Returns
          -------
          x : list of array, element i has shape=[voxels_i, samples]
              Demeaned data for each subject.
  
          mu : list of array, element i has shape=[voxels_i]
              Voxel means over samples, per subject.
  
          rho2 : array, shape=[subjects]
              Noise variance :math:`\\rho^2` per subject.
  
          trace_xtx : array, shape=[subjects]
              The squared Frobenius norm of the demeaned data in `x`.