code: def transform(self, X, y=None):
          
  
          # Check if the model exist
          if hasattr(self, 'w_') is False:
              raise NotFittedError("The model fit has not been run yet.")
  
          # Check the number of subjects
          if len(X) != len(self.w_):
              raise ValueError("The number of subjects does not match the one"
                               " in the model.")
  
          s = [None] * len(X)
          for subject in range(len(X)):
              if X[subject] is not None:
                  s[subject] = self.w_[subject].T.dot(X[subject])
  
          return s
docs: Use the model to transform matrix to Shared Response space
  
          Parameters
          ----------
          X : list of 2D arrays, element i has shape=[voxels_i, samples_i]
              Each element in the list contains the fMRI data of one subject
              note that number of voxels and samples can vary across subjects
          y : not used (as it is unsupervised learning)
  
  
          Returns
          -------
          s : list of 2D arrays, element i has shape=[features_i, samples_i]
              Shared responses from input data (X)