[gmx-users] Re: Creating an atomtype where all nonbonded interactions are enumerated

Justin A. Lemkul jalemkul at vt.edu
Thu Mar 22 19:08:04 CET 2012



Andrew DeYoung wrote:
> Hi Justin,
> 
> Thank you very much for all your time and help!
> 
> If you have time, can someone please help me understand how to read a .tpr
> file?  I convertied my .tpr file to human-readable form using "gmxdump -s
> topol.tpr".
> 
> Following an enumeration of all of the .mdp-like parameters, I see the
> following section:
> 
> ------------------------------------------------------------------
> topology:
>    name="IL"
>    #atoms               = 6144
>    molblock (0):
>       moltype              = 0 "EMI"
>       #molecules           = 256
>       #atoms_mol           = 19
>       #posres_xA           = 0
>       #posres_xB           = 0
>    molblock (1):
>       moltype              = 1 "BF4"
>       #molecules           = 256
>       #atoms_mol           = 5
>       #posres_xA           = 0
>       #posres_xB           = 0
>    ffparams:
>       atnr=8
>       ntypes=100
>          functype[0]=LJ_SR, c6= 3.35274590e-03, c12= 3.95094276e-06
>          functype[1]=LJ_SR, c6= 2.60915095e-03, c12= 3.84019631e-06
>          functype[2]=LJ_SR, c6= 2.80388421e-03, c12= 4.30620821e-06
> ;...
>          functype[63]=LJ_SR, c6= 0.00000000e+00, c12= 0.00000000e+00
>          functype[64]=BONDS, b0A= 1.46600e-01, cbA= 2.82000e+05, b0B=
> 1.46600e-01, cbB= 2.82000e+05
> ;...
>          functype[70]=BONDS, b0A= 1.08000e-01, cbA= 3.07106e+05, b0B=
> 1.08000e-01, cbB= 3.07106e+05
>          functype[71]=ANGLES, thA= 1.26400e+02, ctA= 5.85200e+02, thB=
> 1.26400e+02, ctB= 5.85200e+02
> ;...
>          functype[81]=ANGLES, thA= 1.12700e+02, ctA= 8.36800e+02, thB=
> 1.12700e+02, ctB= 8.36800e+02
>          functype[82]=RBDIHS, rbcA[0]= 1.94599991e+01, rbcA[1]=
> 0.00000000e+00, rbcA[2]=-1.94599991e+01, rbcA[3]= 0.00000000e+00, rbcA[4]=
> 0.00000000e+00, rbcA[5]= 0.00000000e+00
> rbcB[0]= 1.94599991e+01, rbcB[1]= 0.00000000e+00, rbcB[2]=-1.94599991e+01,
> rbcB[3]= 0.00000000e+00, rbcB[4]= 0.00000000e+00, rbcB[5]= 0.00000000e+00
> ;...
>          functype[88]=RBDIHS, rbcA[0]= 6.65499985e-01, rbcA[1]=
> 1.99650002e+00, rbcA[2]= 0.00000000e+00, rbcA[3]=-2.66199994e+00, rbcA[4]=
> 0.00000000e+00, rbcA[5]= 0.00000000e+00
> rbcB[0]= 6.65499985e-01, rbcB[1]= 1.99650002e+00, rbcB[2]= 0.00000000e+00,
> rbcB[3]=-2.66199994e+00, rbcB[4]= 0.00000000e+00, rbcB[5]= 0.00000000e+00
>          functype[89]=LJ14, c6A= 1.30457547e-03, c12A= 1.92009816e-06, c6B=
> 1.30457547e-03, c12B= 1.92009816e-06
> ;...
>          functype[97]=LJ14, c6A= 6.12890653e-05, c12A= 1.49631507e-08, c6B=
> 6.12890653e-05, c12B= 1.49631507e-08
>          functype[98]=BONDS, b0A= 1.39300e-01, cbA= 2.42672e+05, b0B=
> 1.39300e-01, cbB= 2.42672e+05
>          functype[99]=ANGLES, thA= 1.09500e+02, ctA= 4.18400e+02, thB=
> 1.09500e+02, ctB= 4.18400e+02
>       reppow               = 12
>       fudgeQQ              = 0.5
> ------------------------------------------------------------------
> 
> My question is, how can I tell which atomtypes or pairs (I am not sure if
> the indices refer to atomtypes or pairs) each "functype[*]=LJ_SR, c6=*,
> c12=*" refers to?  Each LJ_SR entry is indexed, but how do I determine what
> the indices refer to?
> 
> In my .itp files which comprise my homemade force field, I define 22 unique
> atomtypes, but here in the .tpr file, 63 LJ_SR entries are present.  Does
> this mean that the LJ_SR entries refer to pairs of atoms?
> 

I haven't dissected this information for a while, but here's my understanding. 
Someone please correct me if I'm wrong.  The list contains all the function 
types that are used in the simulation, with each assigned an index.  What you're 
interested in are the LJ_SR parameters, which are constructed (again, this is 
just my interpretation from systems that I have used) by stepping through all of 
the atoms in each molecule and adding a new function when it is needed.  That 
is, for a simple protein using Gromos96 53A6, the first few lines are (my 
comments added after ';'):

functype[0]=LJ_SR, c6= 2.43640970e-03, c12= 2.31952890e-06  ; NL-NL
functype[1]=LJ_SR, c6= 0.00000000e+00, c12= 0.00000000e+00  ; H-NL
functype[2]=LJ_SR, c6= 3.84514406e-03, c12= 1.50015503e-05  ; CH1-NL
functype[3]=LJ_SR, c6= 4.26569115e-03, c12= 8.87604438e-06  ; CH2-NL

Thus it is stepping through each new atomtype (mapped to N, H, C-alpha, C-beta, 
etc) in the amino acid and generating parameters for interactions between itself 
and all prior atomtypes that have been encountered.  You can check in the 
[nonbond_params] directive to see where some special values are used.  For 
Gromos96, NL-NL interactions have no special values to them, the normal C6/C12 
parameters are used.  This is not, however, the case for other atomtypes, where 
special combinations are used.

> Later in the .tpr file, the residue types are listed, along with the atom
> names.  For example, 
> 
> ------------------------------------------------------------------
>    moltype (0):
>       name="EMI"
>       atoms:
>          atom (19):
>             atom[     0]={type=  0, typeB=  0, ptype=    Atom, m=
> 1.40067e+01, q= 1.50000e-01, mB= 1.40067e+01, qB= 1.50000e-01, resind=    0,
> atomnumber=  7}
> ;...
>             atom[    18]={type=  3, typeB=  3, ptype=    Atom, m=
> 1.00790e+00, q= 6.00000e-02, mB= 1.00790e+00, qB= 6.00000e-02, resind=    0,
> atomnumber=  1}
>          atom (19):
>             atom[0]={name="NA"}
> ;...
>             atom[18]={name="HC"}
>          type (19):
>             type[0]={name="NA",nameB="NA"}
> ;...
>             type[18]={name="HC",nameB="HC"}
>          residue (1):
>             residue[0]={name="EMI", nr=1, ic=' '}
>       cgs:
>          nr=13
>          cgs[0]={0..1}
> ;...
>          cgs[12]={16..18}
>       excls:
>          nr=19
>          nra=195
>          excls[0][0..12]={0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13}
> ;...
>          excls[18][187..194]={1, 6, 7, 14, 15, 16, 17, 18}
>       Bond:
>          nr: 57
>          iatoms:
>             0 type=64 (BONDS) 0 2
> ;...
>             18 type=69 (BONDS) 7 18
>       Angle:
>          nr: 132
>          iatoms:
>             0 type=71 (ANGLES) 2 0 3
> ;...
>             32 type=75 (ANGLES) 17 7 18
>       Ryckaert-Bell.:
>          nr: 165
>          iatoms:
>             0 type=82 (RBDIHS) 0 3 1 5
> ;...
>             32 type=88 (RBDIHS) 15 6 7 18
>       LJ-14:
>          nr: 108
>          iatoms:
>             0 type=89 (LJ14) 0 6
> ;...
>             35 type=97 (LJ14) 15 18
> ------------------------------------------------------------------
> 
> and similarly for the other residues.  But, I do not see LJ_SR entries in
> these residue sections.  So, how can I determine what the LJ_SR entries are
> referring to near the beginning of the file?  
> 

That's what the "type=" field is for.  Each interaction can be mapped back to an 
earlier function type.

-Justin

-- 
========================================

Justin A. Lemkul
Ph.D. Candidate
ICTAS Doctoral Scholar
MILES-IGERT Trainee
Department of Biochemistry
Virginia Tech
Blacksburg, VA
jalemkul[at]vt.edu | (540) 231-9080
http://www.bevanlab.biochem.vt.edu/Pages/Personal/justin

========================================



More information about the gromacs.org_gmx-users mailing list