#declaration de l espace de travail et du chemin de l executable R :
use strict;
use Carp;
use Statistics::R;
use Cwd qw(abs_path);
use File::Basename;

my ($datafile, $factor, $npc, $title, $tc, $pch, $pcv, $scaleoption, $plotev, $plotcontrib, $plotindiv, $colorfactor, $plotvar, $contribh, $contribv, $logOut, $outgraphpdf);
my ($working_dir,$r_bin,$log_dir,$R,$cmd,$line,$stat_out);

#pour voir ce que le xml renvoie au wrapper perl. Sachant que $0 est la ligne de commande et @ARGV les arguments
#printf STDERR "%s\n",join("***** ",$0,@ARGV);

#Parametres d'entree
$datafile      =$ARGV[0];
$factor        =$ARGV[1];
$npc           =$ARGV[2];
$title         =$ARGV[3];
$tc            =$ARGV[4];
$pch           =$ARGV[5];
$pcv           =$ARGV[6];
$scaleoption   =$ARGV[7];
$plotev        =$ARGV[8];
$plotcontrib   =$ARGV[9];
$plotindiv     =$ARGV[10];
$colorfactor   =$ARGV[11];
$plotvar       =$ARGV[12];
$contribh      =$ARGV[13];
$contribv      =$ARGV[14];
$logOut        =$ARGV[15];
$outgraphpdf   =$ARGV[16]; 
		

#Récuperer le numero (unique) de l'output
my ($nb) = ($logOut=~/galaxy_dataset_(\d+)\.\S+$/);

#On suppose que le fichier de donnees en entree a ete place dans un repertoire
#de travail working_dir
#Repertoire de sortie cree par le script, verif des droits d'ecriture sur ce repertoire de sortie
`cd /work/galaxy-test/database/files/workspace/; mkdir $nb; chmod 777 $nb/; cd $nb/;`;
my $working_dir= "/work/galaxy-test/database/files/workspace/$nb";


#Recuperation de la matrice entrante dans le repertoir de travail
`cp $datafile $working_dir/datafile`;

my $logOut_out        = "$working_dir/logOut";
my $outgraphpdf_out   = "$working_dir/outgraphpdf";


# Rbin path
$r_bin   = '/usr/local/bioinfo/src/R/current/bin/R';
#Log dir
$log_dir = $working_dir;

#déaration de l'objet $R et ouverture du pont :
$R = Statistics::R->new(
    "r_bin"   => $r_bin,
    "log_dir" => $log_dir,
) or die "Problem with R : $!\n";
# Ouverture du pont
$R->startR;

#envoi du repertoire de travail
$R->send(
   qq`
        setwd("$working_dir")
    `);

#Read R script
$cmd="";
open IN,"< /usr/local/bioinfo/src/galaxy-test/galaxy-dist/tools/R_ACP_CATIBIOSDBIOL/pca_FactoMiner_galaxy_wrapper.R"
	or die "Unable to read R script : $!\n";
while ($line=<IN>) {
	$cmd.=$line;
}
close(IN);

#Declare R function
$R->send($cmd);


$R->send(
	qq`
		pca_FactoMiner_galaxy_wrapper.R
		datafile $working_dir/datafile
		factor $factor
 		npc $npc
		title $title
		tc $tc
		pch $pch
		pcv $pcv
		scaleoption $scaleoption
		plotev $plotev
		plotcontrib $plotcontrib
		plotindiv $plotindiv
		colorfactor $colorfactor
		plotvar $plotvar
		contribh $contribh
		contribv $contribv		
    	logOut $logOut_out
		outgraphpdf $outgraphpdf_out
	`
);


#Fermeture du pont
$R->stopR();

#Recuperation des outputs dans Galaxy
if (! -e $logOut){print STDERR "Pas de fichier logOut produit \n";}
else {my $cmdlog = "(mv $logOut_out $logOut) >& ./cplog.log 2>&1";
system $cmdlog;}


if (! -e $outgraphpdf){print STDERR "Pas de fichier outgraphpdf produit \n";}
else {my $cmdgraph = "(mv $outgraphpdf_out $outgraphpdf) >& ./cpgraph.log 2>&1";
system $cmdgraph;}
