#!/bin/perl

use lib "/opt/spacenet/igpp/perl/IGPP";
use Clinetime;

sub CalcTime {

  my ($Data) = @_;

  $Data =~ s/^ //;
  my @Data = split / +/, $Data;
  my @Doy  = unpack "a2a3", $Data[0];
  my $Time = (clinetime(doy(@Doy)))[0] + ($Data[1]/1000);

}

################
# main program #
################

my @Files = @ARGV;

my %Rates = ();

foreach my $File (@Files) {
  open (FILE, "$File");
  my @Data = <FILE>;
  close (FILE);

# calculate rates stats
  my $LDiff = 0;
  my $LTime = CalcTime($Data[0]);
  for (my $i=0; $i <= $#Data; $i++) {
    my $Time = CalcTime($Data[$i]);
    my $Diff = sprintf "%.3f", $Time - $LTime;
    if ($Diff > .001) {
      $Rates{$Diff}++;
#      if ( $Diff != $LDiff ) {
#        printf "Line %05d: diff = %f\n", $i, $Diff;
#        $LDiff = $Diff;
#      }
      $LTime = $Time;
    }
  }

# filter out uncommon rates
  my %BRates = ();
  foreach my $Rate (keys %Rates) {
    if ($Rates{$Rate} > 10) {
      $BRates{$Rate} = $Rates{$Rate};
    }
  }

# sort by number of occurences
  my %Counts = reverse(%BRates);
  my @Counts = keys %Counts;
  @Counts = sort { $b <=> $a } @Counts;

# output rates states
  print "$File: ";
  foreach (my $i=0; $i<=$#Counts; $i++) {
    print "$Counts{$Counts[$i]}=$Counts[$i], ";
  }
  print "\n";

}
