#!/bin/bash/perl -w
use strict;

#####
#Input: (1) base directory for all simulations (2) number of simulations (3) outfile


if (scalar(@ARGV) !=  3) {
	die "Usage: getLRTDistSingleDS.pl <baseDir> <simulationsMum> <outfile>"
}

my $baseOutDir = $ARGV[0];
my $simulationsNum = $ARGV[1];
my $outfileName = $ARGV[2];

my $resFileName = "traitRate.res";

my @all_dif;
my @iter_res;
for (my $simItr = 0; $simItr < $simulationsNum; ++$simItr) {
	my $simDir = $baseOutDir  . "/sim_" . $simItr . "/";
	my $resFile = $simDir  . $resFileName;
	my $LL_diff = 999;
	if (-e $resFile) {
		my $simChar = $simDir . "simRandomChars.fasta";
		my $bOverlap = &checkOverlap($origChar, $simChar, $percent_overlap);
		my ($char_1, $char_2, $rr, $global_r, $alpha, $kappa, $treeL, $LL_1, $LL_0) = &read_results($resFile);
		$LL_diff = $LL_1 - $LL_0;
	}
	else {
		print "cannot find $resFile \n";
	}
	$all_dif[$simItr] = $LL_diff;
}

open RES_FILE, "> $outfileName" or die "unable to open $outfileName $!";
#####print header
print RES_FILE "sim_iter\t LL_dif\n";

###print results
for (my $i = 0 ; $i < $simulationsNum; ++$i) {
	print RES_FILE $i . "\t";
	print RES_FILE $all_dif[$i] . "\n";
}

close (RES_FILE);
# SUBROUTINE


sub read_results {
	my $resFileName = $_[0];
	open RESULTS, "< $resFileName" or die "unable to open $resFileName $!";
	my $line;
	my ($char_1, $char_2, $rr, $global_r, $alpha, $kappa, $treeL, $ll, $ll_0);
	$char_1 = $char_2 = $rr = $global_r = $alpha = $kappa = $treeL = $ll = 9999;
	while(my $line = <RESULTS>) {
		chomp($line);
		if ($line =~ m/^charModelParam1=(\d+\.?\d*)\s+\w+=(\d+\.?\d*)\s+\w+=(\d+\.?\d*)\s+\w+=(\d+\.?\d*)\s+\w+=(\d+\.?\d*)\s+\w+=(\d+\.?\d*)/) {
			$char_1 = $1;
			$char_2 = $2;
			$rr = $3;
			$global_r = $4;												
			$alpha = $5;
			$kappa = $6;	
		}
		elsif ($line =~ m/^#total tree length = (\d+\.?\d*)/) {
			$treeL = $1;						
		}
		#reading model 1 loglikelihood
		elsif ($line =~ m/^LogLikelihood = (-\d+\.?\d*)/) {
			$ll = $1;						
		}
		elsif ($line =~ m/^LogLikelihood Model 0 = (-\d+\.?\d*)/) {
			$ll_0 = $1;						
		}
	}
	close (RESULTS);

	return ($char_1, $char_2, $rr, $global_r, $alpha, $kappa, $treeL, $ll, $ll_0);
}