def test_ntimescales_1(): # see issue #603 trajs = [np.random.randint(0, 30, size=500) for _ in range(5)] pccap = PCCAPlus(n_macrostates=11).fit(trajs) lumped_trajs = pccap.transform(trajs) assert len(np.unique(lumped_trajs)) == 11
def test_ntimescales_1(): # see issue #603 trajs = [random.randint(0, 100, size=500) for _ in range(15)] pccap = PCCAPlus(n_macrostates=11).fit(trajs) lumped_trajs = pccap.transform(trajs) observed_macros = len(np.unique(lumped_trajs)) assert observed_macros == 11, observed_macros
def test_ntimescales_3(): # see issue #603 trajs = [np.random.randint(0, 30, size=500) for _ in range(5)] msm = MarkovStateModel(n_timescales=10).fit(trajs) pccap = PCCAPlus.from_msm(msm, 11) lumped_trajs = pccap.transform(trajs) assert len(np.unique(lumped_trajs)) == 11
def test_ntimescales_2(): # see issue #603 trajs = [random.randint(0, 100, size=500) for _ in range(15)] msm = MarkovStateModel().fit(trajs) pccap = PCCAPlus.from_msm(msm, 11) lumped_trajs = pccap.transform(trajs) observed_macros = len(np.unique(lumped_trajs)) assert observed_macros == 11, observed_macros
def test_from_msm(): assignments, _ = _metastable_system() msm = MarkovStateModel() msm.fit(assignments) pcca = PCCA.from_msm(msm, 2) msm = MarkovStateModel() msm.fit(assignments) pccaplus = PCCAPlus.from_msm(msm, 2)
def test_pcca_plus_1(): assignments, ref_macrostate_assignments = _metastable_system() pipeline = Pipeline([('msm', MarkovStateModel()), ('pcca+', PCCAPlus(2))]) macro_assignments = pipeline.fit_transform(assignments)[0] # we need to consider any permutation of the state labels when we # test for equality. Since it's only a 2-state that's simple using # the logical_not to flip the assignments. assert (np.all(macro_assignments == ref_macrostate_assignments) or np.all( macro_assignments == np.logical_not(ref_macrostate_assignments)))
def generate_msm(self, clustered): """ Generates a MSM from the current cluster data Returns: Msm """ # Generate microstate MSM self.currtime = time.time() msm = MarkovStateModel(lag_time=self.config.getint("model", "msm_lag"), reversible_type="transpose", ergodic_cutoff="off", prior_counts=0.000001) msm.fit(clustered) print("TIME\tmicromsm:\t%f" % (time.time() - self.currtime)) utils.dump(msm, "msm_G%d.pkl" % self.generation) # Lump into macrostates self.currtime = time.time() pcca = PCCAPlus.from_msm(msm, n_macrostates=self.config.getint( "model", "macrostates")) mclustered = pcca.transform(clustered, mode="fill") if any(any(np.isnan(x) for x in m) for m in mclustered): #pylint: disable=no-member print( "WARNING: Unassignable clusters in PCCA with %d macrostates!" % self.config.getint("model", "macrostates")) print("TIME\tpccaplus:\t%f" % (time.time() - self.currtime)) if self.save_extras: utils.dump(pcca, "macrostater.pkl") # Generate macrostate MSM self.currtime = time.time() mmsm = MarkovStateModel(lag_time=self.config.getint( "model", "msm_lag"), reversible_type="transpose", ergodic_cutoff="off", prior_counts=0.000001) mmsm.fit(mclustered) print("TIME\tmacromsm\t%f" % (time.time() - self.currtime)) utils.dump(mmsm, "mmsm_G%d.pkl" % self.generation) return mmsm, mclustered
def test_from_msm_2(): assignments, _ = _metastable_system() msm = MarkovStateModel() msm.fit(assignments) pccaplus = PCCAPlus.from_msm(msm, 2, 'crispness') assert pccaplus.objective_function == 'crispness'
#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') # Macrostate model pcca = PCCAPlus.from_msm(msm, n_macrostates=4) macro_trajs = pcca.transform(clustered_trajs) #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=50, # c=pcca.microstate_mapping_, # zorder=3 # ) #plt.tight_layout() #plt.savefig('macrostate_clusters.png')