From c48aeb41f469bfe7bb79f0796b356b4790ae69b5 Mon Sep 17 00:00:00 2001 From: Jaron Krogel Date: Tue, 29 Aug 2017 12:17:52 -0400 Subject: [PATCH] QMCPACK manual entry for timestep fitting tool --- manual/analysis.tex | 152 ++++++++++++++++++++- manual/figures/qfit_timestep_linear.pdf | Bin 0 -> 13025 bytes manual/figures/qfit_timestep_quadratic.pdf | Bin 0 -> 13461 bytes nexus/executables/{qmcfit => qfit} | 8 +- 4 files changed, 154 insertions(+), 6 deletions(-) create mode 100644 manual/figures/qfit_timestep_linear.pdf create mode 100644 manual/figures/qfit_timestep_quadratic.pdf rename nexus/executables/{qmcfit => qfit} (99%) diff --git a/manual/analysis.tex b/manual/analysis.tex index 7efc34cd3..3db574c9b 100644 --- a/manual/analysis.tex +++ b/manual/analysis.tex @@ -1002,8 +1002,156 @@ Obtaining the local, kinetic, and potential energies in eV: \end{enumerate} -%\section{Using the qfit tool for statistical timestep extrapolation and curve fitting} -%\label{sec:qfit} +\section{Using the qfit tool for statistical timestep extrapolation and curve fitting} +\label{sec:qfit} + +The \texttt{qfit} tool is used to provide statistical estimates of +curve fitting parameters based on QMCPACK data. While \texttt{qfit} +will eventually support many types of fitted curves (\emph{e.g.} Morse +potential binding curves, various equation of state fitting curves, etc.), +it is currently limited to estimating fitting parameters related to +timestep extrapolation. + +\subsection{The jack-knife statistical technique} +The \texttt{qfit} tool obtains estimates of fitting parameter +means and associated error bars via the ``jack-knife'' +technique. The jack-knife method is a powerful and general tool +to obtain meaningful error bars for any quantity that is related +in a non-linear fashion to an underlying set of statistical data. +For this reason, we give a brief overview of the jack-knife +technique before proceeding with usage instructions for the +\texttt{qfit} tool. + +Consider $N$ statistical variables $\{x_n\}_{n=1}^N$ that have +been outputted by one or more simulation runs. If we have +$M$ samples of each of the $N$ variables, then the mean values +of each these variables can be estimated in the standard way, +i.e. $\bar{x}_n\approx \tfrac{1}{M}\sum_{m=1}^Mx_{nm}$. + +Suppose we are interested in $P$ statistical quantities +$\{y_p\}_{p=1}^P$ that are related to the original $N$ variables +by a known multidimensional function $F$: +\begin{align} + y_1,y_2,\ldots,y_P &= F(x_1,x_2,\ldots,x_N)\quad \textrm{or} \nonumber \\ + \vec{y} &= F(\vec{x}) +\end{align} +The relationship implied by $F$ is completely general. +For example the $\{x_n\}$ might be elements of a matrix +with $\{y_p\}$ being the eigenvalues, or $F$ might be +a fitting procedure for $N$ energies at different timesteps +with $P$ fitting parameters. An approximate guess at the mean +value of $\vec{y}$ can be obtained by evaluating $F$ at the mean +value of $\vec{x}$ (i.e. $F(\bar{x}_1\ldots\bar{x}_N)$), but with +this approach we have no way to estimate the statistical error +bar of any $\bar{y}_p$. + +In the jack-knife procedure, the statistical variability intrinsic +to the underlying data $\{x_n\}$ is used to obtain estimates of the +mean and error bar of $\{y_p\}$. We first construct a new set of $x$ +statistical data by taking the average over all samples but one: +\begin{align} + \tilde{x}_{nm} = \frac{1}{N-1}(N\bar{x}_n-x_{nm})\qquad m\in [1,M] +\end{align} +The result is a distribution of approximate $x$ mean values. These +are used to construct a distribution of approximate means for $y$: +\begin{align} + \tilde{y}_{1m},\ldots,\tilde{y}_{Pm} = F(\tilde{x}_{1m},\ldots,\tilde{x}_{Nm}) \qquad m\in [1,M] +\end{align} +Estimates for the mean and error bar of the quantities of +interest can finally be obtained using the formulas below: +\begin{align} + \bar{y}_p &= \frac{1}{M}\sum_{m=1}^M\tilde{y}_{pm} \\ + \sigma_{y_p} &= \sqrt{\frac{M-1}{M}\left(\sum_{m=1}^M\tilde{y}_{pm}^2-M\bar{y}_p^2\right)} +\end{align} + + +\subsection{Performing timestep extrapolation} +In this section, we use a 32 atom supercell of MnO as an example +system for timestep extrapolation. Data for this system has been +collected in DMC using the following sequence of timesteps: +$0.04,~0.02,~0.01,~0.005,~0.0025,~0.00125$ Ha$^{-1}$. For a typical +production pseudopotential study, timesteps in the range +$0.02-0.002$ Ha$^{-1}$ are usually sufficient and it is recommended +to increase the number of steps/blocks by a factor of two when +the timestep is halved. In order to perform accurate statistical +fitting, we must first understand the equilibration and autocorrelation +properties of the inputted local energy data. After plotting the +local energy traces (\texttt{qmca -t -q e -e 0 ./qmc*/*scalar*}) +it is clear that an equilibration period of $30$ blocks is reasonable. +Approximate autocorrelation lengths are also obtained with \texttt{qmca}: +\begin{shade} +>qmca -e 30 -q e --sac ./qmc*/qmc.g000.s002.scalar.dat +./qmc_tm_0.00125/qmc.g000 series 2 LocalEnergy = -3848.234513 +/- 0.055754 1.7 +./qmc_tm_0.00250/qmc.g000 series 2 LocalEnergy = -3848.237614 +/- 0.055432 2.2 +./qmc_tm_0.00500/qmc.g000 series 2 LocalEnergy = -3848.349741 +/- 0.069729 2.8 +./qmc_tm_0.01000/qmc.g000 series 2 LocalEnergy = -3848.274596 +/- 0.126407 3.9 +./qmc_tm_0.02000/qmc.g000 series 2 LocalEnergy = -3848.539017 +/- 0.075740 2.4 +./qmc_tm_0.04000/qmc.g000 series 2 LocalEnergy = -3848.976424 +/- 0.075305 1.8 +\end{shade} +\noindent +The autocorrelation must be removed from the data prior to jack-knifing +and so we will reblock the data by a factor of 4. + +The \texttt{qfit} tool can be used in the following way to obtain +a linear timestep fit of the data: +\begin{shade} +>qfit ts -e 30 -b 4 -s 2 -t '0.00125 0.0025 0.005 0.01 0.02 0.04' ./qmc*/*scalar* +fit function : linear +fitted formula: (-3848.193 +/- 0.037) + (-18.95 +/- 1.95)*t +intercept : -3848.193 +/- 0.037 Ha +\end{shade} +The input arguments are as follows: \texttt{ts} indicates we are +performing a timestep fit, ``\texttt{-e 30}'' is the equilibration period +removed from each set of scalar data, ``\texttt{-b 4}'' indicates the data +will be reblocked by a factor of 4 (\emph{e.g.} a file containing 400 \ +entries will be block averaged into a new set of 100 prior to jack-knife +fitting), ``\texttt{-s 2}'' indicates that the timestep data begins with +series 2 (scalar files matching \texttt{*s000*} or \texttt{*s001*} are +to be excluded), and ``\texttt{-t } '0.00125 0.0025 0.005 0.01 0.02 0.04' '' +provides a list of timestep values corresponding to the inputted scalar +files. The ``\texttt{-e}'' and ``\texttt{-b}'' options can receive a +list of file-specific values (same format as ``\texttt{-t}'') if desired. +As can be seen from the text output, the parameters for the linear fit +are printed with error bars obtained with jack-knife resampling and +the zero timestep ``intercept'' is $-3848.19(4)$ Ha. In addition to +text output, the command above will result in a plot of the fit with +the zero timestep value shown as a red dot, as shown in the left +panel of Fig.~\ref{fig:qfit_timestep}. + +\begin{figure} + \centering + \begin{subfigure}[t]{0.47\textwidth} + \centering + \includegraphics[trim=0mm 0mm 4mm 0mm,clip,width=\linewidth]{figures/qfit_timestep_linear.pdf} + \end{subfigure} + \begin{subfigure}[t]{0.47\textwidth} + \centering + \includegraphics[trim=2mm 0mm 4mm 0mm,clip,width=\linewidth]{figures/qfit_timestep_quadratic.pdf} + \end{subfigure} + \caption{Linear (left) and quadratic (right) timestep fits to DMC data for a 32 atom supercell of MnO obtained with \texttt{qfit}. Zero timestep estimates are indicated by the red data point on the left side of either panel.\label{fig:qfit_timestep}} +\end{figure} + +Different fitting functions are supported via the ``\texttt{-f}'' option. +Currently supported options include \texttt{linear} ($a+bt$), +\texttt{quadratic} ($a+bt+ct^2$), and \texttt{sqrt} ($a+b\sqrt{t}+ct$). +Results for a quadratic fit are shown below as well as in the right +panel of Fig.~\ref{fig:qfit_timestep}. +\begin{shade} +>qfit ts -f quadratic -e30 -b4 -s2 -t '0.00125 0.0025 0.005 0.01 0.02 0.04' ./qmc*/*scalar* +fit function : quadratic +fitted formula: (-3848.245 +/- 0.047) + (-7.25 +/- 8.33)*t + (-285.00 +/- 202.39)*t^2 +intercept : -3848.245 +/- 0.047 Ha +\end{shade} +In this case we find a zero timestep estimate of $-3848.25(5)$ Ha$^{-1}$. +A timestep of $0.04$ Ha$^{-1}$ might be on the large side to include in +timestep extrapolation and it is likely to have an outsize influence +in the case of linear extrapolation. Upon excluding this point, linear +extrapolation yields a zero timestep value of $-3848.22(4)$ Ha$^{-1}$. +It should be noted that quadratic extrapolation can result in intrinsically +larger uncertainty in the extrapolated value. For example, when the $0.04$ +Ha$^{-1}$ point is excluded the uncertainty grows by 50\% and we obtain an +estimated value of $-3848.28(7)$ instead. + \section{Densities and spin-densities} diff --git a/manual/figures/qfit_timestep_linear.pdf b/manual/figures/qfit_timestep_linear.pdf new file mode 100644 index 0000000000000000000000000000000000000000..25be0f8c22e78d1fb9162b647d6b14f70113742a GIT binary patch literal 13025 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 literal 0 HcmV?d00001 diff --git a/manual/figures/qfit_timestep_quadratic.pdf b/manual/figures/qfit_timestep_quadratic.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4f805d88540cbae20ee577fe6be8885198755a96 GIT binary patch literal 13461 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 literal 0 HcmV?d00001 diff --git a/nexus/executables/qmcfit b/nexus/executables/qfit similarity index 99% rename from nexus/executables/qmcfit rename to nexus/executables/qfit index 458a102aa..10d868fc0 100755 --- a/nexus/executables/qmcfit +++ b/nexus/executables/qfit @@ -9,7 +9,7 @@ import inspect try: from scipy.optimize import fmin except ImportError: - print 'tsfit error: scipy is not present on your machine\n please install scipy and retry' + print 'qfit error: scipy is not present on your machine\n please install scipy and retry' #end try try: import matplotlib @@ -96,13 +96,13 @@ def message(msg,header=None,post_header=' message:',indent=' ',logfile=devlog #end def message -def warn(msg,header='qmcfit',indent=' ',logfile=devlog): +def warn(msg,header='qfit',indent=' ',logfile=devlog): post_header=' warning:' message(msg,header,post_header,indent,logfile) #end def warn -def error(msg,header='qmcfit',exit=True,trace=False,indent=' ',logfile=devlog): +def error(msg,header='qfit',exit=True,trace=False,indent=' ',logfile=devlog): post_header=' error:' message(msg,header,post_header,indent,logfile) if exit: @@ -1517,7 +1517,7 @@ def timestep_fit(): if __name__=='__main__': fit_types = sorted(all_fit_functions.keys()) if len(sys.argv)<2: - error('first argument must be type of fit\ne.g. for a timestep fit, type "qmcfit ts ..."\nvalid fit types are: {0}'.format(fit_types)) + error('first argument must be type of fit\ne.g. for a timestep fit, type "qfit ts ..."\nvalid fit types are: {0}'.format(fit_types)) #end if fit_type = sys.argv[1] if fit_type in fit_types: