#!/usr/bin/perl -w

# usage : perl sm_mothur_analyse_3.pl 
# 13/08/2013 - Wrapper dans le cadre du projet 16S (pour Maria B.)

use strict;
use File::Basename;

my $input_fasta                         = $ARGV[0];
my $input_names                         = $ARGV[1];
my $input_groups                        = $ARGV[2];
my $DB_REF                              = $ARGV[3];
my $DB_TAX                              = $ARGV[4];
my $CUTOFF_BOOTSTRAP                    = $ARGV[5];
my $output_html                         = $ARGV[6];
#my $output_individuals_taxonomy_tgz     = $ARGV[7];
my $output_all_final_taxonomy           = $ARGV[7];
#my $output_all_final_bts50_taxonomy     = $ARGV[9];
#my $output_all_final_krona_html         = $ARGV[10];
#my $output_all_final_bts50_krona_html   = $ARGV[11];
#my $output_all_final_tax_summary        = $ARGV[12];

my $MOTHUR3 = '/home/sigenae/bin/Galaxy/r454_diversity_Galaxy/3_classify_mothur1.0.sh';
my $cmd = '';
my $cmd1 = '';

#il faut que le dossier de sortie soit créé et que les intputs y soient copier ou avec des liens.
my $path= dirname($input_fasta);
my ($nb) = ($output_html=~/galaxy_dataset_(\d+)\.\S+$/);
#Repertoire de sortie cree par le script, verif des droits d'ecriture sur ce repertoire de sortie
`mkdir $path/$nb/; chmod 777 $path/$nb/`;
my $dirresults= $path."/".$nb;
print STDOUT "Votre repertoire de travail : $dirresults \n\n";

#Modification de l extension des inputs
$cmd1 = "ln -s $input_fasta $dirresults/all.final.fasta; ln -s $input_names $dirresults/all.final.names; ln -s $input_groups $dirresults/all.final.groups; 
ln -s $DB_REF $dirresults/bd_ref.fasta; ln -s $DB_TAX $dirresults/bd_tax.rdp.tax";
system $cmd1;
print STDOUT "Recuperation des fichiers d entree : \n\n $cmd1 \n\n ";

#TESTS commande : perl sm_mothur_analyse_3.pl tests/
#sh 3_classify_mothur1.0.sh [-h | path_INPUT_FASTA path_INPUT_NAMES path_INPUT_GROUPS path_to_OUTDIR path_DB_REF path_DB_TAX CUTOFF_BOOTSTRAP]
#sh 3_classify_mothur1.0.sh path/all.final.fasta path/all.final.names path/all.final.groups path_to_OUTDIR /save/sigenae/PATHO-ID/ref/silva.bacteria.fasta /save/sigenae/PATHO-ID/ref/silva.bacteria.rdp.tax 50
$cmd = "(cd $dirresults; $MOTHUR3 $dirresults/all.final.fasta $dirresults/all.final.names $dirresults/all.final.groups $dirresults $dirresults/bd_ref.fasta $dirresults/bd_tax.rdp.tax $CUTOFF_BOOTSTRAP) >& ./mothur3.log 2>&1";
system $cmd;

#Info pour les biologistes
print STDOUT "Analysis Mothur : \n\n $cmd \n\n ";


#Recuperation des fichiers par Galaxy
# bilan.html
# individuals_taxonomy.tgz ==> les taxonomies détaillées par échantillon
# all.final.taxonomy all.final.bts50.taxonomy ==> les tableaux de comptage complet avec ou sans l'utilisation de la valeur seuil de bootstrap
# all.final.krona.html all.final.bts50.krona.html ==> les fichiers krona, en HTML 5 ce serait top qu'ils s'affichent dans Galaxy sinon je mets eu lien dans le bilan.html et ils ouvrent le fichier dans un browser classique
# all.final.tax.summary ==> les taxonomies détaillées par lecture
if (! -e "$dirresults/bilan.html"){print STDERR "bilan.html file not found. \n";}else{`cp -a $dirresults/bilan.html $output_html`;}
#if (! -e "$dirresults/individuals_taxonomy.tgz"){print STDERR "$dirresults/individuals_taxonomy.tgz  file not found. \n";}else{`cp -a $dirresults/individuals_taxonomy.tgz $output_individuals_taxonomy_tgz`;}
if (! -e "$dirresults/all.final.taxonomy"){print STDERR "$dirresults/all.final.taxonomy file not found. \n";}else{`cp -a $dirresults/all.final.taxonomy $output_all_final_taxonomy`;}
#if (! -e "$dirresults/all.final.bts50.taxonomy"){print STDERR "$dirresults/all.final.bts50.taxonomy  file not found. \n";}else{`cp -a $dirresults/all.final.bts50.taxonomy $output_all_final_bts50_taxonomy`;}
#if (! -e "$dirresults/all.final.krona.html"){print STDERR "$dirresults/all.final.krona.html file not found. \n";}else{`cp -a $dirresults/all.final.krona.html $output_all_final_krona_html`;}
#if (! -e "$dirresults/all.final.bts50.krona.html"){print STDERR "$dirresults/all.final.bts50.krona.html file not found. \n";}else{`cp -a $dirresults/all.final.bts50.krona.html $output_all_final_bts50_krona_html`;}
#if (! -e "$dirresults/all.final.tax.summary"){print STDERR "$dirresults/all.final.tax.summary file not found. \n";}else{`cp -a $dirresults/all.final.tax.summary $output_all_final_tax_summary`;}
