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')
"""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')