code: def _init_transforms(self, subjs, voxels, features, random_state):
          
  
          # Init the Random seed generator
          np.random.seed(self.rand_seed)
  
          # Draw a random W for each subject
          W = [random_state.random_sample((voxels[i], features))
               for i in range(subjs)]
          # Make it orthogonal it with QR decomposition
          for i in range(subjs):
              W[i], _ = np.linalg.qr(W[i])
  
          return W
docs: Initialize the mappings (Wi) with random orthogonal matrices.
          Parameters
          ----------
  
          subjs : int
              The number of subjects.
  
          voxels : list of int
              A list with the number of voxels per subject.
  
          features : int
              The number of features in the model.
  
          random_state : `RandomState`
              A random state to draw the mappings.
  
          Returns
          -------
  
          W : list of array, element i has shape=[voxels_i, features]
              The initialized orthogonal transforms (mappings) :math:`W_i` for
              each subject.
  
          Note
          ----
              Not thread safe.