From 79a80ea39c657fef65089ed4929d8d19e3df592b Mon Sep 17 00:00:00 2001 From: Carsten Kutzner Date: Wed, 5 Nov 2014 15:53:34 +0100 Subject: [PATCH] Updated some .mdp file variables to use "-" instead of deprecated "_" In the .mdp file, now a minus sign instead of an underline is generally used. Some sections of the manual still listed .mdp variable names in the old notation. - three manual sections (pulling, enforced rotation and computational electrophysiology) now use "-" instead of "_" in .mdp file variable names - updated output of rotation code to reflect this up-to-date notation - no functional changes are in this patch Change-Id: I7b00193d3e3d549ce8c9a728b307280c0bdd35ce --- docs/manual/special.tex | 68 ++++++++++++++--------------- src/gromacs/gmxlib/txtdump.c | 4 +- src/gromacs/gmxpreprocess/readrot.c | 46 +++++++++---------- src/gromacs/pulling/pull_rotation.c | 20 ++++----- 4 files changed, 69 insertions(+), 69 deletions(-) diff --git a/docs/manual/special.tex b/docs/manual/special.tex index 353d7cee79..7a86051ddb 100644 --- a/docs/manual/special.tex +++ b/docs/manual/special.tex @@ -234,14 +234,14 @@ to calculate the PMF of a lipid as function of its distance from the whole bilayer. The whole bilayer can be taken as reference group in that case, but it might also be of interest to define the reaction coordinate for the PMF more locally. The {\tt .mdp} option -{\tt pull_geometry = cylinder} does not +{\tt pull-geometry = cylinder} does not use all the atoms of the reference group, but instead dynamically only those -within a cylinder with radius {\tt r_1} around the pull vector going +within a cylinder with radius {\tt pull-r1} around the pull vector going through the pull group. This only works for distances defined in one dimension, and the cylinder is oriented with its long axis along this one dimension. A second cylinder -can be defined with {\tt r_0}, with a linear switch function that weighs -the contribution of atoms between {\tt r_0} and {\tt r_1} with +can be defined with {\tt pull-r0}, with a linear switch function that weighs +the contribution of atoms between {\tt pull-r0} and {\tt pull-r1} with distance. This smooths the effects of atoms moving in and out of the cylinder (which causes jumps in the pull forces). @@ -859,14 +859,14 @@ similar to those of $V\rotflextwo$ and $\ve{F}\rotflextwo$. \subsection{Usage} To apply enforced rotation, the particles $i$ that are to be subjected to one of the rotation potentials are defined via index groups -{\tt rot\_group0}, {\tt rot\_group1}, etc., in the {\tt .mdp} input file. +{\tt rot-group0}, {\tt rot-group1}, etc., in the {\tt .mdp} input file. The reference positions $\ve{y}_i^0$ are read from a special {\tt .trr} file provided to {\tt grompp}. If no such file is found, $\ve{x}_i(t=0)$ are used as reference positions and written to {\tt .trr} such that they can be used for subsequent setups. All parameters of the potentials such as $k$, $\epsilon'$, etc. (\tabref{vars}) are provided as {\tt .mdp} -parameters; {\tt rot\_type} selects the type of the potential. -The option {\tt rot\_massw} allows to choose whether or not to use +parameters; {\tt rot-type} selects the type of the potential. +The option {\tt rot-massw} allows to choose whether or not to use mass-weighted averaging. For the flexible potentials, a cutoff value $g_n^\mathrm{min}$ (typically $g_n^\mathrm{min}=0.001$) makes shure that only @@ -888,7 +888,7 @@ to additional output files and which are described below. \begin{tabular}{l>{$}l<{$}rccccccc} \hline parameter & & & $k$ & $\hat{\ve{v}}$ & $\ve{u}$ & $\omega$ & $\epsilon'$ & $\Delta x$ & $g_n^\mathrm{min}$ \\ -\multicolumn{3}{l}{{\tt .mdp} input variable name} & \smtt{k} & \smtt{vec} & \smtt{pivot} & \smtt{rate} & \smtt{eps} & \smtt{slab\_dist} & \smtt{min\_gauss} \\ +\multicolumn{3}{l}{{\tt .mdp} input variable name} & \smtt{k} & \smtt{vec} & \smtt{pivot} & \smtt{rate} & \smtt{eps} & \smtt{slab-dist} & \smtt{min-gauss} \\ unit & & & \kunit & - & nm & $^\circ$/ps & nm$^2$ & nm & \,-\, \\[1mm] \hline \multicolumn{2}{l}{fixed axis potentials:} & eqn.\\ isotropic & V\rotiso & (\ref{eqn:potiso}) & {\sf x} & {\sf x} & {\sf x} & {\sf x} & - & - & - \\ @@ -969,7 +969,7 @@ positions are weighted with the Gaussian function of slab $n$, and $\theta_\mathrm{fit}(t,n)$ is calculated as in \eqnref{rmsdfit}) from the Gaussian-weighted positions. -For all angles, the {\tt .mdp} input option {\tt rot\_fit\_method} controls +For all angles, the {\tt .mdp} input option {\tt rot-fit-method} controls whether a normal RMSD fit is performed or whether for the fit each position $\ve{x}_i$ is put at the same distance to the rotation axis as its reference counterpart $\ve{y}_i^0$. In the latter case, the RMSD @@ -977,7 +977,7 @@ measures only angular differences, not radial ones. \subsubsection*{Angle Determination by Searching the Energy Minimum} -Alternatively, for {\tt rot\_fit\_method = potential}, the angle of the rotation +Alternatively, for {\tt rot-fit-method = potential}, the angle of the rotation group is determined as the angle for which the rotation potential energy is minimal. Therefore, the used rotation potential is additionally evaluated for a set of angles around the current reference angle. In this case, the {\tt rotangles.log} output file @@ -1059,24 +1059,24 @@ The following {\tt .mdp} options control the CompEL protocol: {\small \begin{verbatim} swapcoords = Z ; Swap positions: no, X, Y, Z -swap_frequency = 100 ; Swap attempt frequency +swap-frequency = 100 ; Swap attempt frequency \end{verbatim}} Choose {\tt Z} if your membrane is in the $xy$-plane (\figref{compelsetup} A, B). Ions will be exchanged between compartments depending on their $z$-positions alone. -{\tt swap_frequency} determines how often a swap attempt will be made. +{\tt swap-frequency} determines how often a swap attempt will be made. This step requires that the positions of the ions, solvent, and swap groups are -communicated between the parallel ranks, so if chosen too small it can decrease the simulation +communicated between the parallel processes, so if chosen too small it can decrease the simulation performance. {\small \begin{verbatim} -split_group0 = channel0 ; Defines compartment boundary -split_group1 = channel1 ; Defines other compartment boundary -massw_split0 = no ; use mass-weighted center? -massw_split1 = no +split-group0 = channel0 ; Defines compartment boundary +split-group1 = channel1 ; Defines other compartment boundary +massw-split0 = no ; use mass-weighted center? +massw-split1 = no \end{verbatim}} -{\tt split_group0} and {\tt split_group1} are two index groups that define the boundaries +{\tt split-group0} and {\tt split-group1} are two index groups that define the boundaries between the two compartments, which are usually the centers of the channels. -If {\tt massw_split0} or {\tt massw_split1} are set to {\tt yes}, the center of mass +If {\tt massw-split0} or {\tt massw-split1} are set to {\tt yes}, the center of mass of each index group is used as boundary, here in $z$-direction. Otherwise, the geometrical centers will be used ($\times$ in \figref{compelsetup} A). If, such as here, a membrane channel is selected as split group, the center of the channel will define the dividing @@ -1084,19 +1084,19 @@ plane between the compartments (dashed horizontal line in the figure). All index must be defined in the index file. {\small \begin{verbatim} -swap_group = NA+_CL- ; Ions to be included in exchange -solvent_group = SOL ; Group name of solvent molecules -cyl0_r = 5.0 ; Split cylinder 0: pore radius (nm) -cyl0_up = 0.75 ; Split cylinder 0 upper extension (nm) -cyl0_down = 0.75 ; Split cylinder 0 lower extension (nm) -cyl1_r = 5.0 ; same for other channel -cyl1_up = 0.75 -cyl1_down = 0.75 -coupl_steps = 10 ; Average over these many swap steps +swap-group = NA+_CL- ; Ions to be included in exchange +solvent-group = SOL ; Group name of solvent molecules +cyl0-r = 5.0 ; Split cylinder 0: pore radius (nm) +cyl0-up = 0.75 ; Split cylinder 0 upper extension (nm) +cyl0-down = 0.75 ; Split cylinder 0 lower extension (nm) +cyl1-r = 5.0 ; same for other channel +cyl1-up = 0.75 +cyl1-down = 0.75 +coupl-steps = 10 ; Average over these many swap steps threshold = 1 ; Do not swap if < threshold \end{verbatim}} -{\tt swap_group} identifies the index group of ions that -should be involved in the flux and exchange cycles, {\tt solvent_group} defines the solvent +{\tt swap-group} identifies the index group of ions that +should be involved in the flux and exchange cycles, {\tt solvent-group} defines the solvent group with which they are swapped. The cylinder options only influence the counting of ions, i.e., ions will be counted as having traveled through either channel 0 or channel 1 according to the definition of (channel) cylinder radius, upper and lower extension, @@ -1104,14 +1104,14 @@ relative to the location of the respective split group. This will not affect the flux or exchange, but will provide you with the ion permeation numbers across each of the channels. Note that an ion can only be counted as passing through a particular channel if it is detected \emph{within} the defined split cylinder in a swap step. -If {\tt swap_frequency} is chosen too high, a particular ion may be detected in compartment {\bf A} +If {\tt swap-frequency} is chosen too high, a particular ion may be detected in compartment {\bf A} in one swap step, and in compartment {\bf B} in the following swap step, so it will be unclear through which of the channels it has passed. -{\tt coupl_steps} sets the number of swap attempt steps. A discrepancy between +{\tt coupl-steps} sets the number of swap attempt steps. A discrepancy between actual and reference ion numbers in each compartment must persist over this many attempts -before an actual exchange takes place. If {\tt coupl_steps} is set to 1, then the momentary ion distribution determines -whether ions are exchanged. {\tt coupl_steps} \textgreater\ 1 will use the time-average +before an actual exchange takes place. If {\tt coupl-steps} is set to 1, then the momentary ion distribution determines +whether ions are exchanged. {\tt coupl-steps} \textgreater\ 1 will use the time-average of ion distributions over the selected number of attempt steps instead. This can be useful, for example, when ions diffuse near compartment boundaries, which would lead to numerous unproductive ion exchanges. A {\tt threshold} of 1 means that a swap is performed if the average ion diff --git a/src/gromacs/gmxlib/txtdump.c b/src/gromacs/gmxlib/txtdump.c index 7d94359da5..9743fc16a8 100644 --- a/src/gromacs/gmxlib/txtdump.c +++ b/src/gromacs/gmxlib/txtdump.c @@ -792,8 +792,8 @@ static void pr_rotgrp(FILE *fp, int indent, int g, t_rotgrp *rotg) PR("rot-min-gauss", rotg->min_gaussian); PR("rot-eps", rotg->eps); PS("rot-fit-method", EROTFIT(rotg->eFittype)); - PI("rot_potfit_nstep", rotg->PotAngle_nstep); - PR("rot_potfit_step", rotg->PotAngle_step); + PI("rot-potfit-nstep", rotg->PotAngle_nstep); + PR("rot-potfit-step", rotg->PotAngle_step); } static void pr_rot(FILE *fp, int indent, t_rot *rot) diff --git a/src/gromacs/gmxpreprocess/readrot.c b/src/gromacs/gmxpreprocess/readrot.c index cc25957b1a..237ea878db 100644 --- a/src/gromacs/gmxpreprocess/readrot.c +++ b/src/gromacs/gmxpreprocess/readrot.c @@ -80,15 +80,15 @@ extern char **read_rotparams(int *ninp_p, t_inpfile **inp_p, t_rot *rot, /* read rotation parameters */ CTYPE("Output frequency for angle, torque and rotation potential energy for the whole group"); - ITYPE("rot_nstrout", rot->nstrout, 100); + ITYPE("rot-nstrout", rot->nstrout, 100); CTYPE("Output frequency for per-slab data (angles, torques and slab centers)"); - ITYPE("rot_nstsout", rot->nstsout, 1000); + ITYPE("rot-nstsout", rot->nstsout, 1000); CTYPE("Number of rotation groups"); - ITYPE("rot_ngroups", rot->ngrp, 1); + ITYPE("rot-ngroups", rot->ngrp, 1); if (rot->ngrp < 1) { - gmx_fatal(FARGS, "rot_ngroups should be >= 1"); + gmx_fatal(FARGS, "rot-ngroups should be >= 1"); } snew(rot->grp, rot->ngrp); @@ -100,19 +100,19 @@ extern char **read_rotparams(int *ninp_p, t_inpfile **inp_p, t_rot *rot, rotg = &rot->grp[g]; snew(grpbuf[g], STRLEN); CTYPE("Rotation group name"); - sprintf(buf, "rot_group%d", g); + sprintf(buf, "rot-group%d", g); STYPE(buf, grpbuf[g], ""); CTYPE("Rotation potential. Can be iso, iso-pf, pm, pm-pf, rm, rm-pf, rm2, rm2-pf, flex, flex-t, flex2, flex2-t"); - sprintf(buf, "rot_type%d", g); + sprintf(buf, "rot-type%d", g); ETYPE(buf, rotg->eType, erotg_names); CTYPE("Use mass-weighting of the rotation group positions"); - sprintf(buf, "rot_massw%d", g); + sprintf(buf, "rot-massw%d", g); ETYPE(buf, rotg->bMassW, yesno_names); CTYPE("Rotation vector, will get normalized"); - sprintf(buf, "rot_vec%d", g); + sprintf(buf, "rot-vec%d", g); STYPE(buf, s_vec, "1.0 0.0 0.0"); string2dvec(s_vec, vec); /* Normalize the rotation vector */ @@ -122,7 +122,7 @@ extern char **read_rotparams(int *ninp_p, t_inpfile **inp_p, t_rot *rot, } else { - sprintf(warn_buf, "rot_vec%d = 0", g); + sprintf(warn_buf, "rot-vec%d = 0", g); warning_error(wi, warn_buf); } fprintf(stderr, "%s Group %d (%s) normalized rot. vector: %f %f %f\n", @@ -133,7 +133,7 @@ extern char **read_rotparams(int *ninp_p, t_inpfile **inp_p, t_rot *rot, } CTYPE("Pivot point for the potentials iso, pm, rm, and rm2 (nm)"); - sprintf(buf, "rot_pivot%d", g); + sprintf(buf, "rot-pivot%d", g); STYPE(buf, s_vec, "0.0 0.0 0.0"); clear_dvec(vec); if ( (rotg->eType == erotgISO) || (rotg->eType == erotgPM) || (rotg->eType == erotgRM) || (rotg->eType == erotgRM2) ) @@ -146,57 +146,57 @@ extern char **read_rotparams(int *ninp_p, t_inpfile **inp_p, t_rot *rot, } CTYPE("Rotation rate (degree/ps) and force constant (kJ/(mol*nm^2))"); - sprintf(buf, "rot_rate%d", g); + sprintf(buf, "rot-rate%d", g); RTYPE(buf, rotg->rate, 0.0); - sprintf(buf, "rot_k%d", g); + sprintf(buf, "rot-k%d", g); RTYPE(buf, rotg->k, 0.0); if (rotg->k <= 0.0) { - sprintf(warn_buf, "rot_k%d <= 0", g); + sprintf(warn_buf, "rot-k%d <= 0", g); warning_note(wi, warn_buf); } CTYPE("Slab distance for flexible axis rotation (nm)"); - sprintf(buf, "rot_slab_dist%d", g); + sprintf(buf, "rot-slab-dist%d", g); RTYPE(buf, rotg->slab_dist, 1.5); if (rotg->slab_dist <= 0.0) { - sprintf(warn_buf, "rot_slab_dist%d <= 0", g); + sprintf(warn_buf, "rot-slab-dist%d <= 0", g); warning_error(wi, warn_buf); } CTYPE("Minimum value of Gaussian function for the force to be evaluated (for flex* potentials)"); - sprintf(buf, "rot_min_gauss%d", g); + sprintf(buf, "rot-min-gauss%d", g); RTYPE(buf, rotg->min_gaussian, 1e-3); if (rotg->min_gaussian <= 0.0) { - sprintf(warn_buf, "rot_min_gauss%d <= 0", g); + sprintf(warn_buf, "rot-min-gauss%d <= 0", g); warning_error(wi, warn_buf); } CTYPE("Value of additive constant epsilon' (nm^2) for rm2* and flex2* potentials"); - sprintf(buf, "rot_eps%d", g); + sprintf(buf, "rot-eps%d", g); RTYPE(buf, rotg->eps, 1e-4); if ( (rotg->eps <= 0.0) && (rotg->eType == erotgRM2 || rotg->eType == erotgFLEX2) ) { - sprintf(warn_buf, "rot_eps%d <= 0", g); + sprintf(warn_buf, "rot-eps%d <= 0", g); warning_error(wi, warn_buf); } CTYPE("Fitting method to determine angle of rotation group (rmsd, norm, or potential)"); - sprintf(buf, "rot_fit_method%d", g); + sprintf(buf, "rot-fit-method%d", g); ETYPE(buf, rotg->eFittype, erotg_fitnames); CTYPE("For fit type 'potential', nr. of angles around the reference for which the pot. is evaluated"); - sprintf(buf, "rot_potfit_nsteps%d", g); + sprintf(buf, "rot-potfit-nsteps%d", g); ITYPE(buf, rotg->PotAngle_nstep, 21); if ( (rotg->eFittype == erotgFitPOT) && (rotg->PotAngle_nstep < 1) ) { - sprintf(warn_buf, "rot_potfit_nsteps%d < 1", g); + sprintf(warn_buf, "rot-potfit-nsteps%d < 1", g); warning_error(wi, warn_buf); } CTYPE("For fit type 'potential', distance in degrees between two consecutive angles"); - sprintf(buf, "rot_potfit_step%d", g); + sprintf(buf, "rot-potfit-step%d", g); RTYPE(buf, rotg->PotAngle_step, 0.25); } diff --git a/src/gromacs/pulling/pull_rotation.c b/src/gromacs/pulling/pull_rotation.c index cdee91efff..4ab6b30cb8 100644 --- a/src/gromacs/pulling/pull_rotation.c +++ b/src/gromacs/pulling/pull_rotation.c @@ -874,7 +874,7 @@ static FILE *open_rot_out(const char *fn, t_rot *rot, const output_env_t oenv) fp = xvgropen(fn, "Rotation angles and energy", "Time (ps)", "angles (degrees) and energies (kJ/mol)", oenv); fprintf(fp, "# Output of enforced rotation data is written in intervals of %d time step%s.\n#\n", rot->nstrout, rot->nstrout > 1 ? "s" : ""); fprintf(fp, "# The scalar tau is the torque (kJ/mol) in the direction of the rotation vector v.\n"); - fprintf(fp, "# To obtain the vectorial torque, multiply tau with the group's rot_vec.\n"); + fprintf(fp, "# To obtain the vectorial torque, multiply tau with the group's rot-vec.\n"); fprintf(fp, "# For flexible groups, tau(t,n) from all slabs n have been summed in a single value tau(t) here.\n"); fprintf(fp, "# The torques tau(t,n) are found in the rottorque.log (-rt) output file\n"); @@ -886,19 +886,19 @@ static FILE *open_rot_out(const char *fn, t_rot *rot, const output_env_t oenv) fprintf(fp, "#\n"); fprintf(fp, "# ROTATION GROUP %d, potential type '%s':\n", g, erotg_names[rotg->eType]); - fprintf(fp, "# rot_massw%d %s\n", g, yesno_names[rotg->bMassW]); - fprintf(fp, "# rot_vec%d %12.5e %12.5e %12.5e\n", g, rotg->vec[XX], rotg->vec[YY], rotg->vec[ZZ]); - fprintf(fp, "# rot_rate%d %12.5e degrees/ps\n", g, rotg->rate); - fprintf(fp, "# rot_k%d %12.5e kJ/(mol*nm^2)\n", g, rotg->k); + fprintf(fp, "# rot-massw%d %s\n", g, yesno_names[rotg->bMassW]); + fprintf(fp, "# rot-vec%d %12.5e %12.5e %12.5e\n", g, rotg->vec[XX], rotg->vec[YY], rotg->vec[ZZ]); + fprintf(fp, "# rot-rate%d %12.5e degrees/ps\n", g, rotg->rate); + fprintf(fp, "# rot-k%d %12.5e kJ/(mol*nm^2)\n", g, rotg->k); if (rotg->eType == erotgISO || rotg->eType == erotgPM || rotg->eType == erotgRM || rotg->eType == erotgRM2) { - fprintf(fp, "# rot_pivot%d %12.5e %12.5e %12.5e nm\n", g, rotg->pivot[XX], rotg->pivot[YY], rotg->pivot[ZZ]); + fprintf(fp, "# rot-pivot%d %12.5e %12.5e %12.5e nm\n", g, rotg->pivot[XX], rotg->pivot[YY], rotg->pivot[ZZ]); } if (bFlex) { - fprintf(fp, "# rot_slab_distance%d %f nm\n", g, rotg->slab_dist); - fprintf(fp, "# rot_min_gaussian%d %12.5e\n", g, rotg->min_gaussian); + fprintf(fp, "# rot-slab-distance%d %f nm\n", g, rotg->slab_dist); + fprintf(fp, "# rot-min-gaussian%d %12.5e\n", g, rotg->min_gaussian); } /* Output the centers of the rotation groups for the pivot-free potentials */ @@ -914,7 +914,7 @@ static FILE *open_rot_out(const char *fn, t_rot *rot, const output_env_t oenv) if ( (rotg->eType == erotgRM2) || (rotg->eType == erotgFLEX2) || (rotg->eType == erotgFLEX2T) ) { - fprintf(fp, "# rot_eps%d %12.5e nm^2\n", g, rotg->eps); + fprintf(fp, "# rot-eps%d %12.5e nm^2\n", g, rotg->eps); } if (erotgFitPOT == rotg->eFittype) { @@ -1107,7 +1107,7 @@ static FILE *open_torque_out(const char *fn, t_rot *rot) fprintf(fp, "# Rotation group %d (%s), slab distance %f nm.\n", g, erotg_names[rotg->eType], rotg->slab_dist); fprintf(fp, "# The scalar tau is the torque (kJ/mol) in the direction of the rotation vector.\n"); fprintf(fp, "# To obtain the vectorial torque, multiply tau with\n"); - fprintf(fp, "# rot_vec%d %10.3e %10.3e %10.3e\n", g, rotg->vec[XX], rotg->vec[YY], rotg->vec[ZZ]); + fprintf(fp, "# rot-vec%d %10.3e %10.3e %10.3e\n", g, rotg->vec[XX], rotg->vec[YY], rotg->vec[ZZ]); fprintf(fp, "#\n"); } } -- 2.22.0