2 # amberparm2molby: read amber .dat file and convert to a Molby parameter file
3 # input (stdin): a .dat file
4 # output (stdout): a Molby parm file
5 # Written as amberparm2namd.pl by Toshi Nagata, Dec 2 2004
6 # Updated for Molby, Nov 13 2009
16 $com =~ s/(^\s*)|(\s*$)//g;
20 } elsif ($com ne "") {
29 ($aname, $molw, $pol, $com) = unpack("A2 x1 A10 A10 A77", $_ . $blanks);
31 $molws{$aname} = $molw;
32 $comments{$aname} = format_com($com);
42 ($a1, $a2, $fc, $len, $com) = unpack("A2 x1 A2 A10 A10 A75", $_ . $blanks);
43 printf "bond %-2s %-2s %7.1f %5.3f%s\n", $a1, $a2, $fc, $len, format_com($com);
51 ($a1, $a2, $a3, $fc, $ang, $com) = unpack("A2 x1 A2 x1 A2 A10 A10 A72", $_ . $blanks);
52 printf "angle %-2s %-2s %-2s %7.1f %5.2f%s\n", $a1, $a2, $a3, $fc, $ang, format_com($com);
60 ($a1, $a2, $a3, $a4, $div, $fc, $ang, $per, $com) = unpack("A2 x1 A2 x1 A2 x1 A2 A4 A15 A15 A15 A40", $_ . $blanks);
65 printf "dihe %-2s %-2s %-2s %-2s %7.2f %7d %7.2f%s\n", $a1, $a2, $a3, $a4, $fc, $per, $ang, format_com($com);
73 ($a1, $a2, $a3, $a4, $div, $fc, $ang, $per, $com) = unpack("A2 x1 A2 x1 A2 x1 A2 A4 A15 A15 A15 A40", $_ . $blanks);
74 printf "impr %-2s %-2s %-2s %-2s %7.2f %7d %7.2f%s\n", $a1, $a2, $a3, $a4, $fc, $per, $ang, format_com($com);
78 $line = <>; # H-bond param
86 foreach $i (unpack("A2 x2" x 20, $_ . $blanks)) {
89 } elsif ($i !~ /^\s*$/) {
90 push @{$equil{$label}}, $i;
98 ($label, $kind) = unpack("A4 x6 A2", $_. $blanks);
99 if ($label eq "END") {
103 print STDERR "The vdW parameter other than 'RE' format ($kind) is not supported yet.\n";
104 print STDERR "\$_='$_'\n\$label='$label'\n\$kind='$kind'\n";
110 ($sym, $r, $edep) = unpack("x2 A2 x6 A10 A10", $_ . $blanks);
111 $sigma = 2 * $r * 0.890899; # sigma = 2R * (1/2)**(1/6)
112 printf "vdw %-2s %7.4f %7.4f %7.4f %7.4f %d %7.3f%s\n", $sym, $edep, $r, $edep, $r, 0, $molws{$sym}, $comments{$sym};
113 foreach $sym2 (@{$equil{$sym}}) {
114 printf "vdw %-2s %7.4f %7.4f %7.4f %7.4f %d %7.3f%s\n", $sym2, $edep, $r, $edep, $r, 0, $molws{$sym2}, $comments{$sym2};