Re: [AMBER] RDC and alignment tensor

From: Thomas Cheatham III <>
Date: Fri, 16 Oct 2009 14:45:25 -0600 (Mountain Daylight Time)

> We are trying to apply RDC constraints to our system.
> We used PALES to generate preliminary alignment tensor components. In the
> PALES output file, it is reported the 'Data Saupe Matrix' and the 'Data
> irreducible representation'.
> Which representation should I use for the initial values of the cartesian
> components of the alignment tensor (s11,s12,s13,s22,s23) ?
> And also, do I need to multiply by 10**5 as the manual suggests?

Hopefully I have this right, otherwise DAC can correct me :-)

I do not know how to do the conversion's yet from PALES or X-Plor, but I
can tell you how to get an initial alignment tensor that works in MD
with AMBER... In the RDC file, in the &align namelist, set
freezemol=.true., i.e.

  ndip=51, dcut = -1.0, gigj = 51*7.84665, dwt = 51*0.05,
  s11 = -16.662, s22 = -14.584, s12 = -21.116, s13 = 54.695, s23 = -38.250,

   id(1)=12, jd(1)=13, dobsu(1)= 22.60, dobsl(1)= 22.60,
   id(2)=9, jd(2)=10, dobsu(2)= -11.60, dobsl(2)= -11.60,

You can have any initial sXY values. Note that the DWT values have to
be fairly low; when we used higher values, the restraints were too
strong leading to high frequencies in MD and shake failure...

Then perform a minimization (it will usually converge in fewer than 1000

   imin=1, maxcyc=1000, ncyc=1000,
   ntc=2, ntf=2, nscm=500,
 &wt TYPE='END',

This will converge to the "AMBER" definitions of the alignment tensor
(which depend on the orientation of the molecule). These can be extracted
from the mdout file with the following Perl script. Note that you will
want to remove freezemol=.true. from "rdc-restraints.dip" during the MD!
At the end of each MD run, I run the Perl script again to get the tensors
for the next round of MD...


while ( <> ) {

    $text = $_;

    if ( /Alignment tensor/ ) {

        $_ = $text;
        ($s11, $s12, $s13) = / * Alignment tensor: (.*\d*\.\d*) *(.*\d*\.\d*) *(.*\d*\.\d*) */;
        $_ = <>;
        ($s21, $s22, $s23) = / * (.*\d*\.\d*) *(.*\d*\.\d*) *(.*\d*\.\d*) */;
        $_ = <>;
        ($s31, $s32, $s33) = / * (.*\d*\.\d*) *(.*\d*\.\d*) *(.*\d*\.\d*) */;


printf(" Final alignment tensor found: \n");
printf(" %7.3f %7.3f %7.3f\n", $s11, $s12, $s13);
printf(" %7.3f %7.3f %7.3f\n", $s21, $s22, $s23);
printf(" %7.3f %7.3f %7.3f\n\n", $s31, $s32, $s33);

rename "rdc-restraints.dip", "rdc-restraints.dip.bak";

open(IN, "rdc-restraints.dip.bak") || die;
open(OUT, "> rdc-restraints.dip") || die;

while (<IN>) {
    $text = $_;

    if ( /s11 =/ ) {
        printf(OUT " s11 = %7.3f, s22 = %7.3f, s12 = %7.3f, s13 = %7.3f, s23 = %7.3f,\n",
               $s11, $s22, $s12, $s13, $s23);
    } else {
        print OUT $text;



Hope this helps --tec3

AMBER mailing list
Received on Fri Oct 16 2009 - 14:00:02 PDT
Custom Search