package ResultsStatisticsManager;

use strict;
use warnings;

#use File::Basename;
#use Switch;

use Exporter;
use LocalConfiguration;

my $rs_manager = undef;

1;

sub new {
    my ($class) = @_;
    return $rs_manager if(defined($rs_manager));

    my $self = {
	_id => ''
    };
    $rs_manager = bless $self, $class;
    return $rs_manager;
}

sub get_statistics_results_per_target{
    my ($self,$target) = @_;
    my $result_target;
    $result_target->{name}=$target;
    # results for TS predictions
    $result_target->{count}=`ls $LOCAL_CONFIG->{DATA_MODELS_DIR}/$target/* | wc -l`;
    $result_target->{caca}=`ls $LOCAL_CONFIG->{RESULTS_DIR}/CACA/$target.CAerr | wc -l`;
    $result_target->{mammoth}=`ls $LOCAL_CONFIG->{RESULTS_DIR}/MAMMOTH/$target/*.mammoth | wc -l`;
    $result_target->{mvsm}=`ls $LOCAL_CONFIG->{RESULTS_DIR}/MVSM/DATA/$target/* | wc -l`;
    $result_target->{lga_sia}=`ls $LOCAL_CONFIG->{RESULTS_DIR}/LGA/SIA/DATA/$target/*.lga | wc -l`;
    $result_target->{lga_sda}=`ls $LOCAL_CONFIG->{RESULTS_DIR}/LGA/SDA/DATA/$target/*.lga | wc -l`;
    $result_target->{dali}=`ls $LOCAL_CONFIG->{RESULTS_DIR}/DaliLite/$target/*/index.html | wc -l`;
    $result_target->{lvr}=`ls $LOCAL_CONFIG->{RESULTS_DIR}/LVR/$target/*.csv | wc -l`;
    # results for RR predictions
    my $target_no_domain = $target; $target_no_domain =~ s/[-_]D\d\S*//;
    $result_target->{rr_count}=`ls $LOCAL_CONFIG->{DATA_RR_MODELS_DIR}/$target_no_domain/* | wc -l`;
    $result_target->{rr_conts}=`ls $LOCAL_CONFIG->{RESULTS_DIR}/RR_CONTS/$target/*.conts_5.0 | wc -l`; # the least restrictive conditions (top5 contacts evaluated)
    return $result_target;
}


sub get_targets{
    my ($self) = @_;
    opendir DIR, $LOCAL_CONFIG->{DATA_TARGETS_DIR};
    my @targets;
    while(defined(my $file = readdir(DIR))){
	 if ($file =~ m/^[TR].*\.pdb$/){
	   $file =~ s/\.pdb$//;
	   push @targets, $file;
	}
    }
    close DIR;
    return @targets;
}

sub get_statistics_results{
    my ($self) = @_;
    my @targets = sort($self->get_targets());
    my @results;
    foreach my $target (@targets){
        push @results, $self->get_statistics_results_per_target($target);
    }
    return @results;
}

