#!/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_count_table                   = $ARGV[1];
my $DB_REF                              = $ARGV[2];
my $DB_TAX                              = $ARGV[3];
my $CUTOFF_BOOTSTRAP                    = $ARGV[4];
my $output_html                         = $ARGV[5];
my $output_all_final_taxonomy           = $ARGV[6];

#my $MOTHUR3 = '/save/galaxy/scripts/sm_mothur/3_classify_mothur1.0.sh';
my $MOTHUR3 = '/usr/local/bioinfo/src/galaxy-dev/galaxy-dist/tools/sm_mothur/bin/3_classify_mothur1.0.sh';
my $cmd = '';
my $cmd1 = '';
my $cmdrm = '';

#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 $path= "/galaxydata/database/files/workspace/";
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";

#convert count_table en dos to unix
my $cmdconvert ='';
$cmdconvert = "(/usr/bin/dos2unix $input_count_table ;) >& ./dos2unix.log 2>&1";
system $cmdconvert; 

#Modification de l extension des inputs
$cmd1 = "ln -s $input_fasta $dirresults/final.aln.fasta; ln -s $input_count_table $dirresults/final.aln.count_table; 
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 ";

#3_classify_mothur_1.0.sh INPUT_FASTA INPUT_COUNT path_to_OUTDIR path_DB_REF path_DB_TAX CUTOFF_BOOTSTRAP
#/save/sigenae/PATHO-ID/ref/silva.bacteria.fasta /save/sigenae/PATHO-ID/ref/silva.bacteria.rdp.tax 50
$cmd = "(cd $dirresults; $MOTHUR3 $dirresults/final.aln.fasta $dirresults/final.aln.count_table $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 ";

#Suppression des fichiers inutiles
$cmdrm = "(cd $dirresults/; rm -rf  mothur* individuals_taxonomy individuals_taxonomy_bts50 tmp indiv.list *bts50.taxonomy ;) >& ./rm_mothur3.log 2>&1";
system $cmdrm;

#~ $cmdrm="cd $dirresults; rm ./mothur3.log; rm ./rm_mothur3.log;";
#~ system $cmdrm;

#sachant que PREF_REF = input base de données fasta sans l'extension soit "silva.bacteria.fasta" donne silva.bacteria : non supp par le wrapper.
#sachant que INPUT_FASTA et INPUT_COUNT INPUT_COUNT2 doivent être des liens symboliques (rm *.count_table si ce sont des liens symboliques)



#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`;}
my $tax = "$dirresults/final.aln.taxonomy";
if (! -e $tax ){print STDERR "taxonomy file not found. \n";}else{`cp -a $tax $output_all_final_taxonomy`;}
