#!/usr/bin/perl -w

(@ARGV==2) || die ("usage: compute-SDscores crit-file best-sds\n");

$sdfile=shift(@ARGV);
$bestfile=shift(@ARGV);

open(RAND,$sdfile); 
while(<RAND>) {
    @fields=split(" ",$_);
    $pat=$fields[$#fields]; # pattern is always in last field 
    $random{$pat}++;
    $totrand++;
}
close(RAND);

open(REAL,$bestfile);
while(<REAL>) {
    @fields=split(" ",$_);
    $pat=$fields[$#fields]; # pattern is always in last field
    $real{$pat}++;
    $totreal++;
}
close(REAL);

while(($pat,$rl)=each %real) {
  $random{$pat}-=$real{$pat};
  $totrand-=$real{$pat};
}

while(($pat,$rand)=each %random) {
  if (defined($real{$pat})) {
    $rl=$real{$pat};
  }
  else {$rl=0;}
  $freqreal=$rl/$totreal;
  $freqrand=$rand/$totrand;
  if ($freqrand==0) {
    $freqrand=0.5/$totrand;
  }
  if($freqreal>0) {
    $score=log($freqreal/$freqrand);
  }
  else {
    $score=0;
  }
  printf("%s %d %d %f %f %f\n",$pat,$rl,$rand,$freqreal,$freqrand,$score);
}
