[gmx-developers] Need to export hydrogen bond indices per frame

YOLANDA SMALL yas102 at psu.edu
Mon Jul 10 17:58:50 CEST 2006


Hello Gmx developers,

Does anyone know which lines need to be changed in the gmx_hbond.c code to
determine which donor-hydrogen-acceptor hbond indices exist at each frame?

In other words, I would like to export lines 1483 to 1505 (see below) for every
frame where a corresponding hydrogen bond exists (lines 2069 to 2073):

------begin line 1483----------
 if (bTwo)
    fprintf(fp,"[ hbonds_%s-%s ]\n",grpnames[0],grpnames[1]);
  else
    fprintf(fp,"[ hbonds_%s ]\n",grpnames[0]);

  for(i=0; (i<hb->d.nrd); i++) {
    ddd = hb->d.don[i];
    for(k=0; (k<hb->a.nra); k++) {
      aaa = hb->a.acc[k];
      for(m=0; (m<hb->d.nhydro[i]); m++) {
        if (hb->hbmap[i][k] && ISHB(hb->hbmap[i][k]->history[m])) {
          hhh = hb->d.hydro[i][m];

          sprintf(ds,"%s",mkatomname(atoms,ddd));
          sprintf(hs,"%s",mkatomname(atoms,hhh));
          sprintf(as,"%s",mkatomname(atoms,aaa));
          fprintf(fp,"%6u %6u %6u\n",ddd+1,hhh+1,aaa+1);
          if (fplog)
            fprintf(fplog,"%12s  %12s  %12s\n",ds,hs,as);
        }
      }
    }
  }
--------end line 1505------------


--------begin line 2069----------
  for(i=0; (i<nframes); i++) {
    fprintf(fp,"%10g  %10d  %10d\n",hb->time[i],hb->nhb[i],hb->ndist[i]);
    aver_nhb  += hb->nhb[i];
    aver_dist += hb->ndist[i];
  }
--------end line 2073------------

A little more background on why I need this....I ran a simulation for 400ns on a
large protein and I need to determine hydrogen bonding pathways between certain
residues.  I wrote an external code in Fortran 90 to calculate all possible
paths between residue A and B via other protein atoms or solvent. The input for
my external code relies on a file which I hope to make g_hbond export.  The
file is a four column format, for example:

Time donor-index hydrogen-index acceptor-index
0     1           2               25
0     3           4               25
0     25          26               5
0     16          17               33
0.025 1           2               25
0.025  3           4               25
0.025 25          26               5
0.050 16          17               33
0.050 1           2               25
0.075

This represents the identity of the hydrogen bonding triad at each frame and
will be blank if no hydrogen bonds exist for a frame.  Does anyone see a way
that I can change the gmx_hbond.c code to give me the output in this format in
a single file? 

Thanks in advance for your help,
Yolanda



More information about the gromacs.org_gmx-developers mailing list