code: def transform(self, Xs):
          
  
          # check the necessary inputs parameters are here
          if check_params(Xs=Xs):
  
              if np.array_equal(self.xs_, Xs):
                  # perform standard barycentric mapping
                  transp = self.coupling_ / np.sum(self.coupling_, 1)[:, None]
  
                  # set nans to 0
                  transp[~ np.isfinite(transp)] = 0
  
                  # compute transported samples
                  transp_Xs = np.dot(transp, self.xt_)
              else:
                  if self.kernel == "gaussian":
                      K = kernel(Xs, self.xs_, method=self.kernel,
                                 sigma=self.sigma)
                  elif self.kernel == "linear":
                      K = Xs
                  if self.bias:
                      K = np.hstack((K, np.ones((Xs.shape[0], 1))))
                  transp_Xs = K.dot(self.mapping_)
  
              return transp_Xs
docs: Transports source samples Xs onto target ones Xt
  
          Parameters
          ----------
          Xs : array-like, shape (n_source_samples, n_features)
              The training input samples.
  
          Returns
          -------
          transp_Xs : array-like, shape (n_source_samples, n_features)
              The transport source samples.