def METHOD_NAME(self,Sx,Sy,Tx,b,xt1,ttt=1):
    a1 = np.ones(len(Sx))
    M = cdist(Sx, Tx, metric='sqeuclidean')
    M = M / np.median(M)
    b=np.ones(len(Tx))/len(Tx)
    T = entropic_partial_wasserstein(a1, b, M, self.reg_ce,m=1)
    if np.sum(T)<0.5:
        a=np.ones(len(Sx))/len(Sx)
        T=np.outer(a,b)
    gmm=self.diag_g
    index=gmm.predict(xt1)
    a=T.dot(np.ones(len(Tx)))
    b=(T.T).dot(np.ones(len(Sx)))
    G=ot.da.sinkhorn_lpl1_mm(a,Sy,b,M,self.reg_e,self.reg_cl)
    if np.sum(G)<0.5:
        a=np.ones(len(Sx))/len(Sx)
        G=np.outer(a,b)
    transp_Xs_lpl1 = np.diag(1 / G.dot(np.ones(len(Tx)))) @ G.dot(Tx)
    knn_clf = KNeighborsClassifier(n_neighbors=1)
    knn_clf.fit(transp_Xs_lpl1, Sy)
    Cls2 = knn_clf.predict(Tx)
    return Cls2[index]