#! /usr/bin/perl 

use strict;
use warnings;

###########################################################
#
# The script creates log file with clusters for target.
# The name of target should be the first argument.
#
###########################################################

use lib qw(Classes Core);
use Exporter;
use LocalConfiguration;
use ClustersForQAManager;

use Algorithm::Cluster;

if (!defined $ARGV[0] || $ARGV[0] !~ m/^[TR][0-9]{4}$/){
print "USAGE : the first argument should be target_name
The script creates tarballs stage1 and stage2 and other 
auxiliary files in dir /data/CASP13/tmp_QA/,
Satistics regarding predictions, molprb, prosa and avrg_consensus
is in file /data/CASP13/tmp_QA/TARGET.stat.txt\n"; 
exit;
}

my $target = $ARGV[0];
if(-e "/data/CASP13/tmp_QA/$target.stat.txt"){
print "exit: File /data/CASP13/tmp_QA/$target.stat.txt exists !\n";
exit;
}
my $cl_manager = new ClustersForQAManager($target);

$cl_manager->parseDir();

##$cl_manager->process_clustering(20);

##$cl_manager->process();

&printStatistics();

exit; 

sub printStatistics{
   my @predictions = @{$cl_manager->{_predictions}};
   @predictions = sort {$b->{_avrg_gdt_ts}<=>$a->{_avrg_gdt_ts}} @predictions;
   my $outFile = sprintf("/data/CASP13/tmp_QA/%s.stat.txt", $cl_manager->{_target});
   open OUT, "> $outFile" || die("Couldn't write to file $outFile\n");
   print OUT "Prediction\tMolPrb\tProSA\tQA_consensus\n";
   foreach my $prediction (@predictions){
	my $pred = sprintf("%s%s%03d_%d", $cl_manager->{_target},$prediction->{_prfrmat},$prediction->{_group_code}, $prediction->{_model});
	my $toString = sprintf("%s\t%5.3f\t%5.3f\t%5.3f\n", $pred, $prediction->{_mol_prb}, $prediction->{_prosa_zs},$prediction->{_avrg_gdt_ts});
	print OUT $toString;
   }
   close OUT;
}
