def analyze_by_t2t(R, trl_ix, t2t):
    perc = [0]+[np.percentile(t2t, i) for i in [25, 50, 75, 100]]

    n_assemblies = R.shape[1]
    f, ax = plt.subplots(nrows=n_assemblies)

    labels = {}

    for i, p in enumerate(perc[:-1]):
        p2 = perc[i+1]
        ix = np.nonzero(np.logical_and(t2t>p, t2t<=p2))[0]
        labels[i] = ix
        for a in range(n_assemblies):
            tmp = []
            for ii, x in enumerate(ix):
                xx = np.nonzero(trl_ix == x)[0]
                tmp.append(R[xx, a])
            
            labels[i, a, 'trl'] = np.vstack((tmp))
            m = np.mean(np.vstack((tmp)), axis=0)
            sem = np.std(np.vstack((tmp)), axis=0)/len(ix)
            ax[a].plot(m, color=cmap_list[i])
            ax[a].fill_between(np.arange(len(m)), m-sem, m+sem, color=cmap_list[i], alpha=.5)
            ax[a].plot(int(np.floor(p2*10)), m[int(np.floor(p2*10))-1], '.', markersize=20, color=cmap_list[i])

    #Classify new trials: 
    test={}
    train={}

    from sklearn.lda import LDA
    chance = {}
    for a in range(n_assemblies):
        lda = LDA()
        lda.n_components = len(perc) - 1

        X = []
        Y = []

        X_test = []
        Y_test = []

        ix_train = {}
        ix_test = {}

        for k in range(len(perc)-1):
            n = len(labels[k])
            ix = np.random.permutation(n)
            ix_train[k] = ix[:n/2]
            ix_test[k] = ix[n/2:]

            X.append(labels[k, a, 'trl'][ix_train[k],:])
            Y.append([k]*len(ix_train[k]))

            X_test.append(labels[k, a, 'trl'][ix_test[k], :])
            Y_test.append([k]*len(ix_test[k]))

        Y_train = np.hstack((Y))
        lda.fit(np.vstack((X)), Y_train)
        y_true = lda.predict(np.vstack((X)))
        train[a] = np.sum(y_true==np.hstack((Y)))/float(len(y_true))

        y_pred = lda.predict(np.vstack(X_test))
        test[a] = np.sum(y_pred == np.hstack((Y_test)))/float(len(y_pred))

        chance[a] = []
        for i in range(100):
            ix = np.random.permutation(len(Y_train))
            lda.fit(np.vstack((X)), Y_train[ix])
            y_pred = lda.predict(np.vstack(X))
            chance[a].append(np.sum(y_pred == Y_train[ix])/float(len(y_pred)))
    plt.show()
    return train, test, chance