#!/bin/sh

# RETRIEVE ALL TITRATABLE RESIDUES FROM A PDB FILE

pdb=$1
aa=(ALA ARG ASN ASP CYS GLY GLN GLU HIS ILE LEU LYS MET PHE PRO VAL SER THR TRP TYR) 

chains=`egrep "^(ATOM  |HETATM)" $pdb | cut -b 22 | uniq`

for i in ${chains[@]}; do

  # LYSINES, ASPARTATES, GLUTAMATES, HISTIDINES

  LYS=(`egrep "^ATOM  .{7}CA  LYS.$i" $pdb | cut -b 23-26`)
  ASP=(`egrep "^ATOM  .{7}CA  ASP.$i" $pdb | cut -b 23-26`)
  GLU=(`egrep "^ATOM  .{7}CA  GLU.$i" $pdb | cut -b 23-26`)
  HIS=(`egrep "^ATOM  .{7}CA  HIS.$i" $pdb | cut -b 23-26`)

  # TERMINI

  x=`egrep "^(ATOM  |HETATM).{15}$i" $pdb | head -1 | cut -b 18-20`
  y=`egrep "^(ATOM  |HETATM).{15}$i" $pdb | tail -1 | cut -b 18-20`
  
  x_is_aminoacid=FALSE
  y_is_aminoacid=FALSE
  for j in ${aa[@]}; do
    if [ $j == $x ]; then x_is_aminoacid=TRUE; fi
    if [ $j == $y ]; then y_is_aminoacid=TRUE; fi
  done

  for j in ${LYS[@]}; do echo -e "LYS\t$j\t+"; done
  for j in ${ASP[@]}; do echo -e "ASP\t$j\t-"; done
  for j in ${GLU[@]}; do echo -e "GLU\t$j\t-"; done
  for j in ${HIS[@]}; do echo -e "HIS\t$j\tE"; done
  if [ $x_is_aminoacid = "TRUE" ]; then echo -e "$x\tNTERM\t+"; fi
  if [ $y_is_aminoacid = "TRUE" ]; then echo -e "$y\tCTERM\t-"; fi
  
done


