diff combine.xml @ 2:129cddd02600 draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/cardinal commit f127be2141cf22e269c85282d226eb16fe14a9c1
author galaxyp
date Fri, 15 Feb 2019 10:24:53 -0500
parents 65245dc812c3
children 48c07268f341
line wrap: on
line diff
--- a/combine.xml	Thu Oct 25 07:31:08 2018 -0400
+++ b/combine.xml	Fri Feb 15 10:24:53 2019 -0500
@@ -1,4 +1,4 @@
-<tool id="cardinal_combine" name="MSI combine" version="@VERSION@.1">
+<tool id="cardinal_combine" name="MSI combine" version="@VERSION@.2">
     <description>
         combine several mass spectrometry imaging datasets into one
     </description>
@@ -30,9 +30,8 @@
 
         cat '${msi_combine}' &&
         Rscript '${msi_combine}' &&
-        #if $imzml_output:
+        #if str($imzml_output) == "imzml_format":
             mkdir $outfile_imzml.files_path &&
-            ls -l &&
             mv ./out.imzML "${os.path.join($outfile_imzml.files_path, 'imzml')}" | true &&
             mv ./out.ibd "${os.path.join($outfile_imzml.files_path, 'ibd')}" | true &&
         #end if
@@ -167,7 +166,8 @@
         ## use name of Galaxy inputfile as combined sample annotation
         names_vector = character()
         #set escaped_element_identifier = re.sub('[^\w\-\s\[/]]', '_', str($infile.element_identifier))
-        if (sum(spectra(msidata_$i)[],na.rm=TRUE)>0) ## use only valid files
+
+        if (ncol(msidata_$i)>0 & nrow(msidata_$i) >0)
         {
             if (is.null(levels(msidata_$i\$combined_sample)))
             {
@@ -194,8 +194,7 @@
     ## store files to combine them later and for each file check if it is valid
 
     #silent $msidata.append('msidata_'+str($i))
-    valid_dataset = append(valid_dataset, 
-         (ncol(msidata_$i)>0 & nrow(msidata_$i)>0 & sum(spectra(msidata_$i)[], na.rm=TRUE)>0))
+    valid_dataset = append(valid_dataset, ncol(msidata_$i)>0 & nrow(msidata_$i)>0) ## file with no intensities is considered valid
 
 #end for
 
@@ -217,13 +216,15 @@
     position_df = cbind(coord(msidata_combined)[,1:2], msidata_combined\$combined_sample)
     colnames(position_df)[3] = "sample_name"
 
-     ## save as (.RData)
     msidata = msidata_combined
-    save(msidata, file="$msidata_combined")
 
     ## save msidata as imzML file
-    #if $imzml_output:
+    #if str($imzml_output) == "imzml_format":
         writeImzML(msidata, "out")
+    #elif str($imzml_output) == "rdata_format":
+        ## save as (.RData)
+        iData(msidata) = iData(msidata)[]
+        save(msidata, file="$outfile_rdata")
     #end if
 
 
@@ -251,17 +252,19 @@
 
     msidata_combined = do.call(combine, datasetlist)
 
-    ## save as (.RData)
-
     msidata = msidata_combined
-    save(msidata, file="$msidata_combined")
-
     ## save msidata as imzML file
-    writeImzML(msidata, "out")
+    #if str($imzml_output) == "imzml_format":
+        writeImzML(msidata, "out")
+    #elif str($imzml_output) == "rdata_format":
+        ## save as (.RData)
+        iData(msidata) = iData(msidata)[]
+        save(msidata, file="$outfile_rdata")
+    #end if
 
     ## create x,y,sample_name dataframe for QC pdf
 
-    position_df = cbind(coord(msidata), msidata\$combined_sample)
+    position_df = cbind(coord(msidata)[,1:2], msidata\$combined_sample)
     colnames(position_df)[3] = "sample_name"
 
 #end if
@@ -272,8 +275,6 @@
 
 ########### QC with pixels and their annotations ################################
 
-print(paste0("Number of NA in input file: ",sum(is.na(spectra(msidata)[]))))
-
 pdf("Combined_qc.pdf", width=15, height=15)
 
 ## combined plot
@@ -284,7 +285,7 @@
        theme_bw()+
        theme(text=element_text(family="ArialMT", face="bold", size=15))+
        theme(legend.position="bottom",legend.direction="vertical")+
-       guides(fill=guide_legend(ncol=5,byrow=TRUE))
+       guides(fill=guide_legend(ncol=4,byrow=TRUE))
 coord_labels = aggregate(cbind(x,y)~sample_name, data=position_df, mean)
 coord_labels\$file_number = gsub( "_.*$", "", coord_labels\$sample_name)
 for(file_count in 1:nrow(coord_labels))
@@ -293,12 +294,10 @@
 print(combine_plot)
 
     #if str($annotation_cond.annotation_tabular) == 'annotation'
-
         ## annotation plots
 
         ## plot 1
-
-        column1_df = cbind(coord(msidata), msidata\$column1)
+        column1_df = cbind(coord(msidata)[,1:2], msidata\$column1)
         colnames(column1_df)[3] = "column1"
 
         if (sum(is.na(column1_df[3])) < nrow(column1_df)){
@@ -309,13 +308,13 @@
                theme_bw()+
                theme(text=element_text(family="ArialMT", face="bold", size=15))+
                theme(legend.position="bottom",legend.direction="vertical")+
-               guides(fill=guide_legend(ncol=5,byrow=TRUE, title=annotation_colnames[1]))
+               guides(fill=guide_legend(ncol=4,byrow=TRUE, title=annotation_colnames[1]))
         print(column1_plot)}
         ##rename columnname for output tabular file
         colnames(column1_df)[3] = annotation_colnames[1]
 
         ## plot 2
-        column2_df = cbind(coord(msidata), msidata\$column2)
+        column2_df = cbind(coord(msidata)[,1:2], msidata\$column2)
         colnames(column2_df)[3] = "column2"
 
         if (sum(is.na(column2_df[3])) < nrow(column2_df)){
@@ -326,13 +325,14 @@
                theme_bw()+
                theme(text=element_text(family="ArialMT", face="bold", size=15))+
                theme(legend.position="bottom",legend.direction="vertical")+
-               guides(fill=guide_legend(ncol=5,byrow=TRUE, title=annotation_colnames[2]))
+               guides(fill=guide_legend(ncol=4,byrow=TRUE, title=annotation_colnames[2]))
         print(column2_plot)}
+
         ##rename columnname for output tabular file
         colnames(column2_df)[3] = annotation_colnames[2]
 
         ## plot 3
-        column3_df = cbind(coord(msidata), msidata\$column3)
+        column3_df = cbind(coord(msidata)[,1:2], msidata\$column3)
         colnames(column3_df)[3] = "column3"
         if (sum(is.na(column3_df[3])) < nrow(column3_df)){
         column3_plot = ggplot(column3_df, aes(x=x, y=y, fill=column3))+
@@ -342,13 +342,13 @@
                theme_bw()+
                theme(text=element_text(family="ArialMT", face="bold", size=15))+
                theme(legend.position="bottom",legend.direction="vertical")+
-               guides(fill=guide_legend(ncol=5,byrow=TRUE, title=annotation_colnames[3]))
+               guides(fill=guide_legend(ncol=4,byrow=TRUE, title=annotation_colnames[3]))
         print(column3_plot)}
         ##rename columnname for output tabular file
         colnames(column3_df)[3] = annotation_colnames[3]
 
         ## plot 4
-        column4_df = cbind(coord(msidata), msidata\$column4)
+        column4_df = cbind(coord(msidata)[,1:2], msidata\$column4)
         colnames(column4_df)[3] = "column4"
 
         if (sum(is.na(column4_df[3])) < nrow(column4_df)){
@@ -359,14 +359,14 @@
                theme_bw()+
                theme(text=element_text(family="ArialMT", face="bold", size=15))+
                theme(legend.position="bottom",legend.direction="vertical")+
-               guides(fill=guide_legend(ncol=5,byrow=TRUE, title=annotation_colnames[4]))
+               guides(fill=guide_legend(ncol=4,byrow=TRUE, title=annotation_colnames[4]))
         print(column4_plot)}
         ##rename columnname for output tabular file
         colnames(column4_df)[3] = annotation_colnames[4]
 
         ## plot5
 
-        column5_df = cbind(coord(msidata), msidata\$column5)
+        column5_df = cbind(coord(msidata)[,1:2], msidata\$column5)
         colnames(column5_df)[3] = "column5"
         if (sum(is.na(column5_df[3])) < nrow(column5_df)){
         column5_plot = ggplot(column5_df, aes(x=x, y=y, fill=column5))+
@@ -376,20 +376,18 @@
                theme_bw()+
                theme(text=element_text(family="ArialMT", face="bold", size=15))+
                theme(legend.position="bottom",legend.direction="vertical")+
-               guides(fill=guide_legend(ncol=5,byrow=TRUE, title=annotation_colnames[5]))
+               guides(fill=guide_legend(ncol=4,byrow=TRUE, title=annotation_colnames[5]))
         print(column5_plot)}
         ##rename columnname for output tabular file
         colnames(column5_df)[3] = annotation_colnames[5]
 
     #end if
-
     dev.off()
 
 ##################### annotation tabular output ################################
 
     if (length(features(msidata))> 0 & length(pixels(msidata)) > 0){
-
-position_df\$sample_name = gsub("^[^_]*_","",position_df\$sample_name)
+        position_df\$sample_name = gsub("^[^_]*_","",position_df\$sample_name)
 
         #if str($annotation_cond.annotation_tabular) == 'no_annotation':
 
@@ -399,7 +397,6 @@
             annotation_df_list = list(position_df, column1_df, column2_df, column3_df, column4_df, column5_df)
             combined_annotations = Reduce(function(...) merge(..., by=c("x", "y"), all=TRUE), annotation_df_list)
             write.table(combined_annotations, file="$pixel_annotations", quote = FALSE, row.names = FALSE, col.names=TRUE, sep = "\t")
-
         #end if 
 
     }else{
@@ -450,7 +447,7 @@
             </param>
             <when value="automatic_combine"/>
             <when value="xy_shifts">
-                <param name="coordinates_file" type="data" format="tabular" label="datasetnames, x and y values to shift pixel coordinates before combining"
+                <param name="coordinates_file" type="data" format="tabular" label="Datasetnames, x and y values to shift pixel coordinates before combining"
             help="Tabular file with three columns: 1 for the filename, 1 for the x-coordinate shift and 1 for the y-coordinate shift. Pixels with the same coordinates after shifting will be deleted."/>
                 <param name="column_x" data_ref="coordinates_file" label="Column with values for shift in x direction" type="data_column"/>
                 <param name="column_y" data_ref="coordinates_file" label="Column with values for shift in y direction" type="data_column"/>
@@ -458,15 +455,21 @@
                 <param name="xy_header" type="boolean" label="Tabular files contain a header line" truevalue="TRUE" falsevalue="FALSE"/>
             </when>
         </conditional>
-        <param name="imzml_output" type="boolean" label="Output of imzML file" truevalue="TRUE" falsevalue="FALSE"/>
+        <param name="imzml_output" type="select" display = "radio" optional = "False"
+               label="Output format" help= "Choose the output format">
+                <option value="imzml_format" selected="True">imzML</option>
+                <option value="rdata_format">RData</option>
+        </param>
     </inputs>
     <outputs>
-        <data format="rdata" name="msidata_combined" label="${tool.name} on ${on_string}"/>
+        <data format="imzml" name="outfile_imzml" label="${tool.name} on ${on_string}: imzML">
+            <filter>imzml_output=='imzml_format'</filter>
+        </data>
+        <data format="rdata" name="outfile_rdata" label="${tool.name} on ${on_string}: RData">
+            <filter>imzml_output == 'rdata_format'</filter>
+       </data>
         <data format="pdf" name="QC_overview" from_work_dir="Combined_qc.pdf" label = "${tool.name} on ${on_string}: QC"/>
         <data format="tabular" name="pixel_annotations" label="${tool.name} on ${on_string}: annotations"/>
-        <data format="imzml" name="outfile_imzml" label="${tool.name} on ${on_string} : imzML">
-            <filter>imzml_output</filter>
-       </data>
     </outputs>
     <tests>
         <test>
@@ -481,11 +484,26 @@
             <param name="column_x" value="1"/>
             <param name="column_y" value="2"/>
             <param name="column_names" value="3"/>
+            <param name="imzml_output" value="rdata_format"/>
             <output name="pixel_annotations" file="123_annotation_output.tabular"/>
-            <output name="msidata_combined" file="123_combined.RData" compare="sim_size" />
+            <output name="outfile_rdata" file="123_combined.RData" compare="sim_size" />
             <output name="QC_overview" file="123_combined_QC.pdf" compare="sim_size"/>
         </test>
         <test>
+            <param name="infiles" value="msidata_1.RData,msidata_2.RData,msidata_3.RData" ftype="rdata"/>
+            <conditional name="annotation_cond">
+                <param name="annotation_tabular" value="no_annotation"/>
+            </conditional>
+            <param name="combine_method" value="automatic_combine"/>
+            <param name="imzml_output" value="imzml_format"/>
+            <output name="QC_overview" file="123_combined_auto.pdf" compare="sim_size"/>
+            <output name="pixel_annotations" file="123_combined_auto.tabular"/>
+            <output name="outfile_imzml" ftype="imzml" file="123_combined_auto.imzml.txt" compare="sim_size">
+                <extra_files type="file" file="123_combined_auto.imzml" name="imzml" lines_diff="4"/>
+                <extra_files type="file" file="123_combined_auto.ibd" name="ibd" compare="sim_size"/>
+            </output>
+        </test>
+        <test>
             <param name="infiles" value="msidata_1.RData,msidata_2.RData" ftype="rdata"/>
             <conditional name="annotation_cond">
                 <param name="annotation_tabular" value="annotation"/>
@@ -493,8 +511,9 @@
                 <param name="tabular_header" value="TRUE"/>
             </conditional>
             <param name="combine_method" value="automatic_combine"/>
+            <param name="imzml_output" value="rdata_format"/>
             <output name="pixel_annotations" file="12_annotation_output.tabular"/>
-            <output name="msidata_combined" file="12_combined.RData" compare="sim_size" />
+            <output name="outfile_rdata" file="12_combined.RData" compare="sim_size" />
             <output name="QC_overview" file="12_combined_QC.pdf" compare="sim_size"/>
         </test>
         <test>
@@ -505,9 +524,13 @@
                 <param name="tabular_header" value="TRUE"/>
             </conditional>
             <param name="combine_method" value="automatic_combine"/>
+            <param name="imzml_output" value="imzml_format"/>
             <output name="pixel_annotations" file="112_annotation_output.tabular"/>
-            <output name="msidata_combined" file="112_auto_combined.RData" compare="sim_size" />
             <output name="QC_overview" file="112_auto_combined_QC.pdf" compare="sim_size"/>
+            <output name="outfile_imzml" ftype="imzml" file="112_auto_combined.imzml.txt" compare="sim_size">
+                <extra_files type="file" file="112_auto_combined.imzml" name="imzml" lines_diff="4"/>
+                <extra_files type="file" file="112_auto_combined.ibd" name="ibd" compare="sim_size"/>
+            </output>
         </test>
         <test>
             <param name="infiles" value="msidata_2.RData,123_combined.RData" ftype="rdata"/>
@@ -515,8 +538,9 @@
                 <param name="annotation_tabular" value="no_annotation"/>
             </conditional>
             <param name="combine_method" value="automatic_combine"/>
+            <param name="imzml_output" value="rdata_format"/>
             <output name="pixel_annotations" file="2123_annotation_output.tabular"/>
-            <output name="msidata_combined" file="2123_auto_combined.RData" compare="sim_size" />
+            <output name="outfile_rdata" file="2123_auto_combined.RData" compare="sim_size" />
             <output name="QC_overview" file="2123_auto_combined_QC.pdf" compare="sim_size"/>
         </test>
     </tests>
@@ -566,9 +590,7 @@
 
 **Output**
 
-- 
-- MSI data as .RData output (can be read with the Cardinal package in R)
-- optional: MSI data as imzML file
+- MSI data as imzML file or .RData (can be read with the Cardinal package in R)
 - pdf that shows the pixel positions and annotations of the combined files
 - Tabular file with pixel annotations (x,y,column with input file names and up to five annotation columns)