code: def _objective_function(self, data, w, s):
          
          subjects = len(data)
          objective = 0.0
          for m in range(subjects):
              objective += \
                  np.linalg.norm(data[m] - w[m].dot(s), 'fro')**2
  
          return objective * 0.5 / data[0].shape[1]
docs: Calculate the objective function
  
          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.
  
          w : list of 2D arrays, element i has shape=[voxels_i, features]
              The orthogonal transforms (mappings) :math:`W_i` for each subject.
  
          s : array, shape=[features, samples]
              The shared response
  
          Returns
          -------
  
          objective : float
              The objective function value.