#!/usr/sbin/perl  
# testing DV
# Rebuild a AMBER PDB (protein) file into a CHARMM PDB file.
#
# usage: amber_protein_pdb_to_star.pl input.pdb output.pdb
#
#                                D.E. Volk  04/01/02
$pdbfile = shift(@ARGV);
$outfile = shift(@ARGV);
if (-e "$outfile") {
    unlink("$outfile");
}

open(PDB, "$pdbfile")  || die "Cannot open file $outfile";
open(OUT, ">$outfile") || die "Cannot open file $outfile2";

 foreach (<PDB>) {
   /^TER/ && (print OUT "$_");      # preserved TER
   /^END/ && (print OUT "$_");      # preserved END & ENDMDL
   /^TITLE/ && (print OUT "$_");    # preserved TITLE
   /^MODEL/ && (print OUT "$_");    # preserved MODEL
   /^HEADER/ && (print OUT "$_");   # preserved HEADER
   /^COMPND/ && (print OUT "$_");   # preserved COMPND
   /^SOURCE/ && (print OUT "$_");   # preserved SOURCE
   /^KEYWDS/ && (print OUT "$_");   # preserved KEYWDS
   /^EXPDTA/ && (print OUT "$_");   # preserved EXPDTA
   /^AUTHOR/ && (print OUT "$_");   # preserved AUTHOR
   /^REVDAT/ && (print OUT "$_");   # preserved REVDAT
   /^JRNL/ && (print OUT "$_");     # preserved JRNL
   /^REMARK/ && (print OUT "$_");   # preserved REMARK
   /^DBREF/ && (print OUT "$_");    # preserved DBREF
   /^SEQRES/ && (print OUT "$_");   # preserved SEQRES
   /^HET / && (print OUT "$_");     # preserved HET (not HETATM) 
   /^HETNAM/ && (print OUT "$_");   # preserved HETNAM
   /^FORMUL/ && (print OUT "$_");   # preserved FORMUL
   /^HELIX/ && (print OUT "$_");    # preserved HELIX
   /^SHEET/ && (print OUT "$_");    # preserved SHEET
   /^CRYST/ && (print OUT "$_");    # preserved CRYST
   /^ORIG/ && (print OUT "$_");     # preserved ORIG
   /^SCALE/ && (print OUT "$_");    # preserved SCALE
   /^MASTER/ && (print OUT "$_");   # preserved MASTER
   chomp;                         # get rid of newline character
   next unless ( /ATOM/ || /HETATM/ );  # only do ATOM or HETATM lines
   /\bQ/ && next;
#   s/\+/ /;

   s/HIP/HIS/;       # Rename HIS residues
   s/HID/HIS/;
   s/\bHA2 /1HA /;   # Fix Glycine alpha protons
   s/\bHA3 /2HA /;
   /ALA/ && s/\bHB1 /1HB /;   # Fix Ala HB1
   /ALA/ && s/\bHB2 /2HB /;   # Fix Ala HB1
   /ALA/ && s/\bHB3 /3HB /;   # Fix Ala HB1
   s/\bHB2 /1HB /;   # fix geminal beta methylenes
   s/\bHB3 /2HB /;
   s/\bHG2 /1HG /;   # fix geminal gamma methylenes
   s/\bHG3 /2HG /;
   s/\bHD2 /1HD /;   # fix geminal delta methylenes
   s/\bHD3 /2HD /;
   /MET/ && s/\bHE1 /1HE /;  #fix methionine methyl
   /MET/ && s/\bHE2 /2HE /;
   /MET/ && s/\bHE3 /3HE /;
   /GLN/ && s/\bHE2 /1HE /;
   /GLN/ && s/\bHE3 /2HE /;
   s/\bHG11/1HG1/;
   s/\bHG12/2HG1/;
   s/\bHG13/3HG1/;
   s/\bHG21/1HG2/;
   s/\bHG22/2HG2/;
   s/\bHG23/3HG2/;
   s/\bHD11/1HD1/;   # fix luecine methyls
   s/\bHD12/2HD1/;
   s/\bHD13/3HD1/;
   s/\bHD21/1HD2/;
   s/\bHD22/2HD2/;
   s/\bHD23/3HD2/;
   s/\bHE11/1HE1/;   # fix luecine methyls
   s/\bHE12/2HE1/;
   s/\bHE21/1HE2/;   # fix luecine methyls
   s/\bHE22/2HE2/;
   s/\bHH11/1HH1/;   # fix arg eta protons
   s/\bHH12/2HH1/;
   s/\bHH21/1HH2/;   # fix arg eta protons
   s/\bHH22/2HH2/;
   s/\bH   / H  /;    # fix alignment
   s/\bHA  / HA /;    
   s/\bH1  / H1 /;    
   s/\bH2  / H2 /;    
   s/\bH3  / H3 /;    
   s/\bHB  / HB /;    
   s/\bHG  / HG /;   
   s/\bHG1 / HG1/;   
   s/\bHD1 / HD1/;   
   s/\bHE  / HE /;   
   s/\bHE1 / HE1/;   
   s/\bHE2 / HE2/;   
   s/\bHZ  / HZ /;   
   s/\bHZ1 / HZ1/;    
   s/\bHZ2 / HZ2/;    
   s/\bHZ3 / HZ3/;   
   s/\bHH  / HH /;    
   s/\bHH2 / HH2/;    
   s/\bHE3 / HE3/;    
   s/\bC   / C  /;    
   s/\bO   / O  /;    
   s/\bOH  / OH /;    
   s/\bN   / N  /;    
   s/\bCA  / CA /;    
   s/\bCB  / CB /;    
   s/\bCG  / CG /;    
   s/\bCG1 / CG1/;   
   s/\bCG2 / CG2/;  
   s/\bCD  / CD /; 
   s/\bCD1 / CD1/;    
   s/\bCD2 / CD2/;    
   s/\bCE  / CE /;    
   s/\bCE1 / CE1/;     
   s/\bCE2 / CE2/;     
   s/\bCE3 / CE3/;     
   s/\bCZ  / CZ /;     
   s/\bCZ2 / CZ2/;     
   s/\bCZ3 / CZ3/;     
   s/\bCH2 / CH2/;     
   s/\bNE  / NE /;     
   s/\bND1 / ND1/;     
   s/\bND2 / ND2/;     
   s/\bNE1 / NE1/;     
   s/\bNE2 / NE2/;     
   s/\bNH1 / NH1/;     
   s/\bNH2 / NH2/;     
   s/\bNZ  / NZ /;     
   s/\bOD1 / OD1/;     
   s/\bOD2 / OD2/;     
   s/\bOE1 / OE1/;     
   s/\bOE2 / OE2/;     
   s/\bOG  / OG /;     
   s/\bOG1 / OG1/;     
   s/\bSG  / SG /;     
   s/\bHG13 ILE/2HG1 ILE/;     
   s/\bHG12 ILE/1HG1 ILE/;     

   /TRP/ && s/HE2 /HE3 /;
   /ILE/ && s/CD  / CD1/;
   /ILE/ && s/CD  / CD1/;
   /TYR/ && s/1HD / HD2/;  
   /PHE/ && s/1HD / HD2/;  
   /HIS/ && s/1HD / HD2/; 

   print OUT "$_ \n";

}

close $pdbfile;
close $outfile;

#
format OUT =
ATOM  @#### @<<< @<<< @###    @###.###@###.###@###.###
      $anum,$anam,$rnam,$rnum,$x,     $y,     $z
.

