Exemple #1
0
 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)
Exemple #2
0
 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)
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
 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')
Exemple #6
0
 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)
Exemple #7
0
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
Exemple #8
0
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)