Re: [AMBER] Exceed character limit in bellyrestraint mask selection

From: Mike Limb <>
Date: Fri, 18 Oct 2013 18:35:44 +0100

Dear Jason,

Many thanks for your useful reply.

I found a mask specification that allowed me to freeze all the atoms I
wanted. This was done with the command:

bellymask=(!.1962-1998,541-547,778-783 < :10.0)

this command allows me to freeze all residues that are within 10 A of the
QM region (which consists of atoms 1962-1998,541-547,778-783 ).

With this setup I then performed a two dimensional QM MM scan (adiabatic
mapping) with an x_series consisting of a distance restraint (between atom
782 to 1991) from 1.4 to 3.3 A and y_series consisting of a distance
restraint (1991 to 1993) from 4.1 to 1.4 A, thus generating a potential
energy surface.

On analysis of the results I noticed that there were large discontinuities
in the energies that I had calculated.

Inspection of my output files revealed that this was most likely due to the
fact that the region that fell within the belly mask restraint moved as the
size of the QM region changed during the reaction. As a result I was
getting inconsistencies in the size of my MM region (and frozen region) as
the scan progressed and hence jumps in the total energy.

I though that one way to solve this problem could be to use the positional
restraints with the restraint mask:

restraintmask=':* & (!.1962-1998,541-547,778-783 < :10.0)',

and then using a refc structure, however, upon testing it seems that the
atoms that are included in the restraint are still selected using the
coordinate file that is read in at the beginning of the optimisation and
therefore the same problem of a changing frozen region still remains.

Consequently, I believe my only option left it to use the Group selection
detailed in Appendix B. Upon attempting this I don't understand the
documentation or the example that is given and how I can use the group
selection to allow me to select the residues that I would like to fix in my
optimisations (a list of which are attached).

As a result I was wondering if you could give me some guidance how I could
do a setup of this type.

eg say I had a ligand (resid 1) and surrounded by a two solvation layers of
water the first consisting of residues 2-10 and the second consisting of

How could I use the group selection to tell sander during the optimisation
to do a QM optimisation of the ligand, MM on the rest of the system, *BUT
freezing the coordinates of the second solvation shell by specifying them
by the residue number using the group selection. *

Many apologies for the long description and thanks in advance for your


On 15 October 2013 17:34, Jason Swails <> wrote:

> On Tue, Oct 15, 2013 at 11:29 AM, Mike Limb <> wrote:
> > Dear AMBER users,
> >
> > I am setting up a QM/MM optimisation for a protein ligand system with
> > explicit solvent.
> >
> > My QM region consists of 50 atoms (a ligand and two residue side chains)
> > and the rest of the system is treated with MM.
> >
> > Within the MM region I would like to fix the positions of all the atoms
> of
> > any residues that are not within 10 A of the QM region. To do this I
> would
> > like to use the ibelly restraint. However, the problem arises here, as
> the
> > most economically way I can think to specify the moving atoms (using
> > residue numbers) in the bellyrestraint selection mask, still far exceeds
> > the 256 character limit imposed for the mask selection.
> >
> There is usually a way to beat this limit simply by making your mask
> smaller. Adjusting the mask length in the code is not as trivial as it
> should be, since it is hard-coded (as 256) in a couple places, most notably
> throughout the mask parser.
> A couple tips:
> 1) Use residue ranges when possible. For example,
> :1-10
> is equivalent to
> :1,2,3,4,5,6,7,8,9,10
> but is far shorter ;). You can also do combinations of ranges
> :1-5,6,8-10
> 2) Use relational operators (!, &, |) . Specifically the 'not' operator is
> quite helpful. If you want to select all residues _except_ certain ones,
> do something like
> !:1-5,6,8-10
> Which will match all residues except numbers 1, 2, 3, 4, 5, 6, 8, 9, and
> 10.
> 3) Use distance mask selections. If you want to select all residues within
> 10 Angstroms of a particular atom, do something like this:
> (.20 < :10.0)
> This will select all residues within 10 angstroms of atom number 20.
> Another example:
> (:20 < .10.0)
> This will select all atoms within 10 angstroms of residue number 20.
> Any and all of these can be combined. For instance,
> (.20 < :10) & :WAT
> will select all atoms that are in water residues within 10 angstroms of
> atom number 20. If there is absolutely no way to shorten your mask, then
> see below.
> > I have thought about trying to rename all the residues I want to select
> as
> > a separate residue number however,I believe, this would result in errors
> > when generating a topology file.
> >
> Speaking from experience, you will likely regret this choice. ParmEd
> makes it easier and safer (since you can adjust atom and residue names
> after tleap has built the topology file, but you will never get this
> through tleap, and you never know when a program may require those names be
> at least close to correct).
> > Looking through the mailing list archive I saw one solution purposed for
> a
> > user with a similar problem where she was instead limited by a restraint
> > mask limit was :
> >
> > "Use the "old style" restraints, i.e. using the group syntax, without the
> > restraintmask"
> >
> > but I don't understand what is meant by "using the group syntax, without
> > the restraintmask" and whether it is a viable solution to my problem!
> >
> Yes, it is a viable solution. It is a different (and older) way of making
> atom selections in sander and pmemd. It is actually reasonably powerful
> (and allows you to do one or two things that the mask syntax does not, like
> apply different restraint weights to different atom selections when using
> positional restraints). However, it requires that you learn a new syntax
> (and you typically need to know Amber masks when using ptraj or cpptraj,
> anyway).
> The syntax for making 'group'-based selections is found as an appendix in
> the Amber 12 manual.
> HTH,
> Jason
> --
> Jason M. Swails
> BioMaPS,
> Rutgers University
> Postdoctoral Researcher
> _______________________________________________
> AMBER mailing list

Mike Limb
PhD Candidate
SCI Scholar 2013-2016        **
Supervisor: Prof. Adrian Mulholland
Centre for Computational Chemistry
School of Chemistry
University of Bristol
Bristol BS8 1TS
Post-Graduate Research Senate Representative at UoB
Post-Graduate Research Representative University Graduate Studies Committee
at UoB
Broadcast Assistant BBC Introducing in the West at BBC Radio Bristol
Executive Producer of Burst Student Show at BCFM

AMBER mailing list

Received on Fri Oct 18 2013 - 11:00:04 PDT
Custom Search