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