changeset 4:3fcbb8030fcc draft

"planemo upload for repository https://github.com/sblanck/MPAgenomics4Galaxy/tree/master/mpagenomics_wrappers commit 40eda5ea3551e8b3bae32d0a8f405fe90ef22646-dirty"
author sblanck
date Mon, 12 Apr 2021 14:47:09 +0000
parents 94fc6ed13946
children 4f753bb8681e
files extractCN.R extractCN.xml filter.R filter.xml preprocess.R preprocess.xml segcall.R segcall.xml segmentFracB.R segmentFracB.xml segmentation.R segmentation.xml selection.R selection.xml selectionExtracted.R selectionExtracted.xml
diffstat 16 files changed, 186 insertions(+), 1100 deletions(-) [+]
line wrap: on
line diff
--- a/extractCN.R	Tue Jun 16 04:34:09 2020 -0400
+++ b/extractCN.R	Mon Apr 12 14:47:09 2021 +0000
@@ -3,14 +3,16 @@
 options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
 
 # we need that to not crash galaxy with an UTF8 error on German LC settings.
-loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+# loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
 
 library("optparse")
+library("zip")
 
 ##### Read options
 option_list=list(
 		make_option("--chrom",type="character",default=NULL, dest="chrom"),
 		make_option("--input",type="character",default=NULL, dest="input"),
+		make_option("--zip",type="character",default=NULL, dest="zip"),
 		make_option("--output",type="character",default=NULL, dest="output"),
 		make_option("--new_file_path",type="character",default=NULL, dest="new_file_path"),
 		make_option("--settings_type",type="character",default=NULL, dest="settings_type"),
@@ -35,6 +37,7 @@
 
 chrom=opt$chrom
 input=opt$input
+zip=opt$zip
 tmp_dir=opt$new_file_path
 output=opt$output
 settingsType=opt$settings_type
@@ -47,9 +50,24 @@
 user=opt$userid
 
 library(MPAgenomics)
-workdir=file.path(tmp_dir, "mpagenomics",user)
+library(aroma.affymetrix)
+library(R.utils)
+#workdir=file.path(tmp_dir, "mpagenomics",user)
+tmp_dir
+tmp_dir=file.path(tmp_dir)
+if (!dir.exists(tmp_dir))
+  dir.create(tmp_dir, showWarnings = TRUE, recursive = TRUE)
+setwd(tmp_dir)
+# tmpzip=file.copy(from = zip,to=paste0(workdir,"/tmp.zip"))
+# tmpzip
+unzip(zipfile = zip,exdir = ".")
+# if (file.exists(tmpzip)) {
+#   #Delete file if it exists
+#   file.remove(fn)
+# }
+
+workdir=file.path(tmp_dir,user)
 setwd(workdir)
-
 inputDataset=read.table(file=input,stringsAsFactors=FALSE)
 dataset=inputDataset[1,2]
 
@@ -75,7 +93,7 @@
 			CN=getCopyNumberSignal(dataset,chromosome=chrom_vec, onlySNP=snp)
 					
 	  	} else {
-	  		CN=getCopyNumberSignal(dataset,chromosome=chrom_vec, normalTumorArray=tumorcsv, onlySNP=snp)
+	  	CN=getCopyNumberSignal(dataset,chromosome=chrom_vec, normalTumorArray=tumorcsv, onlySNP=snp)
 	  	}
 	} else {
 		input_tmp <- strsplit(settingsType,",")
@@ -109,7 +127,9 @@
 		}
 		
 		symFracB_global=data.frame(check.names = FALSE)
-		
+		tumorFile=read.csv(tumorcsv,header=TRUE)
+		tumor=tumorFile$tumor
+		input_vecstring=input_vecstring[which(input_vecstring %in% tumor)]
 		for (currentFile in input_vecstring) {
 			cat(paste0("extracting signal from ",currentFile,".\n"))
 			currentSymFracB=data.frame()
@@ -124,7 +144,11 @@
 			if (is.null(symFracB_global) || nrow(symFracB_global)==0) {
 				symFracB_global=currentSymFracB
 			} else {
-				symFracB_global=cbind(symFracB_global,currentFile=currentSymFracB[[3]])
+				#symFracB_global=cbind(symFracB_global,currentFile=currentSymFracB[[3]])
+				
+				symFracB_global=merge(symFracB_global,currentSymFracB[,c(3,4)],by="featureNames")
+				symFracB_global=symFracB_global[c(2:ncol(symFracB_global),1)]
+				symFracB_global=symFracB_global[order(symFracB_global$chromosome, symFracB_global$position),]
 			}
 		}
 		names(symFracB_global)[names(symFracB_global)=="featureNames"] <- "probeName"
@@ -163,8 +187,11 @@
 	
 }
 
+if (dir.exists(workdir))
+  system(paste0("rm -r ", workdir))
+
 if (outputlog){
 	sink(type="output")
 	sink(type="message")
 	close(sinklog)
-} 
\ No newline at end of file
+} 
--- a/extractCN.xml	Tue Jun 16 04:34:09 2020 -0400
+++ b/extractCN.xml	Mon Apr 12 14:47:09 2021 +0000
@@ -1,14 +1,17 @@
-<tool id="extract" name="Extract" force_history_refresh="True" version="1.1.0">
+<tool id="extract" name="Extract" version="1.2.0">
   <description>copy number or allele B fraction signal</description>
-  <requirement type="package" version="1.1.2">mpagenomics</requirement>
-   <command>
+   <requirements>
+        <container type="docker">sblanck/mpagenomicsdependencies</container>
+  </requirements>
+  <command>
     	<![CDATA[ 
         Rscript 
         ${__tool_directory__}/extractCN.R	
     --chrom '$chrom'
   	--input '$input'
+  	--zip '$zip'
   	--output '$output' 
-  	--new_file_path '$__new_file_path__'
+  	--new_file_path '$output.extra_files_path'
   	#if $settings.settingsType == "file":
   		--settings_type '$settings.inputs'
   	#end if
@@ -17,23 +20,14 @@
   	#end if
   	#if $settingsSNP.signal == "fracB":
   		--settings_snp 'TRUE'
-  		
-  		#if $settingsSNP.sym.symmetrize=="TRUE"
-  			--settings_tumor '$tumorcsvFracBsym'
-  		#elif $settingsSNP.sym.symmetrize=="FALSE"
-  			#if $settingsSNP.sym.settingsTumorFracB.settingsTypeTumorFracB == "standard":
-  				--settings_tumor 'None'
-  			#elif  $settingsSNP.sym.settingsTumorFracB.settingsTypeTumorFracB == "tumor":
-  				--settings_tumor '$tumorcsvFracB'
-   			#end if
-  		#end if
-  		--symmetrize '$settingsSNP.sym.symmetrize'
+  		--settings_tumor '$settingsSNP.tumorcsvFracBsym'
+  		--symmetrize 'TRUE'
   	#else
   		--settings_snp '$settingsSNP.snp'
   		#if $settingsSNP.settingsTumor.settingsTypeTumor == "standard":
   			--settings_tumor 'None'
   		#elif $settingsSNP.settingsTumor.settingsTypeTumor == "tumor":
-  			--settings_tumor '$tumorcsvCN'
+		--settings_tumor '${settingsSNP.settingsTumor.tumorcsvCN}'
   		#end if
   	#end if
   	--outputlog '$outputlog'
@@ -44,6 +38,7 @@
   </command>
   <inputs>
     <param name="input" type="data" format="dsf" label="Dataset summary file" help="Summary text file generated by the Data normalization tool"/>
+	  <param name="zip" type="data" format="zip" label="Zip results file" help="Zip results file generated by the Data normalization tool"/>
 	<conditional name="settings">
       <param name="settingsType" type="select" label="Files selection Mode" help="Select the whole cel files dataset or pick-up only few files from the dataset">
         <option value="dataset">Select whole dataset</option>
@@ -66,14 +61,14 @@
       		<option value="fracB">fracB</option>
     	</param> 
     	<when value="fracB">
-    		<conditional name="sym">
+    		<!--conditional name="sym">
     			<param name="symmetrize" type="select" label="Symmetrize allele B signal">
         			<option value="TRUE">Yes</option>
         			<option value="FALSE">No</option>
     			</param>
-    			<when value="TRUE">
+    			<when value="TRUE"-->
     				<param name="tumorcsvFracBsym" type="data" format="csv" label="Normal-tumor csv file" help="Normal-tumor csv file. See below for more information."/>
-    			</when>
+    			<!--/when>
     			<when value="FALSE">
     				<conditional name="settingsTumorFracB">
       					<param name="settingsTypeTumorFracB" type="select" label="Reference">
@@ -85,8 +80,8 @@
         					<param name="tumorcsvFracB" type="data" format="csv" label="Tumor boost csv file" help="Normal-tumor csv file. See below for more information."/>
       					</when>
     				</conditional>        	
-    			</when>
-    		</conditional>
+    			</when-->
+    		<!--/conditional-->
     	</when>
 		<when value="CN">
 			<conditional name="settingsTumor">
@@ -109,7 +104,6 @@
     <!--param name="chrom" type="text" value="All" label="Chromosomes" help="Chromosomes to segment. Use comma to choose multiple chromosomes: e.g. 1, 3, 8. Use 'All' for a segmentation on all chromosomes" /-->
     
     <param  name="chrom" type="select" size="6" multiple="true" label="Chromosomes" help="You can select several chromosomeleave blank for all chromosomes">
-      <option value="All">All</option>
       <option value="1">chr 1</option>
       <option value="2">chr 2</option>
       <option value="3">chr 3</option>
@@ -144,8 +138,8 @@
     </param>
   </inputs>
   <outputs>
-    <data format="sef" name="output" label="signal extraction of ${input.name}" />
-    <data format="log" name="log" label="log of signal extraction of ${input.name}">
+	  <data format="sef" name="output" label="signal extraction of ${settingsSNP.signal} of ${input.name}" />
+    <data format="log" name="log" label="log of signal extraction of ${settingsSNP.signal} of ${input.name}">
     	<filter>outputlog == "TRUE"</filter>
     </data>
    </outputs>
--- a/filter.R	Tue Jun 16 04:34:09 2020 -0400
+++ b/filter.R	Mon Apr 12 14:47:09 2021 +0000
@@ -15,6 +15,7 @@
 		make_option("--nbcall",type="character",default=NULL, dest="nbcall"),
 		make_option("--length",type="character",default=NULL, dest="length"),
 		make_option("--probes",type="character",default=NULL, dest="probes"),
+		make_option("--settings_signal",type="character",default=NULL, dest="settings_signal"),
 		make_option("--outputlog",type="character",default=NULL, dest="outputlog"),
 		make_option("--log",type="character",default=NULL, dest="log")
 	);
@@ -35,6 +36,7 @@
 nbcall=opt$nbcall
 length=as.numeric(opt$length)
 probes=as.numeric(opt$probes)
+signal=opt$settings_signal
 log=opt$log
 outputlog=opt$outputlog
 
@@ -47,14 +49,20 @@
 nbcall_tmp <- strsplit(nbcall,",")
 nbcall_vecstring <-unlist(nbcall_tmp)
 
-nbcall_vecstring
-
 library(MPAgenomics)
-workdir=file.path(tmp_dir, "mpagenomics")
+workdir=file.path(tmp_dir)
+if (!dir.exists(workdir))
+  dir.create(workdir, showWarnings = TRUE, recursive = TRUE)
 setwd(workdir)
 
 segcall = read.table(input, header = TRUE)
-filtercall=filterSeg(segcall,length,probes,nbcall_vecstring)
+if (signal=="fracB") {
+	segcall=cbind(segcall,calls=rep("normal",nrow(segcall)))
+	filtercall=filterSeg(segcall,length,probes,nbcall_vecstring)
+        filtercall=filtercall[,1:(ncol(filtercall)-1)]
+} else {
+	filtercall=filterSeg(segcall,length,probes,nbcall_vecstring)
+}
 #sink(output)
 #print(format(filtercall),row.names=FALSE)
 #sink()
--- a/filter.xml	Tue Jun 16 04:34:09 2020 -0400
+++ b/filter.xml	Mon Apr 12 14:47:09 2021 +0000
@@ -1,5 +1,7 @@
-<tool id="callfilter" name="Filter" description="segmented and called data" force_history_refresh="True" version="1.1.0">
-  <requirement type="package" version="1.1.2">mpagenomics</requirement>
+<tool id="callfilter" name="Filter" description="segmented and called data" version="1.2.0">
+   <requirements>
+        <container type="docker">sblanck/mpagenomicsdependencies</container>
+  </requirements>
   <command>
   	<![CDATA[ 
         Rscript 
@@ -7,9 +9,15 @@
   		--input '$input' 
   		--length '$length' 
   		--probes '$probes' 
-  		--new_file_path '$__new_file_path__' 
-  		--nbcall '$nbcall' 
-  		--output '$output' 
+  		--new_file_path '$output.extra_files_path' 
+		 #if $settingsSNP.signal == "fracB":
+ 		      --nbcall 'normal'
+                 #else
+		      --nbcall '${settingsSNP.nbcall}'
+		 
+        	 #end if
+		--settings_signal '$settingsSNP.signal' 
+		--output '$output' 
   		--outputlog '$outputlog' 
   		--log '$log'
   	]]>
@@ -18,13 +26,23 @@
     <param name="input" type="data" format="scr" label="Segmented and called data file" help="Input file with labelled segments"/>
     <param name="length" type="integer" min="1" value="1" label="Minimum length for a segment" help="minimal length (in bp) to keep in a segment"/>
 	<param name="probes" type="integer" min="1" value="1" label="Minimum probes for a segment" help="minimal number of probes to keep in a segment"/>
-    <param name="nbcall" type="select" multiple="true" label="Label(s) to keep">
-      <option value="double loss">double loss</option>
-      <option value="loss">loss</option>
-      <option value="normal">normal</option>
-      <option value="gain">gain</option>
-      <option value="amplification">amplification</option>
-    </param>    
+	
+  <conditional name="settingsSNP">
+        <param name="signal" type="select" multiple="false" label="Signal you want to work on">
+                <option value="CN">CN</option>
+                <option value="fracB">fracB</option>
+        </param>
+        <when value="CN">
+		<param name="nbcall" type="select" multiple="true" label="Label(s) to keep">
+      		<option value="double_loss">double loss</option>
+      		<option value="loss">loss</option>
+      		<option value="normal">normal</option>
+      		<option value="gain">gain</option>
+      		<option value="amplification">amplification</option>
+	    	</param>
+	</when>
+
+  </conditional>
     <param name="outputlog" type="select" label="Output log">
         <option value="TRUE">Yes</option>
         <option value="FALSE">No</option>
@@ -34,7 +52,7 @@
   <outputs>
     <data format="tabular" name="output" label="filter of ${on_string}" />
     
-	<data format="log" name="log" label="log of segmentation of ${input.name}">
+	<data format="log" name="log" label="log of filter of ${input.name}">
     	<filter>outputlog == "TRUE"</filter>
     </data>  
   </outputs>
--- a/preprocess.R	Tue Jun 16 04:34:09 2020 -0400
+++ b/preprocess.R	Mon Apr 12 14:47:09 2021 +0000
@@ -3,7 +3,7 @@
 options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
 
 # we need that to not crash galaxy with an UTF8 error on German LC settings.
-loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+#loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
 
 library("optparse")
 
@@ -24,6 +24,7 @@
 		make_option("--settingsType",type="character",default=NULL, dest="settingsType"),
 		make_option("--outputgraph",type="character",default=NULL, dest="outputgraph"),
 		make_option("--zipfigures",type="character",default=NULL, dest="zipfigures"),
+		make_option("--zipresults",type="character",default=NULL, dest="zipresults"),
 		make_option("--outputlog",type="character",default=NULL, dest="outputlog"),
 		make_option("--log",type="character",default=NULL, dest="log"),
 		make_option("--user_id",type="character",default=NULL, dest="user_id"),
@@ -55,6 +56,7 @@
 settingsType=opt$settingsType
 outputGraph=opt$outputgraph
 zipfigures=opt$zipfigures
+zipresults=opt$zipresults
 outputlog=opt$outputlog
 log=opt$log
 userId=opt$user_id
@@ -129,6 +131,9 @@
 
 
 library(MPAgenomics)
+library(R.utils)
+library(aroma.affymetrix)
+
 setwd(workdir)
 
 if (outputlog){
@@ -143,13 +148,27 @@
 } else {
 	signalPreProcess(dataSetName=dataset, chipType=chip, dataSetPath=celPath,chipFilesPath=chipPath, normalTumorArray=tumor, path=workdir,createArchitecture=createArchitecture, savePlot=outputgraph, tags=tag)
 }
+setwd(mpagenomicsDir)
+library(zip)
+zipr(zipresults,files=".")
 setwd(abs_fig_dir)
+#abs_fig_dir
 files2zip <- dir(abs_fig_dir)
-zip(zipfile = "figures.zip", files = files2zip)
-file.rename("figures.zip",zipfigures)
+zipr(zipfigures, files = files2zip)
+
 summarydf=data.frame(celFileNameList,rep(dataSetName,length(celFileNameList)),rep(chipType,length(celFileNameList)))
 write.table(summarydf,file=summary,quote=FALSE,row.names=FALSE,col.names=FALSE,sep="\t")
 
+if (dir.exists(mpagenomicsDir)) {
+  system(paste0("rm -r ", mpagenomicsDir))
+  dir.create(mpagenomicsDir, showWarnings = TRUE, recursive = TRUE)
+ }
+
+if (dir.exists(dataDir)) {
+  system(paste0("rm -r ", dataDir))
+  dir.create(dataDir, showWarnings = TRUE, recursive = TRUE)
+ }
+
 if (outputlog){
 	sink(type="output")
 	sink(type="message")
--- a/preprocess.xml	Tue Jun 16 04:34:09 2020 -0400
+++ b/preprocess.xml	Mon Apr 12 14:47:09 2021 +0000
@@ -1,15 +1,14 @@
-<tool id="preprocess" name="Data Normalization" force_history_refresh="True" version="1.1.0">
-  	<requirements>
-    <!--requirement type="set_environment">R_SCRIPT_PATH</requirement-->
-    <requirement type="package" version="1.1.2">mpagenomics</requirement>
-   </requirements>
-	<!--command interpreter="python"-->
+<tool id="preprocess" name="Data Normalization" version="1.2.0">
+  <requirements>
+      <container type="docker">sblanck/mpagenomicsdependencies</container>
+  </requirements>
+	
     <command>
     	<![CDATA[ 
         Rscript 
         ${__tool_directory__}/preprocess.R	
 		--summary '$summary' 
-		--new_file_path '$__new_file_path__'  
+		--new_file_path '$zipresults.files_path'  
 		--inputcdffull_name '$inputcdffull.name' 
 		--inputufl_name '$inputufl.name' 
 		--inputugp_name '$inputugp.name' 
@@ -28,8 +27,9 @@
   	 --settingsType '$settings.settingsType' 
 	 --outputgraph '$outputgraph' 
 	 --zipfigures '$zipfigures' 
+	 --zipresults '$zipresults'
 	 --outputlog '$outputlog' 
-	 --log '$log' 
+	 --log '$log'
 	 --user_id '$__user_id__'
 	 --input "#for $input in $inputs# $input;$input.name, #end for#"
     	]]>
@@ -72,7 +72,8 @@
   	     doesn't occur. 
   	-->
     <data format="dsf" name="summary" label="Dataset summary file of ${datasetName}" />
-    <data format="zip" name="zipfigures" label="figures of normalization of ${datasetName}">
+    <data format="zip" name="zipresults" label="Results of normalization of ${datasetName}"/>
+    <data format="zip" name="zipfigures" label="Figures of normalization of ${datasetName}">
     	<filter>outputgraph == "TRUE"</filter>	
     </data>    
     <data format="log" name="log" label="log of normalization ${datasetName}">
--- a/segcall.R	Tue Jun 16 04:34:09 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-#!/usr/bin/env Rscript
-# setup R error handling to go to stderr
-options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
-
-# we need that to not crash galaxy with an UTF8 error on German LC settings.
-loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
-
-library("optparse")
-
-##### Read options
-option_list=list(
-		make_option("--chrom",type="character",default=NULL, dest="chrom"),
-		make_option("--input",type="character",default=NULL, dest="input"),
-		make_option("--output",type="character",default=NULL, dest="output"),
-		make_option("--new_file_path",type="character",default=NULL, dest="new_file_path"),
-		make_option("--nbcall",type="character",default=NULL, dest="nbcall"),
-		make_option("--settingsType",type="character",default=NULL, dest="settingsType"),
-		make_option("--outputgraph",type="character",default=NULL, dest="outputgraph"),
-		make_option("--snp",type="character",default=NULL, dest="snp"),
-		make_option("--zipfigures",type="character",default=NULL, dest="zipfigures"),
-		make_option("--settingsTypeTumor",type="character",default=NULL, dest="settingsTypeTumor"),
-		make_option("--cellularity",type="character",default=NULL, dest="cellularity"),
-		make_option("--outputlog",type="character",default=NULL, dest="outputlog"),
-		make_option("--log",type="character",default=NULL, dest="log"),
-		make_option("--userid",type="character",default=NULL, dest="userid"),
-		make_option("--method",type="character",default=NULL, dest="method")
-);
-
-opt_parser = OptionParser(option_list=option_list);
-opt = parse_args(opt_parser);
-
-if(is.null(opt$input)){
-	print_help(opt_parser)
-	stop("input required.", call.=FALSE)
-}
-
-#loading libraries
-
-chrom=opt$chrom
-datasetFile=opt$input
-output=opt$output
-tmp_dir=opt$new_file_path
-nbcall=as.numeric(opt$nbcall)
-settingsType=opt$settingsType
-outputfigures=type.convert(opt$outputgraph)
-snp=type.convert(opt$snp)
-tumorcsv=opt$settingsTypeTumor
-cellularity=as.numeric(opt$cellularity)
-user=opt$userid
-method=opt$method
-log=opt$log
-outputlog=opt$outputlog
-outputgraph=opt$outputgraph
-zipfigures=opt$zipfigures
-
-library(MPAgenomics)
-workdir=file.path(tmp_dir, "mpagenomics",user)
-setwd(workdir)
-
-if (grepl("all",tolower(chrom)) | chrom=="None") {
-		chrom_vec=c(1:25)
-	} else {
-		chrom_tmp <- strsplit(chrom,",")
-		chrom_vecstring <-unlist(chrom_tmp)
-		chrom_vec <- as.numeric(chrom_vecstring)
-	}
-
-
-if (outputlog){
-	sinklog <- file(log, open = "wt")
-	sink(sinklog ,type = "output")
-	sink(sinklog, type = "message")
-} 
-	
-	
-inputDataset=read.table(file=datasetFile,stringsAsFactors=FALSE)
-dataset=inputDataset[1,2]
-
-fig_dir = file.path("mpagenomics", user, "figures", dataset, "segmentation","CN")
-abs_fig_dir = file.path(tmp_dir, fig_dir)
-
-if (outputgraph) {
-	if (dir.exists(abs_fig_dir)) {
-		system(paste0("rm -r ", abs_fig_dir))
-	}
-}
-
-if (settingsType == 'dataset') {
-	if (tumorcsv== "none")
-	{
-  		segcall=cnSegCallingProcess(dataset,chromosome=chrom_vec, nclass=nbcall, savePlot=outputfigures,onlySNP=snp, cellularity=cellularity, method=method)
-  	} else {
-  		segcall=cnSegCallingProcess(dataset,chromosome=chrom_vec, normalTumorArray=tumorcsv, nclass=nbcall, savePlot=outputfigures,onlySNP=snp, cellularity=cellularity, method=method)
-  	}
-} else {
-	input_tmp <- strsplit(settingsType,",")
-	input_tmp_vecstring <-unlist(input_tmp)
-	input_vecstring = sub("^([^.]*).*", "\\1", input_tmp_vecstring) 
-  	if (tumorcsv== "none") 
-  	{
-  		segcall=cnSegCallingProcess(dataset,chromosome=chrom_vec, listOfFiles=input_vecstring, nclass=nbcall, savePlot=outputfigures, onlySNP=snp, cellularity=cellularity, method=method)
-  	} else {
-  		segcall=cnSegCallingProcess(dataset,chromosome=chrom_vec, normalTumorArray=tumorcsv, listOfFiles=input_vecstring, nclass=nbcall, savePlot=outputfigures, onlySNP=snp, cellularity=cellularity, method=method)
-  	}
-}
-
-
-write.table(format(segcall),output,row.names = FALSE, quote=FALSE, sep = "\t")
-
-
-if (outputgraph) {	
-	setwd(abs_fig_dir)
-	files2zip <- dir(abs_fig_dir)
-	zip(zipfile = "figures.zip", files = files2zip)
-	file.rename("figures.zip",zipfigures)
-}
-
-if (outputlog){
-	sink(type="output")
-	sink(type="message")
-	close(sinklog)
-} 
-#write.fwf(segcall,output,rownames = FALSE, quote=FALSE, sep = "\t")
-
--- a/segcall.xml	Tue Jun 16 04:34:09 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-<tool id="segcall" name="Segmentation and calling" force_history_refresh="True" version="1.1.0">
-  <description>of the normalized data</description>
-  <requirement type="package" version="1.1.2">mpagenomics</requirement>
-  <command>
-    <![CDATA[ 
-        Rscript 
-        ${__tool_directory__}/segcall.R 
-  		--chrom '$chrom' 
-  		--input '$input' 
-  		--output '$output' 
-  		--new_file_path '$__new_file_path__' 
-  		--nbcall '$nbcall' 
-  	#if $settings.settingsType == "file":
-  		--settingsType '$settings.inputs'
-  	#end if
-  	#if $settings.settingsType == "dataset":
-  		--settingsType '$settings.settingsType'
-  	#end if
-  		--outputgraph '$outputgraph' 
-  		--snp '$snp' 
-  		--zipfigures '$zipfigures'
-  	#if $settingsTumor.settingsTypeTumor == "standard":
-  		--settingsTypeTumor 'none'
-  	#end if
-  	#if $settingsTumor.settingsTypeTumor == "tumor":
-  		--settingsTypeTumor '$tumorcsv'
-  	#end if
-  		--cellularity '$cellularity' 
-  		--outputlog '$outputlog' 
-  		--log '$log' 
-  		--userid '$__user_id__' 
-  		--method '$method'
-  	]]>
-  </command>
-  <inputs>
-    <!--param name="input" type="data" format="m:cel" label="Cel dataset" refresh="TRUE" help="cel files dataset previously normalized with the Data Normalization tool"/-->
-  	<!--param name="inputXml" type="data" format="xml" label="Workspace" help="cel files dataset previously normalized with the Data Normalization tool"/-->
-	<param name="input" type="data" format="dsf" label="Dataset summary file" help="Summary text file generated by the Data Normalization tool"/>
-	        
-    <conditional name="settings">
-      <param name="settingsType" type="select" label="Files selection Mode" help="Select the whole cel files dataset or pick-up only few files from the dataset">
-        <option value="dataset">Select whole dataset</option>
-        <option value="file">Select file(s) individually</option>
-      </param>
-      <when value="dataset" />
-      <when value="file">
-        <param name="inputs" type="select" format="cel" multiple="true" label="Cel files">
-        <options from_dataset="input">
-    		<column name="name" index="0"/>
-    		<column name="value" index="0"/>
-		</options>
-		</param>
-      </when>
-    </conditional>
-    <conditional name="settingsTumor">
-      <param name="settingsTypeTumor" type="select" label="Reference">
-        <option value="standard">Study without reference</option>
-        <option value="tumor">Normal-tumor study</option>
-      </param>
-      <when value="standard" />
-      <when value="tumor">
-        <param name="tumorcsv" type="data" format="csv" label="TumorBoost csv file" help="Normal-tumor csv file. See below for more information."/>
-      </when>
-    </conditional>    
-      
-      <param name="snp" type="select" label="Select Probes">
-        	<option value="FALSE">CN and SNP probes</option>
-        	<option value="TRUE">Only SNP probes</option>
-    	</param>
-   
-    <!--param name="chrom" type="text" value="All" label="Chromosomes" help="Chromosomes to segment. Use comma to choose multiple chromosomes: e.g. 1, 3, 8. Use 'All' for a segmentation on all chromosomes" /-->
-    
-    <param  name="chrom" type="select" size="6" multiple="true" label="Chromosomes" help="leave blank for all chromosomes">
-      <option value="All">All</option>
-      <option value="1">chr 1</option>
-      <option value="2">chr 2</option>
-      <option value="3">chr 3</option>
-      <option value="4">chr 4</option>
-      <option value="5">chr 5</option>
-      <option value="6">chr 6</option>
-      <option value="7">chr 7</option>
-      <option value="8">chr 8</option>
-      <option value="9">chr 9</option>
-      <option value="10">chr 10</option>
-      <option value="11">chr 11</option>
-      <option value="12">chr 12</option>
-      <option value="13">chr 13</option>
-      <option value="14">chr 14</option>
-      <option value="15">chr 15</option>
-      <option value="16">chr 16</option>
-      <option value="17">chr 17</option>
-      <option value="18">chr 18</option>
-      <option value="19">chr 19</option>
-      <option value="20">chr 20</option>
-      <option value="21">chr 21</option>
-      <option value="22">chr 22</option>
-      <option value="23">chr 23</option>
-      <option value="24">chr 24</option>
-      <option value="25">chr 25</option>
-    </param>   	
-    <param name="method" type="select" label="Segmentation method" help="">
-      <option value="cghseg">cghseg</option>
-      <option value="PELT">PELT</option>
-    </param>
-    	
-    <param name="nbcall" type="select" label="Number of calling classes" help="The number of levels to be used for calling. Either 3 (loss, normal, gain), 4 (including amplifications), 5 (including double deletions) ">
-      <option value="3">3</option>
-      <option value="4">4</option>
-      <option value="5">5</option>
-    </param>
-    <param name="cellularity" type="float" size="5" value="1" min="0" max="1" label="Cellularity" help="Ratio of tumor cells in the sample. Real value between 0 and 1"/>
-	<param name="outputgraph" type="select" label="Output figures">
-        <option value="TRUE">Yes</option>
-        <option value="FALSE">No</option>
-     </param>    
-    <param name="outputlog" type="select" label="Output log">
-        <option value="TRUE">Yes</option>
-        <option value="FALSE">No</option>
-    </param>
-  </inputs>
-  <outputs>
-    <data format="scr" name="output" label="seg. and call of ${input.name}" />
-    <data format="zip" name="zipfigures" label="seg. and call figures of ${input.name}">
-    	<filter>outputgraph == "TRUE"</filter>	
-    </data>
-    <data format="log" name="log" label="log of segmentation of ${input.name}">
-    	<filter>outputlog == "TRUE"</filter>
-    </data>
-   </outputs>
-   <stdio>
-    <exit_code range="1:"   level="fatal"   description="See logs for more details" />
-   </stdio>
-<help>
-.. class:: warningmark
-
-Data normalization must be run with the Data Normalization tool prior to segmentation. Otherwise, the standalone version can be used to perform marker selection from matrices containing data normalized with tools different from the one proposed in this instance.  
-	
-
------
-
-**What it does**     	
-This tool segments the previously normalized profiles and labels segments found in the copy-number profiles. Otherwise, the standalone version can be used to perform segmentation from matrices containing data normalized with tools different from the one proposed in this instance.  
-	
-Outputs:
-  	
-*A tabular text file containing 7 columns which describe all the segments (1 line per segment):*
-	
-	- sampleNames: Names of the original .CEL files.
-	- chrom: Chromosome of the segment.
-	- chromStart: Starting position (in bp) of the segment. This position is not included in the segment.
-	- chromEnd: Ending position (in bp) of the segment. This position is included in the segment.
-	- probes: Number of probes in the segment.
-	- means: Mean of the segment.
-	- calls: Calling of the segment (”double loss”, ”loss”, ”normal”, ”gain” or ”amplification”).
-  		
-*A .zip file containing all the figures (optionnal)*
-	
------
-  		
-**Normal-tumor study**
-     	
-In cases where normal (control) samples match to tumor samples, they are taken as references to extract copy number profile. In this case, a normal-tumor csv file must be provided :
-
-	- The first column contains the names of the files corresponding to normal samples of the dataset.
-     	 
-	- The second column contains the names of the tumor samples files. 
-     	
-	- Column names of these two columns are respectively normal and tumor.
-     	
-	- Columns are separated by a comma.
-     	
-	- *Extensions of the files (.CEL for example) should be removed*
-
-
-     	
-**Example** 
-
-Let 6 .cel files in the studied dataset (3 patients, each of them being represented by a couple of normal and tumor cel files.) ::
-     	
-     	patient1_normal.cel
-     	patient1_tumor.cel
-     	patient2_normal.cel
-     	patient2_tumor.cel
-     	patient3_normal.cel 
-     	patient3_tumor.cel
-      	
-
-The csv file should look like this ::
-     	
-     	normal,tumor
-     	patient1_normal,patient1_tumor
-     	patient2_normal,patient2_tumor
-     	patient3_normal,patient3_tumor
-
------     	  		
-
-     	
-**Citation**
-
-If you use this tool please cite : 
-
-`Q. Grimonprez, A. Celisse, M. Cheok, M. Figeac, and G. Marot. MPAgenomics : An R package for multi-patients analysis of genomic markers, 2014. Preprint &lt;http://fr.arxiv.org/abs/1401.5035&gt;`_
-	
-As segmentation is performed with PELT, please also cite `R. Killick, P. Fearnhead, and I. A. Eckley. Optimal detection of changepoints with a linear computational cost. Journal of the American Statistical Association, 107(500):1590–1598, 2012. &lt;http://arxiv.org/abs/1101.1438&gt;`_
-
-As segmentation is performed by cghseg, please cite	`Picard, F., Robin, S., Lavielle, M., Vaisse, C., and Daudin, J.-J. (2005). A statistical approach for array CGH data analysis. BMC Bioinformatics, 6(1):27. &lt;http://www.ncbi.nlm.nih.gov/pubmed/15705208&gt;`_ ,
-and also cite Rigaill, G. (2010). `Pruned dynamic programming for optimal multiple change-point detection. &lt;http://arxiv.org/abs/1004.0887&gt;`_	
-
-When using the labels of the segments, please cite CGHCall `M. A. van de Wiel, K. I. Kim, S. J. Vosse, W. N. van Wieringen, S. M. Wilting, and B. Ylstra. CGHcall: calling aberrations for array CGH tumor profiles. Bioinformatics, 23(7):892–894, 2007. &lt;http://bioinformatics.oxfordjournals.org/content/23/7/892.abstract&gt;`_
-	
-</help>
-</tool>
--- a/segmentFracB.R	Tue Jun 16 04:34:09 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-#!/usr/bin/env Rscript
-# setup R error handling to go to stderr
-options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
-
-# we need that to not crash galaxy with an UTF8 error on German LC settings.
-loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
-
-library("optparse")
-
-##### Read options
-option_list=list(
-		make_option("--chrom",type="character",default=NULL, dest="chrom"),
-		make_option("--input",type="character",default=NULL, dest="input"),
-		make_option("--output",type="character",default=NULL, dest="output"),
-		make_option("--new_file_path",type="character",default=NULL, dest="new_file_path"),
-		make_option("--settings_type",type="character",default=NULL, dest="settingsType"),
-		make_option("--output_graph",type="character",default=NULL, dest="outputgraph"),
-		make_option("--zip_figures",type="character",default=NULL, dest="zipfigures"),
-		make_option("--settings_tumor",type="character",default=NULL, dest="settingsTypeTumor"),
-		make_option("--outputlog",type="character",default=NULL, dest="outputlog"),
-		make_option("--log",type="character",default=NULL, dest="log"),
-		make_option("--userid",type="character",default=NULL, dest="userid"),
-		make_option("--method",type="character",default=NULL, dest="method")
-);
-
-opt_parser = OptionParser(option_list=option_list);
-opt = parse_args(opt_parser);
-
-if(is.null(opt$input)){
-	print_help(opt_parser)
-	stop("input required.", call.=FALSE)
-}
-
-#loading libraries
-
-args<-commandArgs(TRUE)
-
-chrom=opt$chrom
-datasetFile=opt$input
-output=opt$output
-tmp_dir=opt$new_file_path
-input=opt$settingsType
-outputfigures=type.convert(opt$outputgraph)
-tumorcsv=opt$settingsTypeTumor
-user=opt$userid
-method=opt$method
-log=opt$log
-outputlog=opt$outputlog
-outputgraph=opt$outputgraph
-zipfigures=opt$zipfigures
-
-#chrom=opt$chrom
-#datasetFile=opt$input
-#output=opt$output
-#tmp_dir=opt$new_file_path
-#nbcall=as.numeric(opt$nbcall)
-#settingsType=opt$settingsType
-#outputfigures=type.convert(opt$outputgraph)
-#snp=type.convert(opt$snp)
-#tumorcsv=opt$settingsTypeTumor
-#cellularity=as.numeric(opt$cellularity)
-#user=opt$userid
-#method=opt$method
-#log=opt$log
-#outputlog=opt$outputlog
-#outputgraph=opt$outputgraph
-#zipfigures=opt$zipfigures
-
-library(MPAgenomics)
-workdir=file.path(tmp_dir, "mpagenomics",user)
-setwd(workdir)
-
-if (grepl("all",tolower(chrom)) | chrom=="None") {
-	chrom_vec=c(1:25)
-} else {
-	chrom_tmp <- strsplit(chrom,",")
-	chrom_vecstring <-unlist(chrom_tmp)
-	chrom_vec <- as.numeric(chrom_vecstring)
-}
-
-
-if (outputlog){
-	sinklog <- file(log, open = "wt")
-	sink(sinklog ,type = "output")
-	sink(sinklog, type = "message")
-} 
-
-
-inputDataset=read.table(file=datasetFile,stringsAsFactors=FALSE)
-dataset=inputDataset[1,2]
-
-
-
-library(MPAgenomics)
-workdir=file.path(tmp_dir, "mpagenomics",user)
-setwd(workdir)
-
-if (grepl("all",tolower(chrom)) | chrom=="None") {
-	chrom_vec=c(1:25)
-} else {
-	chrom_tmp <- strsplit(chrom,",")
-	chrom_vecstring <-unlist(chrom_tmp)
-	chrom_vec <- as.numeric(chrom_vecstring)
-}
-
-fig_dir = file.path("mpagenomics", user, "figures", dataset, "segmentation","fracB")
-abs_fig_dir = file.path(tmp_dir, fig_dir)
-
-if (outputgraph) {
-	if (dir.exists(abs_fig_dir)) {
-		system(paste0("rm -r ", abs_fig_dir))
-	}
-}
-
-if (input == 'dataset') {
-	segcall=segFracBSignal(dataset,chromosome=chrom_vec, normalTumorArray=tumorcsv, savePlot=outputfigures, method=method)
-	
-} else {
-	input_tmp <- strsplit(input,",")
-	input_tmp_vecstring <-unlist(input_tmp)
-	input_vecstring = sub("^([^.]*).*", "\\1", input_tmp_vecstring) 
-	segcall=segFracBSignal(dataset,chromosome=chrom_vec, normalTumorArray=tumorcsv, listOfFiles=input_vecstring, savePlot=outputfigures, method=method)
-	
-}
-write.table(segcall,output,row.names = FALSE, quote=FALSE, sep = "\t")
-
-if (outputgraph) {	
-	setwd(abs_fig_dir)
-	files2zip <- dir(abs_fig_dir)
-	zip(zipfile = "figures.zip", files = files2zip)
-	file.rename("figures.zip",zipfigures)
-}
-
-if (outputlog){
-	sink(type="output")
-	sink(type="message")
-	close(sinklog)
-} 
-
-#sink(output)
-#print(format(segcall))
-#sink()
-
-
--- a/segmentFracB.xml	Tue Jun 16 04:34:09 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-<tool id="segFracB" name="Segmentation of allele B fraction " force_history_refresh="True" version="1.0.0">
-  <description></description>
-  <command>
-    <![CDATA[ 
-        Rscript
-        ${__tool_directory__}/segmentFracB.R  
-  		--chrom '$chrom' 
-  		--input '$input' 
-  		--output '$output' 
-  		--new_file_path '$__new_file_path__'
-  		#if $settings.settingsType == "file":
-  			--settings_type '$settings.inputs'
-  		#end if
-  		#if $settings.settingsType == "dataset":
-  			--settings_type '$settings.settingsType'
-  		#end if
-  		--output_graph '$outputgraph' 
-  		--zip_figures '$zipfigures'
-  		--settings_tumor '$tumorcsv'
-  		--outputlog '$outputlog' 
-  		--log '$log' 
-  		--userid '$__user_id__' 
-  		--method '$method'
-  	]]>
-  </command>
-  <inputs>
-   	<param name="input" type="data" format="dsf" label="Dataset summary file" help="Summary text file generated by the Data normalization tool"/>
-	        
-    <conditional name="settings">
-      <param name="settingsType" type="select" label="Files selection Mode" help="Select the whole cel files dataset or pick-up only few files from the dataset">
-        <option value="dataset">Select whole dataset</option>
-        <option value="file">Select file individually</option>
-      </param>
-      <when value="dataset" />
-      <when value="file">
-        <param name="inputs" type="select" format="cel" multiple="true" label="Cel files">
-        <options from_dataset="input">
-    		<column name="name" index="0"/>
-    		<column name="value" index="0"/>
-		</options>
-		</param>
-      </when>
-    </conditional>
-    
-    <param name="tumorcsv" type="data" format="csv" label="Normal-tumor csv file" help="Normal-tumor csv file. See below for more information."/>
-        
-              
-    <!--param name="chrom" type="text" value="All" label="Chromosomes" help="Chromosomes to segment. Use comma to choose multiple chromosomes: e.g. 1, 3, 8. Use 'All' for a segmentation on all chromosomes" /-->
-    
-    <param  name="chrom" type="select" size="6" multiple="true" label="Chromosomes" help="leave blank for all chromosomes">
-      <option value="All">All</option>
-      <option value="1">chr 1</option>
-      <option value="2">chr 2</option>
-      <option value="3">chr 3</option>
-      <option value="4">chr 4</option>
-      <option value="5">chr 5</option>
-      <option value="6">chr 6</option>
-      <option value="7">chr 7</option>
-      <option value="8">chr 8</option>
-      <option value="9">chr 9</option>
-      <option value="10">chr 10</option>
-      <option value="11">chr 11</option>
-      <option value="12">chr 12</option>
-      <option value="13">chr 13</option>
-      <option value="14">chr 14</option>
-      <option value="15">chr 15</option>
-      <option value="16">chr 16</option>
-      <option value="17">chr 17</option>
-      <option value="18">chr 18</option>
-      <option value="19">chr 19</option>
-      <option value="20">chr 20</option>
-      <option value="21">chr 21</option>
-      <option value="22">chr 22</option>
-      <option value="23">chr 23</option>
-      <option value="24">chr 24</option>
-      <option value="25">chr 25</option>
-    </param>   	
-    <param name="method" type="select" label="Segmentation method" help="">
-      <option value="cghseg">cghseg</option>
-      <option value="PELT">PELT</option>
-    </param>
-  	<param name="outputgraph" type="select" label="Output figures">
-        <option value="TRUE">Yes</option>
-        <option value="FALSE">No</option>
-    </param>
-    <param name="outputlog" type="select" label="Output log">
-        <option value="TRUE">Yes</option>
-        <option value="FALSE">No</option>
-    </param>
-  </inputs>
-  <outputs>
-    <data format="sar" name="output" label="allele B fraction segmentation of ${input.name}" />
-    <data format="zip" name="zipfigures" label="allele B fraction segmentation figures of ${input.name}">
-    	<filter>outputgraph == "TRUE"</filter>	
-    </data>
-    <data format="log" name="log" label="log of allele B fraction segmentation of ${input.name}">
-    	<filter>outputlog == "TRUE"</filter>
-    </data>
-   </outputs>
-   <stdio>
-    <exit_code range="1:"   level="fatal"   description="See logs for more details" />
-   </stdio>
-<help>
-.. class:: warningmark
-
-Data normalization must be run (with the data normalization tool) prior to segmentation.
-
------
-
-**What it does**     	
-This tool segments allele B fraction extracted from the previously normalized data. This tools works only on normal-tumor study.
-	
-Outputs:
-  	
-*A tabular text file containing 6 columns which describe all the segment (1 line per segment):*
-	
-	- sampleNames: Name of the file.
-	- chrom: The chromosome of the segment.
-	- chromStart: The starting position (in bp) of the segment. This position is not included in the segment.
-	- chromEnd: The ending position (in bp) of the segment. This position is included in the segment.
-	- probes: Number of probes in the segment.
-	- means: Mean of the segment.
-	  		
-*A .zip file containing all the figures (optionnal)*
-	
------
-  		  		
-**Normal-tumor csv files**
-     	
-Normal-tumor csv file is required to segment Allele B fraction, because naive genotyping is based on normal samples :
-
-	- The first column contains the names of the files corresponding to normal samples of the dataset.
-     	 
-	- The second column contains the names of the tumor samples files. 
-     	
-	- Column names of these two columns are respectively normal and tumor.
-     	
-	- Columns are separated by a comma.
-     	
-	- *Extensions of the files (.CEL for example) should be removed*
-
-
-     	
-**Example** 
-
-Let 6 .cel files in the studied dataset (3 patients, each of them being represented by a couple of normal and tumor cel files.) ::
-     	
-     	patient1_normal.cel
-     	patient1_tumor.cel
-     	patient2_normal.cel
-     	patient2_tumor.cel
-     	patient3_normal.cel 
-     	patient3_tumor.cel
-      	
-
-The csv file should look like this ::
-     	
-     	normal,tumor
-     	patient1_normal,patient1_tumor
-     	patient2_normal,patient2_tumor
-     	patient3_normal,patient3_tumor
-
------     	  		
-
-     	
-**Citation**
-
-If you use this tool please cite : 
-
-`Q. Grimonprez, A. Celisse, M. Cheok, M. Figeac, and G. Marot. MPAgenomics : An R package for multi-patients analysis of genomic markers, 2014. Preprint &lt;http://fr.arxiv.org/abs/1401.5035&gt;`_
-	
-If segmentation is performed with PELT, please cite `R. Killick, P. Fearnhead, and I. A. Eckley. Optimal detection of changepoints with a linear computational cost. Journal of the American Statistical Association, 107(500):1590–1598, 2012. &lt;http://arxiv.org/abs/1101.1438&gt;`_
-
-If segmentation is performed by cghseg, please cite	`Picard, F., Robin, S., Lavielle, M., Vaisse, C., and Daudin, J.-J. (2005). A statistical approach for array CGH data analysis. BMC Bioinformatics, 6(1):27. &lt;http://www.ncbi.nlm.nih.gov/pubmed/15705208&gt;`_ ,
-and also cite Rigaill, G. (2010). `Pruned dynamic programming for optimal multiple change-point detection. &lt;http://arxiv.org/abs/1004.0887&gt;`_
-	
-</help>
-</tool>
\ No newline at end of file
--- a/segmentation.R	Tue Jun 16 04:34:09 2020 -0400
+++ b/segmentation.R	Mon Apr 12 14:47:09 2021 +0000
@@ -3,7 +3,7 @@
 options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
 
 # we need that to not crash galaxy with an UTF8 error on German LC settings.
-loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+# loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
 
 library("optparse")
 
@@ -58,9 +58,13 @@
 #signalType=args[8]
 
 library(MPAgenomics)
-workdir=file.path(tmp_dir,"mpagenomics",userId)
+workdir=file.path(tmp_dir)
+if (!dir.exists(workdir))
+  dir.create(workdir, showWarnings = TRUE, recursive = TRUE)
 setwd(workdir)
 
+workdir
+
 if (outputlog){
 	sinklog <- file(log, open = "wt")
 	sink(sinklog ,type = "output")
@@ -92,6 +96,21 @@
     	callobj= callingObject(copynumber=currentSeg$signal, segmented=currentSeg$segmented,chromosome=rep(chr,length(currentSeg$signal)), position=currentSeg$startPos,sampleNames=sample)
 	    currentCall=callingProcess(callobj,nclass=nbcall,cellularity=cellularity,verbose=TRUE)
 	    currentResult=currentCall$segment
+	    if(outputgraph)
+  		{    
+    	
+		currentPos=unlist(currentPositions)
+		figName <- sprintf("%s,%s", sample, chr);
+          	pathname <- file.path(sprintf("%s.png", figName));
+          	png(filename = pathname, width = 1280, height = 480)
+          	plot(NA,xlim=c(min(currentPos),max(currentPos)), ylim=c(0,6),xlab="Position", main=figName,ylab="CN", pch=".")
+		points(currentPos, unlist(currentSignal), pch=".");
+		for(i in 1:nrow(currentResult))
+            		lines(c(currentResult$chromStart[i],currentResult$chromEnd[i]),rep(currentResult$means[i],2),col="red",lwd=3)
+          	dev.off()	
+			
+ 		 }	
+	    
 	    currentResult["sampleNames"]=c(rep(sample,length(currentCall$segment$chrom)))
 	    result=rbind(result,currentResult)
 	}
@@ -119,17 +138,38 @@
 				currentResult["chrom"]=c(rep(chr,length(currentSeg$segment$means)))
 				currentResult["sampleNames"]=c(rep(sample,length(currentSeg$segment$means)))
 				result=rbind(result,currentResult)
-				
+				if(outputgraph)
+	                	{
+
+                		currentPos=unlist(currentPositions) 
+                		figName <- sprintf("%s,%s", sample, chr);
+                		pathname <- file.path(sprintf("%s.png", figName));
+                		png(filename = pathname, width = 1280, height = 480)
+                		plot(NA,xlim=c(min(currentPos),max(currentPos)), ylim=c(0,1),xlab="Position", main=figName,ylab="CN", pch=".")
+                		points(currentPos, unlist(currentSignal), pch=".");
+				print(currentResult)
+				for(i in 1:nrow(currentResult))
+                       			lines(c(currentResult$start[i],currentResult$end[i]),rep(currentResult$means[i],2),col="red",lwd=3)
+                		dev.off()
+                        
+                 	}
+
+	
+	
 			}
 			cat(paste0("OK\n"))
 		}
 	}
 	finalResult=data.frame(sampleNames=result["sampleNames"],chrom=result["chrom"],chromStart=result["start"],chromEnd=result["end"],probes=result["points"],means=result["means"],stringsAsFactors=FALSE)
+	colnames(finalResult)=c("sampleNames","chrom","chromStart","chromEnd","probes","means")
 	write.table(finalResult,output,row.names = FALSE, quote=FALSE, sep = "\t")
 }
 
 if (outputgraph){
-	file.rename(file.path(tmp_dir,"mpagenomics",userId,"Rplots.pdf"), graph)
+	library(zip)
+        files2zip <- dir(pattern=".png")
+        zipr(graph, files = files2zip)
+
 }
 
 if (outputlog){
--- a/segmentation.xml	Tue Jun 16 04:34:09 2020 -0400
+++ b/segmentation.xml	Mon Apr 12 14:47:09 2021 +0000
@@ -1,6 +1,8 @@
-<tool id="segmentation" name="Segmentation and calling" force_history_refresh="True" version="1.1.0">
+<tool id="segmentation" name="Segmentation and calling" version="1.2.0">
   <description>of a previously normalized signal</description>
-  <requirement type="package" version="1.1.2">mpagenomics</requirement>
+   <requirements>
+        <container type="docker">sblanck/mpagenomicsdependencies</container>
+  </requirements>
   <command>
     <![CDATA[ 
         Rscript 
@@ -13,7 +15,7 @@
   			--cellularity '1.0'
   		#end if
   		--input '$input' 
-  		--new_file_path '$__new_file_path__' 
+  		--new_file_path '$output.extra_files_path' 
   		--outputlog '$outputlog' 
   		--output '$output' 
   		--log '$log' 
@@ -63,7 +65,7 @@
     <data format="log" name="log" label="log of segmentation of ${input.name}">
     	<filter>outputlog == "TRUE"</filter>
     </data>
-    <data format="pdf" name="graph" label="graph of segmentation of ${input.name}">
+    <data format="zip" name="graph" label="graph of segmentation of ${input.name}">
     	<filter>outputgraph == "TRUE"</filter>
     </data>
   </outputs>
--- a/selection.R	Tue Jun 16 04:34:09 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-#!/usr/bin/env Rscript
-# setup R error handling to go to stderr
-options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
-
-# we need that to not crash galaxy with an UTF8 error on German LC settings.
-loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
-
-library("optparse")
-
-##### Read options
-option_list=list(
-		make_option("--chrom",type="character",default=NULL, dest="chrom"),
-		make_option("--input",type="character",default=NULL, dest="input"),
-		make_option("--output",type="character",default=NULL, dest="output"),
-		make_option("--new_file_path",type="character",default=NULL, dest="new_file_path"),
-		make_option("--response",type="character",default=NULL, dest="response"),
-		make_option("--settingsType",type="character",default=NULL, dest="settingsType"),
-		make_option("--outputgraph",type="character",default=NULL, dest="outputgraph"),
-		make_option("--settingsSnp",type="character",default=NULL, dest="settingsSnp"),
-		make_option("--settingsSignal",type="character",default=NULL, dest="settingsSignal"),
-		make_option("--settingsLoss",type="character",default=NULL, dest="settingsLoss"),
-		make_option("--pdffigures",type="character",default=NULL, dest="pdffigures"),
-		make_option("--folds",type="character",default=NULL, dest="folds"),
-		make_option("--outputlog",type="character",default=NULL, dest="outputlog"),
-		make_option("--log",type="character",default=NULL, dest="log"),
-		make_option("--userId",type="character",default=NULL, dest="userid"),
-		make_option("--settingsPackage",type="character",default=NULL, dest="settingsPackage")
-);
-
-opt_parser = OptionParser(option_list=option_list);
-opt = parse_args(opt_parser);
-
-if(is.null(opt$input)){
-	print_help(opt_parser)
-	stop("input required.", call.=FALSE)
-}
-
-#loading libraries
-
-
-chrom=opt$chrom
-dataset=opt$input
-dataResponse=opt$response
-output=opt$output
-tmp_dir=opt$new_file_path
-signal=opt$settingsSignal
-settingsType=opt$settingsType
-outputfigures=type.convert(opt$outputgraph)
-snp=type.convert(opt$settingsSnp)
-user=opt$userid
-folds=as.numeric(opt$folds)
-loss=opt$settingsLoss
-log=opt$log
-outputlog=opt$outputlog
-outputgraph=opt$outputgraph
-pdffigures=opt$pdffigures
-package=opt$settingsPackage
-
-
-library(MPAgenomics)
-library(glmnet)
-library(spikeslab)
-library(lars)
-
-inputDataset=read.table(file=dataset,stringsAsFactors=FALSE)
-input=inputDataset[1,2]
-workdir=file.path(tmp_dir, "mpagenomics",user)
-print(workdir)
-setwd(workdir)
-
-if (grepl("all",tolower(chrom)) | chrom=="None") {
-		chrom_vec=c(1:25)
-	} else {
-		chrom_tmp <- strsplit(chrom,",")
-		chrom_vecstring <-unlist(chrom_tmp)
-		chrom_vec <- as.numeric(chrom_vecstring)
-	}
-
-if (outputlog){
-	sinklog <- file(log, open = "wt")
-	sink(sinklog ,type = "output")
-	sink(sinklog, type = "message")
-} 
-
-if (settingsType == "tumor") {
-	if (signal=="CN") {
-			res=markerSelection(input,dataResponse, chromosome=chrom_vec, signal=signal, normalTumorArray=tumor, onlySNP=snp, loss=loss, plot=outputfigures, nbFolds=folds, pkg=package)
-		} else {
-			res=markerSelection(input,dataResponse, chromosome=chrom_vec,signal=signal,normalTumorArray=tumor, loss=loss, plot=outputfigures, nbFolds=folds,pkg=package)	
-		} 
-} else {
-	if (signal=="CN") {
-		res=markerSelection(input,dataResponse, chromosome=chrom_vec, signal=signal, onlySNP=snp, loss=loss, plot=outputfigures, nbFolds=folds,pkg=package)
-		} else {
-  		res=markerSelection(input,dataResponse, chromosome=chrom_vec, signal=signal, loss=loss, plot=outputfigures, nbFolds=folds,pkg=package)
-		}
-}
-
-res
-
-df=data.frame()
-list_chr=names(res)
-markerSelected=FALSE
-
-for (i in list_chr) {
-  chr_data=res[[i]]
-  len=length(chr_data$markers.index)
-  if (len != 0)
-  {
-	markerSelected=TRUE
-	chrdf=data.frame(rep(i,len),chr_data$markers.position,chr_data$markers.index,chr_data$markers.names,chr_data$coefficient)
-  	df=rbind(df,chrdf)
-  }
-}
-
-if (outputgraph){
-	file.rename(file.path(tmp_dir,"mpagenomics",user,"Rplots.pdf"), pdffigures)
-}
-
-if (outputlog){
-	sink(type="output")
-	sink(type="message")
-	close(sinklog)
-} 
-
-if (markerSelected) {
-	colnames(df) <- c("chr","position","index","names","coefficient")
-	#sink(output)
-	#print(format(df),row.names=FALSE)
-	#sink()
-	write.table(df,output,row.names = FALSE, quote = FALSE, sep = "\t")
-} else 
-	writeLines("no SNP selected", output)
-
-
--- a/selection.xml	Tue Jun 16 04:34:09 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-<tool id="selection" name="Markers selection" force_history_refresh="True" version="0.1.0">
-  <command>
-    <![CDATA[ 
-        Rscript 
-        ${__tool_directory__}/selection.R 
-  	 --input '$input'  
-  	 --response '$response' 
-  	 --chrom '$chromosome' 
-  	 --new_file_path '$__new_file_path__' 
-  	 --settingsSignal '$settingsSNP.signal'
-  	#if $settingsSNP.signal == "CN":
-  	 --settingsSnp '$settingsSNP.snp' 
-  	#end if
-  	#if $settingsSNP.signal == "fracB":
-  	 --settingsSnp 'none'
-  	#end if
-  	 --settingsType '$settings.settingsType'
-  	#if $settings.settingsType == "tumor":
-  	 --settingsType '$tumorcsv' 
-  	#end if
-  	#if $settings.settingsType == "standard":
-  	 --settingsType 'none'
-  	#end if
-  	 --folds '$folds' 
-  	 --settingsLoss '$settingsLoss.loss' 
-  	 --outputgraph '$outputgraph' 
-  	 --output '$output' 
-  	 --pdffigures '$pdffigures' 
-  	 --outputlog '$outputlog' 
-  	 --log '$log' 
-  	 --userId '$__user_id__'
-  	#if $settingsLoss.loss == "linear":
-  	 --settingsPackage '$settingsLoss.package' 
-  	#end if
-  	#if $settingsLoss.loss == "logistic":
-  	 --settingsPackage'HDPenReg'
-  	#end if
-  	]]>
-  </command>
-  <inputs>
-    <param name="input" type="data" format="dsf" label="Dataset summary file" help="Summary text file generated by the Data normalization tool"/>
-	 
-  	<param name="response" type="data" format="csv" label="Data response" help="Data response csv file. See below for more information on file format" />
-	
-	<param  name="chromosome" type="select" size="6" multiple="true" label="Chromosomes">
-      <option value="1">chr 1</option>
-      <option value="2">chr 2</option>
-      <option value="3">chr 3</option>
-      <option value="4">chr 4</option>
-      <option value="5">chr 5</option>
-      <option value="6">chr 6</option>
-      <option value="7">chr 7</option>
-      <option value="8">chr 8</option>
-      <option value="9">chr 9</option>
-      <option value="10">chr 10</option>
-      <option value="11">chr 11</option>
-      <option value="12">chr 12</option>
-      <option value="13">chr 13</option>
-      <option value="14">chr 14</option>
-      <option value="15">chr 15</option>
-      <option value="16">chr 16</option>
-      <option value="17">chr 17</option>
-      <option value="18">chr 18</option>
-      <option value="19">chr 19</option>
-      <option value="20">chr 20</option>
-      <option value="21">chr 21</option>
-      <option value="22">chr 22</option>
-      <option value="23">chr 23</option>
-      <option value="24">chr 24</option>
-      <option value="25">chr 25</option>
-    </param>   
-	<conditional name="settingsSNP">
-    	<param name="signal" type="select" multiple="false" label="Signal you want to work on">
-     		<option value="CN">CN</option>
-      		<option value="fracB">fracB</option>
-    	</param> 
-    	<when value="fracB"/>
-		<when value="CN">    	
-     	<param name="snp" type="select" label="Select Probes">
-        	<option value="FALSE">CN and SNP probes</option>
-        	<option value="TRUE">Only SNP probes</option>
-    	</param>
-    	</when>
-    </conditional>
-    <conditional name="settings">
-      <param name="settingsType" type="select" label="Reference" help="">
-        <option value="standard">Study without reference</option>
-        <option value="tumor">Normal-tumor study</option>
-      </param>
-      <when value="standard" />
-      <when value="tumor">
-        <param name="tumorcsv" type="data" format="csv" label="tumor boost csv file" help="Normal-tumor csv file. See below for more information."/>
-      </when>
-    </conditional>
-   
-    <param name="folds" type="integer" min="1" value="10" label ="Number of folds for cross validation" help="Integer between 1 and number of file in the .cel file dataset"/>
-    <conditional name="settingsLoss">
-    <param name="loss" type="select" multiple="false" label="Response type">
-      	<option value="linear">Linear</option>
-    	<option value="logistic">Logistic</option>
-     </param>
-      <when value="logistic" />
-      <when value="linear">
-        <param name="package" type="select" multiple="false" label="Method" help="Either “HDPenReg” or “spikeslab”. Used package in linear case">
-      		<option value="HDPenReg">HDPenReg</option>
-    		<option value="spikeslab">spikeslab</option>
-     	</param> 
-     </when>
-    </conditional>
-    <param name="outputgraph" type="select" multiple="false" label="Plot figures">
-      <option value="TRUE">Yes</option>
-      <option value="FALSE">No</option>
-    </param>
-    <param name="outputlog" type="select" label="Output log">
-        <option value="TRUE">Yes</option>
-        <option value="FALSE">No</option>
-    </param>
-    
-    </inputs>        
-  <outputs>
-  	<data format="tabular" name="output" label="selection of ${input.name}" />
-    <data format="pdf" name="pdffigures" label="figures of SNPs selection of ${input.name}">
-    	<filter>outputgraph == "TRUE"</filter>
-    	<filter>(settingsLoss['package'] != 'spikeslab')</filter>	
-    </data>    
-    <data format="log" name="log" label="log of SNPs selection of ${input.name}">
-    	<filter>outputlog == "TRUE"</filter>
-    </data>  	
-  </outputs>
-  <stdio>
-    <exit_code range="1:"   level="fatal"   description="See logs for more details" />
-   </stdio>
-  <help>
-.. class:: warningmark
-
-Data normalization must be run with the Data Normalization tool prior to SNPs selection. Otherwise, the standalone version can be used to perform marker selection from matrices containing data normalized with tools different from the one proposed in this instance.  
-
------
-   	
-**What it does**
-   	    	
-This tool selects some relevant markers according to a response using penalized regressions.
-
-Output:
-  	
-A tabular text file containing 5 columns which describe all the selected SNPs (1 line per SNPs):
-	
-	- chr: Chromosome containing the selected SNP.
-  	- position: Position of the selected SNP.
-	- index: Index of the selected SNP.
-	- names: Name of the selected SNP.
-	- coefficient: Regression coefficient of the selected SNP.
-
------
-
-**Data Response csv file**
-     	
-Data response csv file format:
-	
-	- The first column contains the names of the different files of the data-set.
-     	 
-	- The second column contains the response associated with each file. 
-     	
-	- Column names of these two columns are respectively files and response.
-
-	- Columns are separated by a comma
-     	
-	- *Extensions of the files (.CEL for example) should be removed*
-
-
-     	
-**Example** 
-
-Let 3 .cel files in the studied dataset ::
-     	
-     	patient1.cel
-     	patient2.cel
-     	patient3.cel 
-     	
-The csv file should look like this ::
-     	
-     	files,response
-     	patient1,1.92145
-     	patient2,2.12481
-     	patient3,1.23545
-
-
------
-  	
-**Normal-tumor study**
-     	
-In cases where normal (control) samples match to tumor samples, they are taken as references to extract copy number profile. In this case, a normal-tumor csv file must be provided :
-
-	- The first column contains the names of the files corresponding to normal samples of the dataset.
-     	 
-	- The second column contains the names of the tumor samples files. 
-     	
-	- Column names of these two columns are respectively normal and tumor.
-     	
-	- Columns are separated by a comma.
-     	
-	- *Extensions of the files (.CEL for example) should be removed*
-
-     	
-**Example** 
-
-Let 6 .cel files in the studied dataset (3 patients, each of them being represented by a couple of normal and tumor cel file.) ::
-     	
-     	patient1_normal.cel
-     	patient1_tumor.cel
-     	patient2_normal.cel
-     	patient2_tumor.cel
-     	patient3_normal.cel 
-     	patient3_tumor.cel
-      	
-
-The csv file should look like this ::
-     	
-     	normal,tumor
-     	patient1_normal,patient1_tumor
-     	patient2_normal,patient2_tumor
-     	patient3_normal,patient3_tumor
-
------     	  		
-
-
-   	
-**Citation**
-		
-If you use this tool please cite : 
-
-`Q. Grimonprez, A. Celisse, M. Cheok, M. Figeac, and G. Marot. MPAgenomics : An R package for multi-patients analysis of genomic markers, 2014. Preprint &lt;http://fr.arxiv.org/abs/1401.5035&gt;`_
- 
- </help>
-</tool>
--- a/selectionExtracted.R	Tue Jun 16 04:34:09 2020 -0400
+++ b/selectionExtracted.R	Mon Apr 12 14:47:09 2021 +0000
@@ -50,7 +50,9 @@
 #output=args[6]
 
 library(MPAgenomics)
-workdir=file.path(tmp_dir, "mpagenomics")
+workdir=file.path(tmp_dir)
+if (!dir.exists(workdir))
+  dir.create(workdir, showWarnings = TRUE, recursive = TRUE)
 setwd(workdir)
 
 if (outputlog){
@@ -70,7 +72,7 @@
 index = match(listOfFile,rownames(CNsignalMatrix))
 responseValueOrder=responseValue[index]
 
-result=variableSelection(CNsignalMatrix,responseValueOrder,nbFolds=nbFolds,loss=loss,plot=TRUE)
+result=variableSelection(CNsignalMatrix,responseValueOrder,nbFolds=nbFolds,loss=loss,plot=FALSE)
 
 CNsignalResult=CN[result$markers.index,(names(CN)%in% drops)]
 
--- a/selectionExtracted.xml	Tue Jun 16 04:34:09 2020 -0400
+++ b/selectionExtracted.xml	Mon Apr 12 14:47:09 2021 +0000
@@ -1,4 +1,7 @@
-<tool id="markersSelection" name="Markers selection" force_history_refresh="True" version="0.1.0">
+<tool id="markersSelection" name="Markers selection" version="1.2.0">
+   <requirements>
+        <container type="docker">sblanck/mpagenomicsdependencies</container>
+  </requirements>
   <description> of previously extracted signal</description>
   <command>
   	<![CDATA[ 
@@ -6,7 +9,7 @@
         ${__tool_directory__}/selectionExtracted.R 
     --input '$input' 
   	--response '$response' 
-  	--new_file_path '$__new_file_path__' 
+  	--new_file_path '$output.extra_files_path' 
   	--folds '$folds' 
   	--loss '$loss' 
   	--outputlog '$outputlog'