def test_mbar(self): mbar = estimate_multi_temperature( self.energy_trajs, self.temp_trajs, self.dtrajs, energy_unit='kT', temp_unit='kT', maxiter=50000, maxerr=1.0E-13, estimator='mbar') validate_thermodynamics(self, mbar) check_serialization(mbar)
def test_wham(self): wham = estimate_multi_temperature( self.energy_trajs, self.temp_trajs, self.dtrajs, energy_unit='kT', temp_unit='kT', maxiter=100000, maxerr=1.0E-13, estimator='wham') validate_thermodynamics(self, wham) check_serialization(wham)
def test_tram(self): tram = estimate_multi_temperature( self.energy_trajs, self.temp_trajs, self.dtrajs, energy_unit='kT', temp_unit='kT', maxiter=10000, maxerr=1.0E-10, estimator='tram', lag=10) validate_thermodynamics(self, tram) validate_kinetics(self, tram)
def test_tram(self): tram = estimate_multi_temperature( self.energy_trajs, self.temp_trajs, self.dtrajs, energy_unit='kT', temp_unit='kT', maxiter=10000, maxerr=1.0E-10, estimator='tram', lag=10, connectivity='reversible_pathways') validate_thermodynamics(self, tram) validate_kinetics(self, tram) check_serialization(tram)
def test_dtram2(self): ''' check we have the temperatures attribute for every estimated lag time''' dtram = estimate_multi_temperature( self.energy_trajs, self.temp_trajs, self.dtrajs, energy_unit='kT', temp_unit='kT', maxiter=50000, maxerr=1.0E-10, estimator='dtram', lag=[10, 11]) for t in dtram: assert hasattr(t, 'temperatures')
def test_dtram(self): dtram = estimate_multi_temperature( self.energy_trajs, self.temp_trajs, self.dtrajs, energy_unit='kT', temp_unit='kT', maxiter=50000, maxerr=1.0E-10, estimator='dtram', lag=10) validate_thermodynamics(self, dtram) validate_kinetics(self, dtram) check_serialization(dtram)
def multi_temperature_tram(feat, trajfiles, temperatures, dtrajs=None, stride=1, tica_lag=100, keep_tica_dims=20, n_clusters=100, tram_lag=100, engfile="Etot.dat", usecols=(1,), kb=0.0083145): """ Parameters ---------- feat : obj, pyemma.coor.featurizer Featurizer object that already has the appropriate features added. trajfiles : list Names of trajectories to include in estimation. temperatures : list Temperatures of corresponding trajectories. stride : int Number of frames to skip in tica and clustering. tica_lag : int Lagtime to use for constructing tica. keep_tica_dims : int Number of dimensions to keep from tica. Somewhat ambiguous. n_clusters : int Number of clusters for kmeans. Somewhat ambiguous. """ dirs = [ os.path.dirname(x) for x in trajfiles ] beta = [ 1./(kb*x) for x in temperatures ] if dtrajs is None: inp = coor.source(trajfiles, feat) tica_obj = coor.tica(inp, lag=tica_lag, dim=keep_tica_dims, stride=stride) Y = tica_obj.get_output() cl = coor.cluster_kmeans(data=Y, k=n_clusters, stride=stride) dtrajs = cl.dtrajs # dimensionless energy if engfile.endswith("npy"): energy_trajs = [ beta[i]*np.load("{}/{}".format(dirs[i], engfile)) for i in range(len(dirs)) ] else: energy_trajs = [ beta[i]*np.loadtxt("{}/{}".format(dirs[i], engfile), usecols=usecols) for i in range(len(dirs)) ] temp_trajs = [ kb*temperatures[i]*np.ones(energy_trajs[i].shape[0], float) for i in range(len(dirs)) ] # dTRAM approach tram = thermo.estimate_multi_temperature(energy_trajs, temp_trajs, dtrajs, energy_unit='kT', temp_unit='kT', estimator='tram', lag=tram_lag, maxiter=2000000, maxerr=1e-10) return dirs, dtrajs, tram
def test_multi_temperature_data(): req_keys = ('trajs', 'dtrajs', 'energy_trajs', 'temp_trajs', 'centers') mt_data = get_multi_temperature_data() for key in mt_data.keys(): assert key in req_keys for key in req_keys: assert key in mt_data memm = estimate_multi_temperature(mt_data['energy_trajs'], mt_data['temp_trajs'], mt_data['dtrajs'], energy_unit='kT', temp_unit='kT', reference_temperature=1.0, estimator='dtram', lag=[5], maxiter=10000, maxerr=1e-14) assert memm.msm is not None memm.msm.pcca(2) pi = [memm.msm.pi[s].sum() for s in memm.msm.metastable_sets] assert_allclose(pi, [0.3, 0.7], rtol=0.25, atol=0.1)