Re: Error in NAMD Controller Class Reference- Adaptive Tempering

From: Jeff Comer (jeffcomer_at_gmail.com)
Date: Fri Sep 11 2015 - 08:12:15 CDT

Oops! I forgot the radical in the normalization constant of the
probability density. It should be: 1/sqrt(4πΔt) exp(–x^2/(4Δt))

–––––––––––––––––––––––––––––––––––———————
Jeffrey Comer, PhD
Assistant Professor
Institute of Computational Comparative Medicine
Nanotechnology Innovation Center of Kansas State
Kansas State University
Office: P-213 Mosier Hall
Phone: 785-532-6311

On Fri, Sep 11, 2015 at 8:10 AM, Jeff Comer <jeffcomer_at_gmail.com> wrote:
> Dear Sachin Natesh,
>
> I'm not that familiar with adaptive tempering, but I noticed that this
> equation bears similarity with integrators for overdamped Brownian
> dynamics. What you have pointed out is not actually an error, but the
> correct discretization of the Gaussian noise.
>
> First, a quick dimensional analysis. Notice that the Gaussian noise
> has the correlation function <ζ(t')ζ(t)> = δ(t-t'), which is stated in
> the paper you cite
> (http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2905458/). The delta
> function has units of the inverse of its argument since ∫ dt δ(t) = 1.
> So the noise, ζ(t), has units of 1/sqrt(t). Thus, ζ(t) Δt must have
> units of sqrt(t).
>
> You might want to do a search on the "Wiener process", which will give
> you more insight about what is going on. Basically, we are integrating
> the Gaussian noise ζ(t) over a finite time Δt. The integral of a
> zero-mean unit-variance Gaussian noise is the Wiener process, which is
> basically Brownian dynamics with a diffusion constant=1 (which obeys
> the diffusion equation with D=1 if you average over many instances).
> Integrating ζ(t) from 0 to Δt gives a Gaussian probability density
> p(x)=1/(4πΔt) exp(–x^2/(4Δt)). (See
> https://en.wikipedia.org/wiki/Heat_kernel ) If you compare this to the
> standard normal distribution, you see that the standard deviation is
> sqrt(2Δt). So to discretize Eq. 1 of the reference you cited, you need
> a Gaussian random number with a standard deviation of sqrt(2Δt).
>
> random->gaussian()*sqrt(2.*adaptTempDt) is just that.
>
> Regards,
> Jeff
>
> –––––––––––––––––––––––––––––––––––———————
> Jeffrey Comer, PhD
> Assistant Professor
> Institute of Computational Comparative Medicine
> Nanotechnology Innovation Center of Kansas State
> Kansas State University
> Office: P-213 Mosier Hall
> Phone: 785-532-6311
>
>
> On Thu, Sep 10, 2015 at 7:13 PM, Sachin Natesh <snatesh_at_uchicago.edu> wrote:
>> Hello all,
>>
>> In the NAMD controller class reference, which can be found here, I notice a
>> possible error in the computation of the adaptive tempering temperature
>> update (lines 1875-1878; see below)
>>
>> 01875 //dT is new temperature
>> 01876 BigReal dT =
>> ((potentialEnergy-potEnergyAverage)/BOLTZMANN+adaptTempT)*adaptTempDt;
>> 01877 dT += random->gaussian()*sqrt(2.*adaptTempDt)*adaptTempT;
>> 01878 dT += adaptTempT;
>>
>>
>> On line 1877, the stochastic portion of the temperature update is added to
>> what has been computed for the new temperature thus far, though the
>> integration time-step, adaptTempDt, is placed within the sqrt function. This
>> seems particularly erroneous to me as equation 1 of the paper upon which the
>> NAMD implementation is based (here) calls for the integration time-step to
>> fall outside of the radical, which can be realized through simple cross
>> multiplication of the dt differential.
>>
>> Does the NAMD implementation of the adaptive tempering algorithm actually
>> contain this error, is it the online documentation that is flawed, or am I
>> missing something?
>>
>> Any information in this regard would be much appreciated.
>>
>>
>> Best,
>>
>> Sachin Natesh
>>
>>
>>
>>
>>
>>
>>
>>
>>

This archive was generated by hypermail 2.1.6 : Thu Dec 31 2015 - 23:22:03 CST