#!/usr/bin/perl -w

# usage : sm_clones_meta1.pl
# sarah maman - 10 dec 2013 - Mis en place pour le traitement des clones metagenomiques

use strict;
use warnings;
use File::Basename;
use POSIX qw( :sys_wait_h );
use Time::HiRes;

my $output_res            = $ARGV[0];
my $inputs_ace            = @ARGV[1..$#ARGV];


my $ACESTATS = "/usr/local/bioinfo/src/galaxy-dev/galaxy-dist/tools/sm_clones/scripts_module2/ace_statistics.py";
my $STATSCOMPLEMENT = "/usr/local/bioinfo/src/galaxy-dev/galaxy-dist/tools/sm_clones/scripts_module2/StatAssemblageComplement.pl";
my ($nb) = ($output_res=~/galaxy_dataset_(\d+)\.\S+$/);
#Creation d un repertoire de travail
#my $path= "/work/galaxy-dev/database/files/workspace";
my $path= "/galaxydata/database/files/workspace";
if (! -e $path ){`mkdir $path;`; print STDOUT "Creation d'un workspace.\n";} 
#Verification des droits d'ecriture sur ce repertoire de sortie
`cd $path; mkdir $nb/; chmod -R 777 $nb/`;
my $dirresults= $path."/".$nb;
print STDOUT "Votre repertoire de travail : $dirresults \n\n";

#Repertoire cree en vu du cat du fichier res	
`mkdir $dirresults/ContigLengthG1000ProfG8/`;	
	
for (my $i=1; $i<$#ARGV; $i+=2){

     
    `mkdir $dirresults/$i/; cd $dirresults/; chmod -R 777 $i/; cd $i/; mkdir stat/; chmod -R 777 stat/; `;
    #modification de l extension des inputs (ace)
     my $ace = "$dirresults/$i/$i.ace";
     `cp $ARGV[$i] $ace`;
    
    #ligne de commande
    #`/usr/local/bioinfo/src/python/current/bin/python $ACESTATS -i $ARGV[$i] -o $dirresults/$i/stat/ > assemblageStat.log`;
    `/usr/local/bioinfo/src/python/current/bin/python $ACESTATS -i $dirresults/$i/$i.ace -o $dirresults/$i/stat/ > assemblageStat.log`;
            ##Stand by avant de passer a l'étape suivante
            #if ( WIFEXITED($?) ) {    # vrai pour une fin normale
            #        my $status = WEXITSTATUS($?);    # état de sortie
	        #    #print STDOUT "etat du process : $status \n";

    #`perl $STATSCOMPLEMENT $dirresults/$i/stat/*ace.stat $dirresults/$i/stat/*.statAssemblageComplement.res $dirresults/$i/stat/*.ContigLenghtG1000ProfG8.res;`;
    `perl $STATSCOMPLEMENT $dirresults/$i/stat/*ace.stat $dirresults/$i/stat/*.statAssemblageComplement.res $dirresults/$i/stat/*.ContigLenghtG1000ProfG8.res;`;
    
            ##Stand by avant de passer a l'étape suivante
            #if ( WIFEXITED($?) ) {    # vrai pour une fin normale
            #        my $status = WEXITSTATUS($?);    # état de sortie
	        #    #print STDOUT "etat du process : $status \n";

                `cp $dirresults/$i/stat/*.ContigLenghtG1000ProfG8.res $dirresults/ContigLengthG1000ProfG8/.`;
            }

#mkdir $path/$assembl/ContigLengthG1000ProfG8
#cp $path/$assembl/RL*/stats/$project.RL*.ContigLengthG1000ProfG8.res $path/$assembl/ContigLengthG1000ProfG8
#cat $path/$assembl/ContigLengthG1000ProfG8/* > $path/$assembl/ContigLengthG1000ProfG8/ContigLengthG1000ProfG8.res
`cat $dirresults/ContigLengthG1000ProfG8/* > $dirresults/ContigLengthG1000ProfG8/ContigLengthG1000ProfG8.res`;


#Recuperation des outputs dans Galaxy
my $file = "$dirresults/ContigLengthG1000ProfG8/ContigLengthG1000ProfG8.res";
my $cmdout ='';
if (! -e $file){print STDERR "Pas de fichier $dirresults/ContigLengthG1000ProfG8/ContigLengthG1000ProfG8.res produit \n";}
else {
$cmdout = "(mv $file $output_res) >& ./mv_out.log 2>&1";
system $cmdout;
}
