示例#1
0
        txx = np.concatenate(tica_trajs)
        #_ = msme.plot_histogram(txx)
        clusterer = MiniBatchKMeans(n_clusters=int(args.clusters),
                                    random_state=42)
        clustered_trajs = tica_trajs.fit_transform_with(clusterer,
                                                        'kmeans/',
                                                        fmt='dir-npy')
        #plt.figure()
        #plt.hexbin(txx[:,0], txx[:,1], bins='log', mincnt=1, cmap='viridis')
        #plt.scatter(clusterer.cluster_centers_[:,0], clusterer.cluster_centers_[:,1], s=100, c='w')
        #plt.savefig('microstate_clusters.png')

        # We can construct an MSM from the labeled trajectories
        msm = MarkovStateModel(lag_time=int(args.lag), n_timescales=20)
        msm.fit(clustered_trajs)
        assignments = clusterer.partial_transform(txx)
        assignments = msm.partial_transform(assignments)
        #msme.plot_free_energy(txx, obs=(0, 1), n_samples=10000,
        #                  pi=msm.populations_[assignments],
        #                  xlabel='tIC 1', ylabel='tIC 2')
        #plt.figure()
        #plt.scatter(clusterer.cluster_centers_[msm.state_labels_, 0],
        #        clusterer.cluster_centers_[msm.state_labels_, 1],
        #        s=1e4 * msm.populations_,       # size by population
        #        c=msm.left_eigenvectors_[:, 1], # color by eigenvector
        #        cmap="coolwarm",
        #        zorder=3)
        #plt.colorbar(label='First dynamical eigenvector')
        #plt.tight_layout()
        #plt.savefig('free_energy_plot.png')
示例#2
0
"""Cluster tICA results

{{header}}

Meta
----
depends:
 - ttrajs
 - meta.pandas.pickl
"""
from msmbuilder.io import load_trajs, save_trajs, save_generic
from msmbuilder.cluster import MiniBatchKMeans

## Load
meta, ttrajs = load_trajs('ttrajs')

## Fit
dim = 5
kmeans = MiniBatchKMeans(n_clusters=500)
kmeans.fit([traj[:, :dim] for traj in ttrajs.values()])

## Transform
ktrajs = {}
for k, v in ttrajs.items():
    ktrajs[k] = kmeans.partial_transform(v[:, :dim])

## Save
print(kmeans.summarize())
save_trajs(ktrajs, 'ktrajs', meta)
save_generic(kmeans, 'kmeans.pickl')