code: def _init_w_transforms(data, features, random_states, comm=MPI.COMM_SELF):
      
      w = []
      subjects = len(data)
      voxels = np.empty(subjects, dtype=int)
  
      # Set Wi to a random orthogonal voxels by features matrix
      for subject in range(subjects):
          if data[subject] is not None:
              voxels[subject] = data[subject].shape[0]
              rnd_matrix = random_states[subject].random_sample((
                  voxels[subject], features))
              q, r = np.linalg.qr(rnd_matrix)
              w.append(q)
          else:
              voxels[subject] = 0
              w.append(None)
      voxels = comm.allreduce(voxels, op=MPI.SUM)
      return w, voxels
docs: Initialize the mappings (Wi) for the SRM with random orthogonal matrices.
  
      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.
  
      features : int
          The number of features in the model.
  
      random_states : list of `RandomState`s
          One `RandomState` instance per subject.
  
      comm : mpi4py.MPI.Intracomm
          The MPI communicator containing the data
  
      Returns
      -------
  
      w : list of array, element i has shape=[voxels_i, features]
          The initialized orthogonal transforms (mappings) :math:`W_i` for each
          subject.
  
      voxels : list of int
          A list with the number of voxels per subject.
  
  
      Note
      ----
  
          This function assumes that the numpy random number generator was
          initialized.
  
          Not thread safe.