code: def _init_w_transforms(data, features):
      
      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):
          voxels[subject] = data[subject].shape[0]
          rnd_matrix = np.random.random((voxels[subject], features))
          q, r = np.linalg.qr(rnd_matrix)
          w.append(q)
  
      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.
  
  
      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.