markovmodel / PyEMMA

🚂 Python API for Emma's Markov Model Algorithms 🚂
http://pyemma.org
GNU Lesser General Public License v3.0
311 stars 119 forks source link

Umbrella sampling #1509

Closed andresilvapimentel closed 2 years ago

andresilvapimentel commented 3 years ago

How can I create the file adw_us.npz in the tutorial Analyzing umbrella sampling simulations with PyEMMA?

I would like to use the gromacs to create it, but I am not sure where I can find the arrays below:

us_trajs = [np.asarray(l, dtype=np.float64).reshape((-1, 1)) for l in data['arr_0'].tolist()] us_centers = data['arr_1'].tolist() us_force_constants = data['arr_2'].tolist() md_trajs = [np.asarray(l, dtype=np.float64).reshape((-1, 1)) for l in data['arr_3'].tolist()] centers = data['arr_4'] reference = data['arr_5']

Please, help me because I am new on this subject. Thanks.

clonker commented 3 years ago

The files you are looking for can be downloaded here. With gromacs I won't be of much help I am afraid, maybe someone else can chime in. In any case for gromacs related questions the gromacs page seems more appropriate.

andresilvapimentel commented 3 years ago

Thanks. I do have the file adw_us.npz because I downloaded it. Really, I am not sure how to do it in gromacs. However, I have another question: How did you generate the file adw_us.npz? Maybe, I can reproduce this procedure using gromacs by itself. I hope to hear form you... Thanks again.

clonker commented 3 years ago

So this particular data was probably not generated by Gromacs as it is not molecular data but a one-dimensional process in an asymmetric double well potential (asymmetric in the sense that the two wells have different depth). The process is simulated at different temperatures (meaning different factors infront of the stochastic force) using overdamped Langevin. While I am not 100% sure I think it was generated using the following:

from pyemma.datasets.double_well_thermo import DoubleWellSampler
sampler = DoubleWellSampler()

us_sample = sampler.us_sample()
mt_sample = sampler.mt_sample()
andresilvapimentel commented 3 years ago

I solved the issue and everything works fine until reaching the command:

lags = [2, 3, 5, 10]

MSM approach

its = pyemma.msm.its(md_dtrajs, lags=lags, nits=4, errors=None)

It gives the following error estimating MaximumLikelihoodMSM:

pyemma.msm.estimators.maximum_likelihood_msm.MaximumLikelihoodMSM[6] WARNING Empty core set while unassigned states (-1) in discrete trajectory. Defining core set automatically; check correctness by calling self.core_set.

How can I solve this issue? It keeps running as a loop to the eternity. Could you help me, please?

thempel commented 3 years ago

This error means that your trajectories have unassigned states (that are marked as -1). Unassigned states are used in a methods such as core set MSMs or milestoning. I'm not sure if you want to do this here as it shouldn't be a part of the standard umbrella sampling example. Can you check your trajectories md_dtrajs? Do they contain -1? Maybe you can track where the -1s come from, what they mean and if they are desired at all.

andresilvapimentel commented 3 years ago

Thanks. The issue was solved.

andresilvapimentel commented 3 years ago

I am running the umbrella sampling tutorial with my data. It is running pretty well until the cell #9 to run PCCA to find metastable sets. It gives the following error message: "AssertionError: First eigenvector is not constant. This indicates that the transition matrix is not connected or the eigenvectors are incorrectly sorted. Cannot do PCCA."

The energy profile has a minimum and two maximums, so I think it should be: msm.pcca(1) dtram.msm.pcca(1) tram_obj.msm.pcca(1)

Is that possible? Or it needs 3 metastable states and in this case, it should be: msm.pcca(3) dtram.msm.pcca(3) tram_obj.msm.pcca(3)

clonker commented 3 years ago

If you have just one energy minimum then it is its own metastable set of states (pcca with one cluster), however the pcca clustering with one cluster is trivial. Something must have gone wrong further upstream.

clonker commented 2 years ago

I assume this issue is resolved, please reopen and provide more info if that is not the case.