[gmx-developers] calculating poteintial energy into do_md()
francesco oteri
francesco.oteri at gmail.com
Mon Jul 16 18:08:07 CEST 2012
2012/7/16 Berk Hess <hess at kth.se>
> Using lambda scaling for non-bonded interactions is going to be very
> slow.
>
If it is done with the actual implementation, you are right. But if mdrun
recognize rest2=yes thzn it rescales the
parameters at teh beginning. Then a normal MD run goes.
>
> But this would scale the protein-protein non-bonded interactions with
> lambda^2.
>
Why? computing charge-charge interaction is:
S*qi*S*qj = (S^2 )*qi*qj
but S=sqrt(Bi/B)
so what I obtain is:
(Bi/B)* qi*qj
That is exactly what I want: rescaling by (Bi/B) protein-protein
interactions
> Is that what you want?
>
> Cheers,
>
> Berk
>
>
> On 07/16/2012 05:06 PM, francesco oteri wrote:
>
> In the paper they just say that non bonded rescaling is obtained rescaling
> LG epsilon by Bi/B and the protein charges by sqrt(Bi/B).
>
> I did simulation using the lambda approach and I qualitatively
> reproduced
> the results.
>
> Just to give my contribution, I think the most efficient way to
> implement REST2
> is using the lambda approach as follows:
>
> 1) in .mdp introducing a new keyword like rest2 = yes/no
> 2) using the init_lambda value to rescale the parameters at the bootstrap
> of md
> (es. in do_md or init_replica_exchange).
> 3) running the code as normal MD and swapping the states
>
> Since point 1 implies modification of grompp and point 2 requires the
> knowledge of
> the data structure, I am just implementing point 3 while point 2 is
> demanded to external
> scripts.
>
> Francesco
>
> 2012/7/16 Berk Hess <hess at kth.se>
>
>> On 07/16/2012 04:42 PM, Shirts, Michael (mrs5pt) wrote:
>>
>>> One question, since better REST2 is one item on the todo list for 5.0,
>>> and I
>>> want to be thinking about the possibilities.
>>>
>>> For solute-solvent energy rescaling, how does one calculate the changes
>>> in
>>> solute-solvent energy without doing multiple PME calls to decompose the
>>> electrostatic energy?
>>>
>>> I'm guessing that by since your are load multiple topologies of the
>>> system,
>>> for each of those topologies, you can explicitly write new nonbonded
>>> pairwise parameter terms between the water and protein. This is a pain
>>> to
>>> do (need new ij terms for every parameter pair) but straightforward in
>>> the
>>> end to automate. Is this how your are planning to do it?
>>>
>>> Without PME, then it's straightforward to decompose into solute-solvent
>>> energy / solute-solute / solvent-solvent electrostatics, though for
>>> adding
>>> long term to Gromacs, we'd want to support PME.
>>>
>> No, even without PME this is not straightforward.
>> Using a plain cut-off's for electrostatics is horrible, so I'd say you
>> want to use reaction-field.
>> But with reaction-filed the correction terms are non pair-wise, as with
>> PME.
>>
>> Cheers,
>>
>> Berk
>>
>>>
>>> Best,
>>> ~~~~~~~~~~~~
>>> Michael Shirts
>>> Assistant Professor
>>> Department of Chemical Engineering
>>> University of Virginia
>>> michael.shirts at virginia.edu
>>> (434)-243-1821
>>>
>>>
>>> From: francesco oteri <francesco.oteri at gmail.com>
>>>> Reply-To: Discussion list for GROMACS development <
>>>> gmx-developers at gromacs.org>
>>>> Date: Mon, 16 Jul 2012 16:13:16 +0200
>>>> To: Discussion list for GROMACS development <gmx-developers at gromacs.org
>>>> >
>>>> Subject: Re: [gmx-developers] calculating poteintial energy into do_md()
>>>>
>>>> Hi
>>>>
>>>> 2012/7/16 Mark Abraham <Mark.Abraham at anu.edu.au>
>>>>
>>>> On 16/07/2012 10:59 PM, francesco oteri wrote:
>>>>>
>>>>> Hi,
>>>>> what I am trying to do is implementing the REST2 tecnique [1]
>>>>> The goal is enanching the conforlational sampling splitting the system
>>>>> in
>>>>> two parts: solvent and solute.
>>>>> The two groups have a different APPARENT temperature because the bonded
>>>>> interaction within the solute atoms are rescaled by a factor Bi/B (
>>>>> Bi=1/Ti*Kb, Ti = apparent temperature for the i-th replica,
>>>>> B=Boltzmann
>>>>> constant) and the protein-water interactions are rescaled by
>>>>> sqrt(Bi/B).
>>>>> So the system temperature, regulated by the thermostat, is equal along
>>>>> the
>>>>> different replicas but the dynamic of the different replicas
>>>>> changes becaus of the different Boltzmann factor.
>>>>> To implement the tecnique, the naive approach (adopted in [2]) is:
>>>>> 1) Generating N-different topology (N= number of replicas).
>>>>> 2) Removing same check at the beginning of the Replica Exchange code,
>>>>> in
>>>>> order to run N replicas with equal run parameters (temperature,
>>>>> pression,
>>>>> ecc. ecc.)
>>>>> 3) Changing the acceptance ratio formula.
>>>>>
>>>>> This approach has been developped for gmx4.0.3 but I need to use
>>>>> gmx4.5.5 because it has a native implementation of the CHARMM
>>>>> force-field.
>>>>> Since the code between the two versions is different I am trying to
>>>>> figure
>>>>> out how to reinvent the wheel.
>>>>>
>>>>> As shown in [3] and adopted in [2] the same result can be obtained
>>>>> using
>>>>> the lamda dynamics in gromacs.In this case, only one topology has to be
>>>>> generated. The state A correspond to the replica at the lowest apparent
>>>>> temperature, while the state B represents the highest temperature
>>>>> replica.
>>>>> Intermediate replicas are generated changing the init_lambda value.
>>>>>
>>>>> What has been found, this approach results in slowest run.
>>>>>
>>>>>
>>>>> So, right now I got stuck at the point 3. In fact to find:
>>>>>
>>>>> delta = B( Va(Xb) + Vb(Xa) - Va(Xa) - Vb(Xb))
>>>>>
>>>>> I need to calculate Va(Xb) and Vb(Xa)
>>>>>
>>>>>
>>>>> Va(Xb) is determined by the potential of replica a and the coordinates
>>>>> of
>>>>> replica b, so it is most effectively evaluated on the processor that
>>>>> has
>>>>> the coordinates of replica b. If the topology is the same at the
>>>>> replicas a
>>>>> and b, then can Va(Xb) be computed by replica b by rescaling suitably
>>>>> the
>>>>> quantities that contributed to Vb(Xb), based on the knowledge that
>>>>> replica
>>>>> a is the exchange partner? Then the quantities that are exchanged
>>>>> before
>>>>> the test are Va(Xb) and Vb(Xa). Should be as fast as regular REMD.
>>>>>
>>>>>
>>>> This is my idea, indeed
>>>>
>>>>
>>>>> Mark
>>>>>
>>>>>
>>>>>
>>>>> [1] http://pubs.acs.org/doi/abs/10.1021/jp204407d
>>>>> [2]http://pubs.acs.org/doi/abs/10.1021/ct100493v
>>>>> [3] http://onlinelibrary.wiley.com/doi/10.1002/jcc.21703/abstract
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> 2012/7/16 Berk Hess <hess at kth.se>
>>>>>
>>>>> On 7/16/12 14:18 , Shirts, Michael (mrs5pt) wrote:
>>>>>>
>>>>>> Actually I did it but I the performance decrease a lot (2x).
>>>>>>>
>>>>>>>> In particular I run the same run with free_energy = yes and
>>>>>>>> free_energy =
>>>>>>>> no and in the second case the run is 2times faster.
>>>>>>>> I found in the mailing list that this performance drop is known.
>>>>>>>>
>>>>>>>> What are the particular parameters you are trying to change? I
>>>>>>> wrote the
>>>>>>> new Hamiltonian Exchange code, so I'm interested in making sure it's
>>>>>>> as
>>>>>>> useful as possible. There might be some cases where this performance
>>>>>>> drop
>>>>>>> can be avoided, and It's likely the PME parameters, since doing
>>>>>>> repeated
>>>>>>> that's the only thing that really makes free energy slow.
>>>>>>>
>>>>>>> UNLESS of course you are changing ALL of the atoms, which which case
>>>>>>> all
>>>>>>> of
>>>>>>> them will go through the free energy code, and it certainly will be
>>>>>>> slower.
>>>>>>> There are some possible ways to fix this, but that will not be until
>>>>>>> 5.0.
>>>>>>> Best,
>>>>>>> ~~~~~~~~~~~~
>>>>>>> Michael Shirts
>>>>>>> Assistant Professor
>>>>>>> Department of Chemical Engineering
>>>>>>> University of Virginia
>>>>>>> michael.shirts at virginia.edu
>>>>>>> (434)-243-1821
>>>>>>>
>>>>>>>
>>>>>>> From: francesco oteri <francesco.oteri at gmail.com>
>>>>>>>
>>>>>>>> Reply-To: Discussion list for GROMACS development <
>>>>>>>> gmx-developers at gromacs.org>
>>>>>>>> Date: Mon, 16 Jul 2012 14:08:49 +0200
>>>>>>>> To: Discussion list for GROMACS development <
>>>>>>>> gmx-developers at gromacs.org
>>>>>>>> Subject: Re: [gmx-developers] calculating poteintial energy into
>>>>>>>> do_md()
>>>>>>>>
>>>>>>>> Dear Berk
>>>>>>>>
>>>>>>>> 2012/7/16 Berk Hess <hess at kth.se>
>>>>>>>>
>>>>>>>> On 7/16/12 13:05 , francesco oteri wrote:
>>>>>>>>
>>>>>>>>> Dear gromacs developers,
>>>>>>>>> I am trying to implement in gromacs 4.5.5 a particular Hemiltonian
>>>>>>>>> Replica
>>>>>>>>> Exchange tecnique.
>>>>>>>>> Right now, at every exchange attempt in do_md, I figured out how
>>>>>>>>> to
>>>>>>>>> access at the potential
>>>>>>>>> energy of replica A (=configuration A at temperature A) and B
>>>>>>>>> (=configuration B at temperature B) and so on.
>>>>>>>>>
>>>>>>>>> In my case, each replica has the same temperature, but there is a
>>>>>>>>> different Hemiltonian equation for every replica.
>>>>>>>>> The different Hemiltonian are obtained simply changing the force
>>>>>>>>> field
>>>>>>>>> parameters in the input topology so I dont
>>>>>>>>> need to modify anything in gromacs.
>>>>>>>>>
>>>>>>>>> But at every exchange attempt I have to test if the
>>>>>>>>> configuration B
>>>>>>>>> can
>>>>>>>>> exist in the state A so I need to calculate
>>>>>>>>> its potential energy using the force field data of replica A.
>>>>>>>>>
>>>>>>>>> I found that function sum_epot calculates the potential energy
>>>>>>>>> but I
>>>>>>>>> suspect that it uses values calculated in
>>>>>>>>> do_force since sum_epot is called by do_force_lowlevel in turn
>>>>>>>>> called
>>>>>>>>> by
>>>>>>>>> do_force.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> So my question is, should I call do_force in replica A with
>>>>>>>>> coordinates
>>>>>>>>> from replica B reach my goal?
>>>>>>>>>
>>>>>>>>> Yes.
>>>>>>>>> Are you changing bonded and/or non-bonded parameters?
>>>>>>>>> Some non-bonded parameters might be preprocessed, so you might need
>>>>>>>>> reprocess those
>>>>>>>>> and them reprocesses again to get back to the original state.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Which parameters need such a preprocessing?
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Note that 4.6 will have proper Hamiltonian replica exchange, but
>>>>>>>> that
>>>>>>>>
>>>>>>>>> will
>>>>>>>>> use the lambda coupling
>>>>>>>>> parameter approach. If you need to do something similar, it might
>>>>>>>>> be
>>>>>>>>> much
>>>>>>>>> simpler to use this code.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Actually I did it but I the performance decrease a lot (2x).
>>>>>>>>>
>>>>>>>> In particular I run the same run with free_energy = yes and
>>>>>>>> free_energy =
>>>>>>>> no and in the second case the run is 2times faster.
>>>>>>>> I found in the mailing list that this performance drop is known.
>>>>>>>>
>>>>>>>> I think the performance drop is due to the, temporarily,
>>>>>>> missing sse
>>>>>>>
>>>>>> non-bonded kernels.
>>>>>> They should be back somewhere this week.
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Berk
>>>>>>
>>>>>>
>>>>>
>
> --
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://lists.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the
> www interface or send it to gmx-developers-request at gromacs.org.
>
--
Cordiali saluti, Dr.Oteri Francesco
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20120716/8fc15e6c/attachment.html>
More information about the gromacs.org_gmx-developers
mailing list