Re: [AMBER] Amber 11, Amber-Tools 1.5 and Amber-Tools 12 respgen Bug

From: Marko Wehle <Marko.Wehle.mpikg.mpg.de>
Date: Fri, 4 May 2012 17:38:18 +0200

Hello Francois,
thanks for your reply...so, the problem is not depending on the number of atoms at all and maybe it becomes more clear with the following explanations...

again to explain the error...
if a group containing x-times-8 (x=1,2,3,4,5,...,n) atoms, within a constrained-group-charge and is putted into a respgen inputfile like this:

GROUP 16 1.000
ATOM 1 N
ATOM 2 H1
ATOM 3 H2
ATOM 4 H3
ATOM 5 C
ATOM 6 HA
ATOM 7 CB
ATOM 8 HB2
ATOM 9 HB3
ATOM 10 CG
ATOM 11 OD1
ATOM 12 N2
ATOM 13 HD21
ATOM 14 HD22
ATOM 15 C
ATOM 16 O
GROUP 14 0.000
ATOM 17 N
ATOM 18 H
ATOM 19 C
ATOM 20 HA
ATOM 21 CB
ATOM 22 HB2
ATOM 23 HB3
ATOM 24 CG
ATOM 25 OD1
ATOM 26 N2
ATOM 27 HD21
ATOM 28 HD22
ATOM 29 C
ATOM 30 O


you get as RESP input from respgen something like this:

   16 1.000
    1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8
    1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16

   14 0.000
    1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24
    1 25 1 26 1 27 1 28 1 29 1 30
   14 0.000
    1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38
    1 39 1 40 1 41 1 42 1 43 1 44

but it should be this:

   16 1.000
    1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8
    1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16
   14 0.000
    1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24
    1 25 1 26 1 27 1 28 1 29 1 30
   14 0.000
    1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38
    1 39 1 40 1 41 1 42 1 43 1 44

so, there is this an additional blank-line after a x-times-8 fields entry...
corresponding code lines:
in ambertoolsxx/ -> antechamber/ -> respgen.c:

                                if(count >= 8) {
                                        count = 0;
                                        fprintf(fpout, "\n");
                                }
they are identical for ambertools1.5 (lines 367-370) and ambertools12 (lines 394-397)..

files are attached...

thanks a lot for your efforts...the bug is reported also to junwei wang, even with the corresponding code lines...
as alternative one can use this peace of bash-code to fix the problem too:

inputResp1="nameOfYourRespInputFile"
lines=(`awk '/[ ]*[0-9]+[ ]*.[0-9]+\.+[0-9]+/,/$/ { while ($0 !~ /^$/) { print NR; getline } }' $inputRESP1`)
firstLine=${lines[0]}
lastLine=${lines[${#lines[.]}-1]}
# begin from back, otherwise one screws line numbers for using sed!!!
      for (( j = $lastLine ; j >= $firstLine ; j-- )) do
        for (( k = ${#lines[.]}-1 ; k > 0 ; k-- )) do
          if [[ ${lines[$k]} == $j ]]; then
            echo found entry $k with ${lines[$k]} with j $j
            break
          elif [[ ${lines[$k]} < $j ]]; then
            echo couldn\'t find entry with j $j
            echo sed -ne "$j"p $inputRESP1
                 sed -ne "$j"p $inputRESP1
            echo sed -i "$j"d $inputRESP1
                 sed -i "$j"d $inputRESP1
            break
          fi
        done
      done
    echo
    echo


so, thats all at the moment ;)
all the best
Marko






_______________________________________________
AMBER mailing list
AMBER.ambermd.org
http://lists.ambermd.org/mailman/listinfo/amber

Received on Fri May 04 2012 - 09:00:04 PDT
Custom Search