Re: [AMBER] [cpptraj] Problem with nativecontacts

From: Daniel Roe <>
Date: Wed, 28 Jan 2015 08:56:12 -0700


I have some comments on your input script below, but first let me
address your concerns regarding the 'nativecontacts' action.

On Wed, Jan 28, 2015 at 6:02 AM, Juan Eiros Zamora
<> wrote:
> In particular, I am specifying as <mask2> the CA of one of the subunits
> (:1-161.CA), and <mask1> as the CA of the other subunit I am interested in
> (:249-458.CA). I am also enabling the results to be written as a contacts
> map in 2D with the map flag. Nevertheless, the results I am getting from
> this map file are not normalised from 0 to 1, and the interactions are
> recorded between from :1 to :458, thus obtaining a symmetrical map.

Unless your distance cutoff is actually satisfied throughout the
entire simulation, you will not obtain a contact value of 1.0. If you
know for a fact that for example the CA of residues ~50 and ~400 are
within 5.4 Ang. throughout the simulation then there may be a bug.
Currently the matrix dimensions are determined by the max and minimum
values (atoms or residues) in either mask, so essentially the map is
always symmetric. This is done because non-native contacts, which are
by definition unknown a priori, are also included (they subtract from
the map instead of add like native contacts).

The 'nativecontacts' action is fairly new, and not quite polished, so
feedback like this is extremely appreciated. I've been working on
several enhancements to this action to make it more user-friendly
(ability to create a time-series for native contacts, splitting the
single map into separate native and non-native contact maps etc) which
will be available in the next cpptraj release.

Based on the output from 'nativecontacts', you may want to take a look
at the 'filter' or 'outtraj' (with 'maxmin' keyword) to select frames
which match your criterion. For example, say that you know from
'nativecontacts' that residues 50 and 400 and 10 and 300 are important
contacts. You could use the following input to obtain an average
structure of frames where both contacts are formed:

parm nowatcompletehow.prmtop
distance contact1 :50.CA :400.CA
distance contact2 :10.CA :300.CA
filter contact1 min 0.0 max 5.4
filter contact2 min 0.0 max 5.4
average contacts.rst7

> trajin
> average
> reference [ref1]

Note that the above input may not work as you expect. The 'average'
command requests that an average structure be created, but until the
run is finished that file is not present, so the subsequent
'reference' command will try to read the '' file that is there,
not the one being generated by the 'average' command. Better input
would be like so:

parm nowatcompletehow.prmtop
reference [ref1]
nativecontacts :249-458.CA :1-161.CA distance 5.4 ref [ref1] byresidue \
  map mapout map2.dat

In this case the first 'run' will execute the 'average' command and
create, then the second 'run' command will execute the
'nativecontacts' command. The Action queue is cleared after every run
but topologies/trajectories are not (to enable multiple passes like
the above example). I've got some improvements in the works that will
allow cpptraj to treat reference structures like data sets (so e.g.
the 'average' action could generate a reference structure without
having to write it and read it back in).

Also, you may want to add an 'rms first' command before 'average' to
remove global translational/rotational motion from your average

Hope this helps,


Daniel R. Roe, PhD
Department of Medicinal Chemistry
University of Utah
30 South 2000 East, Room 307
Salt Lake City, UT 84112-5820
(801) 587-9652
(801) 585-6208 (Fax)
AMBER mailing list
Received on Wed Jan 28 2015 - 08:00:04 PST
Custom Search