#!/usr/sbin/perl  
# 
# 
#
# usage: distance_matrix.pl input.file output.file
# see line 38 to change cutoffs
#                                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>) {
   next unless ( /ATOM/ || /HETATM/ );  # only do ATOM or HETATM lines
   ($junk,$anum,$anam,$resnam,$resnum,$xval,$yval,$zval)= split(/\s+/,$_); 
   $ANAM{$anum}=$anam;
   $RNAM{$anum}=$resnam;
   $RNUM{$anum}=$resnum;
   $X{$anum}=$xval;
   $Y{$anum}=$yval;
   $Z{$anum}=$zval;
   $MAX=$anum;
}
close $pdbfile;

 for ($count1 = 1; $count1 <=$MAX-1; $count1++)
 {
    for ($count2 = 1; $count2 <=$MAX-1; $count2++)
    {
     $deltax = ( $X{$count1} - $X{$count2}); 
     $deltay = ( $Y{$count1} - $Y{$count2}); 
     $deltaz = ( $Z{$count1} - $Z{$count2}); 
     $dist = sqrt( $deltax * $deltax  + $deltay * $deltay + $deltaz * $deltaz);
     if ( ($dist <= 5.0) && ($dist > 1.0) && ($ANAM{$count1} =~ /H/) && ($ANAM{$count2} =~ /H/) ) 
     {printf OUT  "%4s %3s %4s   %4s %3s %4s  %4.2f \n",
       $RNAM{$count1},$RNUM{$count1},$ANAM{$count1},$RNAM{$count2},$RNUM{$count2},$ANAM{$count2},$dist;}
    }
  }



close $outfile;

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

