changeset 5:8563ef53288b draft

"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/cardinal commit 1df4591de435d232862f20669aea529ceb23b12a"
author galaxyp
date Fri, 13 Dec 2019 18:47:12 +0000
parents c1231933bfd6
children 1ccb0890a34a
files combine.xml test-data/112_annotation_output.tabular test-data/112_auto_combined.ibd test-data/112_auto_combined.imzml test-data/112_auto_combined.imzml.txt test-data/112_auto_combined_QC.pdf test-data/123_annotation_output.tabular test-data/123_combine.rdata test-data/123_combined.RData test-data/123_combined.ibd test-data/123_combined.imzml test-data/123_combined.imzml.txt test-data/123_combined_QC.pdf test-data/123_combined_auto.ibd test-data/123_combined_auto.imzml test-data/123_combined_auto.imzml.txt test-data/123_combined_auto.pdf test-data/123_combined_picked.rdata test-data/123_combined_picked2.rdata test-data/12_annotation_output.tabular test-data/12_combined.RData test-data/12_combined.ibd test-data/12_combined.imzml test-data/12_combined.imzml.txt test-data/12_combined_QC.pdf test-data/2123_auto_combined.RData test-data/2123_auto_combined.ibd test-data/2123_auto_combined.imzml test-data/2123_auto_combined.imzml.txt test-data/2123_auto_combined_QC.pdf test-data/picked.ibd test-data/picked.imzml test-data/picked.imzml.txt test-data/picked.tabular test-data/picked_QC.pdf test-data/xy_coordinates2.tabular
diffstat 36 files changed, 2189 insertions(+), 315 deletions(-) [+]
line wrap: on
line diff
--- a/combine.xml	Fri Mar 22 08:09:07 2019 -0400
+++ b/combine.xml	Fri Dec 13 18:47:12 2019 +0000
@@ -1,13 +1,17 @@
-<tool id="cardinal_combine" name="MSI combine" version="@VERSION@.3">
+<tool id="cardinal_combine" name="MSI combine" version="2.2.6.0">
     <description>
         combine several mass spectrometry imaging datasets into one
     </description>
     <macros>
         <import>macros.xml</import>
     </macros>
-    <expand macro="requirements">
-        <requirement type="package" version="3.0">r-ggplot2</requirement>
-    </expand>
+    <requirements>
+        <requirement type="package" version="2.2.6">bioconductor-cardinal</requirement>
+        <requirement type="package" version="3.6.1">r-base</requirement>
+        <requirement type="package" version="3.2.1">r-ggplot2</requirement>
+        <requirement type="package" version="0.12">r-maldiquantforeign</requirement>
+        <requirement type="package" version="1.19.3">r-maldiquant</requirement>
+    </requirements>
     <command detect_errors="exit_code">
     <![CDATA[
         #for $i, $infile in enumerate($infiles):
@@ -30,11 +34,9 @@
 
         cat '${msi_combine}' &&
         Rscript '${msi_combine}' &&
-        #if str($imzml_output) == "imzml_format":
-            mkdir $outfile_imzml.files_path &&
-            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
+        mkdir $outfile_imzml.files_path &&
+        mv ./out.imzML "${os.path.join($outfile_imzml.files_path, 'imzml')}" | true &&
+        mv ./out.ibd "${os.path.join($outfile_imzml.files_path, 'ibd')}" | true &&
         echo "imzML file:" > $outfile_imzml &&
         ls -l "$outfile_imzml.files_path" >> $outfile_imzml
 
@@ -42,13 +44,14 @@
     </command>
     <configfiles>
         <configfile name="msi_combine"><![CDATA[
-
 #import re
 
-################ load libraries and some preparations #################
+################ 1) load libraries and do preparations #################
 
 library(Cardinal)
 library(ggplot2)
+library(MALDIquantForeign)
+library(MALDIquant)
 
 ## read tabular file for xy_shift option
 #if str( $combine_conditional.combine_method ) == 'xy_shifts':
@@ -63,18 +66,19 @@
 }
 
 ## preparations for reading files one by one with for loop
-pixel_vector = numeric()
+sample_names = numeric()
 x_shifts = 0
 y_shifts = 0
 max_y = numeric()
 valid_dataset = logical()
+coordinates_combined = data.frame(matrix(,ncol=2, nrow=0))
+msidata_combined = list()
 #set $msidata = []
 #set $pixelcoords = []
 #set $num_infiles = len($infiles)
 all_files = $num_infiles
 
-
-############## reading files and changing pixel coordinates ###################
+###################### 2) reading MSI files ####################################
 
 #for $i, $infile in enumerate($infiles):
 
@@ -82,197 +86,226 @@
 
     #if $infile.ext == 'imzml'
         #if str($processed_cond.processed_file) == "processed":
-            msidata_$i <- readImzML('infile_${i}', mass.accuracy=$processed_cond.accuracy, units.accuracy = "$processed_cond.units", attach.only=TRUE)
+            msidata_$i <- readImzML('infile_${i}', mass.accuracy=$processed_cond.accuracy, units.accuracy = "$processed_cond.units", attach.only=TRUE, as = c("MSImageSet"))
             centroided(msidata_$i) = $centroids
         #else
-            msidata_$i <- readImzML('infile_${i}', attach.only=TRUE)
+            msidata_$i <- readImzML('infile_${i}', attach.only=TRUE, as = c("MSImageSet"))
             centroided(msidata_$i) = $centroids
         #end if
     #elif $infile.ext == 'analyze75'
-            msidata_$i <- readAnalyze('infile_${i}', attach.only=TRUE)
+            msidata_$i <- readAnalyze('infile_${i}', attach.only=TRUE, as = c("MSImageSet"))
             centroided(msidata_$i) = $centroids
     #else
             msidata_$i = loadRData('infile_${i}.RData')
+            ## keep compatibility with old .RData files:
+            msidata_$i\$column1 = NULL
+            msidata_$i\$column2 = NULL
+            msidata_$i\$column3 = NULL
+            msidata_$i\$column4 = NULL
+            msidata_$i\$column5 = NULL
+            msidata_$i\$combined_sample = NULL
+
     #end if
 
     ## remove duplicated coordinates, otherwise combine will fail
     print(paste0(sum(duplicated(coord(msidata_$i))), " duplicated coordinates were removed from input file"))
     msidata_${i} <- msidata_${i}[,!duplicated(coord(msidata_${i}))]
 
-    ## same name for MSI data files necessary to combine data in one single coordinate system
+    ## same name for MSI data files necessary to combine data into one single coordinate system
     sampleNames(msidata_$i) = "msidata"
 
-
-    ## read and process annotation tabular or automatically use name of infile as annotation
-
-        ## set all pixel annotations to NA, necessary in case files were combined before with different annotations
-        msidata_$i\$column1 = rep(NA, ncol(msidata_$i))
-        msidata_$i\$column2 = rep(NA, ncol(msidata_$i))
-        msidata_$i\$column3 = rep(NA, ncol(msidata_$i))
-        msidata_$i\$column4 = rep(NA, ncol(msidata_$i))
-        msidata_$i\$column5 = rep(NA, ncol(msidata_$i))
-        msidata_$i\$combined_sample = rep(NA, ncol(msidata_$i))
-
+############ 3) Read and process annotation tabular files ######################
 
     #if str($annotation_cond.annotation_tabular) == 'annotation'
         print("annotations")
 
         ## read annotation tabular, set first two columns as x and y, merge with coordinates dataframe and order according to pixelorder in msidata
         input_annotation = read.delim("annotation_file_${i}.tabular", header = $annotation_cond.tabular_header, stringsAsFactors = FALSE)
+        colnames(input_annotation)[1:2] = c("x", "y")
 
-        colnames(input_annotation)[1:2] = c("x", "y")
         msidata_coordinates = cbind(coord(msidata_$i)[,1:2], 1:ncol(msidata_$i))
         colnames(msidata_coordinates)[3] = "pixel_index"
 
-        ## only first 5 annotation columns are kept
-        if (ncol(input_annotation) > 7){
-            input_annotation = input_annotation[,1:7]}
-
         annotation_df = merge(msidata_coordinates, input_annotation, by=c("x", "y"), all.x=TRUE)
-        annotation_df_8 = cbind(annotation_df, data.frame(matrix(NA,ncol=8-ncol(annotation_df), nrow=ncol(msidata_$i)))) 
-        annotation_df_8_sorted = annotation_df_8[order(annotation_df_8\$pixel_index),]## orders pixel according to msidata
-
-        ## each annotation column is assigned to the pixel in the pData slot of the MSIdata
-        msidata_$i\$column1 = annotation_df_8_sorted[,4]
-        msidata_$i\$column2 = annotation_df_8_sorted[,5]
-        msidata_$i\$column3 = annotation_df_8_sorted[,6]
-        msidata_$i\$column4 = annotation_df_8_sorted[,7]
-        msidata_$i\$column5 = annotation_df_8_sorted[,8]
-
+        annotation_df_sorted = annotation_df[order(annotation_df\$pixel_index),]## orders pixel according to msidata 
+        annotation_df_sorted\$pixel_index = NULL
 
         ## extract columnnames from (last) annotation tabular (for QC plot names)
-        annotation_colnames = colnames(input_annotation)[-c(1,2)]
+        annotation_colnames = colnames(input_annotation)
 
     #end if
 
-
-    ################### preparation xy shifts ##########################
+############### 4) shift coordinates with xy shifts ############################
 
     #if str( $combine_conditional.combine_method ) == 'xy_shifts':
 
+        ## optional: set all files to 1/1 and then add shift
+        #if $combine_conditional.xy_origin:
+            coord(msidata_$i)\$x = as.integer(coord(msidata_$i)\$x - min(coord(msidata_$i)\$x-1))
+            coord(msidata_$i)\$y = as.integer(coord(msidata_$i)\$y - min(coord(msidata_$i)\$y-1))
+        #end if
+
         ## shift coordinates according to input tabular file and store file names
         coord(msidata_$i)\$x = as.integer(coord(msidata_$i)\$x + input_list[$i+1,$combine_conditional.column_x]) ## shifts x coordinates according to tabular file
         coord(msidata_$i)\$y = as.integer(coord(msidata_$i)\$y + input_list[$i+1,$combine_conditional.column_y]) ## shifts y coordinates according to tabular file
-        pixel_vector = append(pixel_vector, rep(paste($i+1, input_list[$i+1,$combine_conditional.column_names], sep="_"),times=ncol(msidata_$i))) ## stores file name for each pixel
-        msidata_$i\$combined_sample = rep(paste($i+1, input_list[$i+1,$combine_conditional.column_names], sep="_"),times=ncol(msidata_$i))
-        ## store number of file
+        sample_name = rep(paste(input_list[$i+1,$combine_conditional.column_names]),times=ncol(msidata_$i)) ## stores file name for each pixel
+        sample_names = append(sample_names, sample_name)
+
+        ## store number of file to use later when removing duplicate coordinates
         pixelcoords_$i = cbind(coord(msidata_$i)[,1:2], rep($i+1,ncol(msidata_$i)))
         #silent $pixelcoords.append('pixelcoords_'+str($i))
         colnames(pixelcoords_$i)[3] = "file_number"
 
-    ################### preparation automatic combination ##########################
+##################### 5) shift coordinates automatically #######################
 
     #elif str( $combine_conditional.combine_method ) == 'automatic_combine':
 
-        ## use name of Galaxy inputfile as combined sample annotation
-        names_vector = character()
+        ## use name of Galaxy inputfile as sample annotation
+        sample_name = character()
         #set escaped_element_identifier = re.sub('[^\w\-\s\[/]]', '_', str($infile.element_identifier))
 
         if (ncol(msidata_$i)>0 & nrow(msidata_$i) >0)
         {
-            if (is.null(levels(msidata_$i\$combined_sample)))
-            {
-            names_vector = append(names_vector, rep(paste($i+1, "$escaped_element_identifier", sep="_"),ncol(msidata_$i)))
-            msidata_$i\$combined_sample = as.factor(names_vector)
-            }
+            sample_name = append(sample_name, rep(paste("$escaped_element_identifier"),ncol(msidata_$i)))
         }
 
         ## Number of input files define grid which is row-wise filled with files
         coord(msidata_$i)\$x = as.integer(coord(msidata_$i)\$x - (min(coord(msidata_$i)\$x-1)) + x_shifts)
         coord(msidata_$i)\$y = as.integer(coord(msidata_$i)\$y - (min(coord(msidata_$i)\$y-1)) + y_shifts)
-        x_shifts = max(coord(msidata_$i)\$x) + 5
+
+        x_shifts = max(coord(msidata_$i)\$x) + $combine_conditional.shift_value
         max_y = append(max_y, max(coord(msidata_$i)\$y))
         all_files = $num_infiles
         new_row = ($i+1)/ceiling(sqrt(all_files))
         new_row%%1==0
         if (new_row%%1==0)
         {x_shifts = 0 ### when row is filled: x values start again at zero
-         y_shifts = max(max_y) + 5 ### when row is filled: y value increases to start a new row
+         y_shifts = max(max_y) + $combine_conditional.shift_value ### when row is filled: y value increases to start a new row
         max_y = numeric()}
 
     #end if
 
+############################# 6) combination of files ##########################
+
+    ## combine shifted coordinates with sample name and annotations from input file
+
+    #if str($annotation_cond.annotation_tabular) == 'annotation'
+        cardinal_coordinates_$i = data.frame(as.matrix(Cardinal::coord(msidata_$i)[,1:2]), sample_name, annotation_df_sorted[,-c(1,2)])
+    #else
+        cardinal_coordinates_$i = data.frame(as.matrix(Cardinal::coord(msidata_$i)[,1:2]), sample_name)
+    #end if
+
     ## 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) 
+
+
+######################### 6a) combination different mz axis ####################
+
+    ## combination for files with different mz axis via MALDIquant during for loop
+
+    #if $processed_true: 
+    print("mz axis differ")
 
-    #silent $msidata.append('msidata_'+str($i))
-    valid_dataset = append(valid_dataset, ncol(msidata_$i)>0 & nrow(msidata_$i)>0) ## file with no intensities is considered valid
+        cardinal_mzs_$i = Cardinal::mz(msidata_$i)
+
+        for(number_spectra in 1:ncol(msidata_${i})){
+
+            if (centroided(msidata_$i) == FALSE){
+                ## create mass spectrum object
+                maldi_data_${i} = list()
+                for(number_spectra in 1:ncol(msidata_$i)){
+                    maldi_data_${i}[[number_spectra]] = MALDIquant::createMassSpectrum(mass = cardinal_mzs_$i, intensity = Cardinal::iData(msidata_$i)[,number_spectra])}
+            }else{
+                maldi_data_${i} = list()
+                for (spectra in 1:ncol(msidata_$i))
+                {
+                    single_peaks_${i} = createMassPeaks(cardinal_mzs_$i, Cardinal::spectra(msidata_$i)[,spectra], snr=as.numeric(rep("NA", nrow(msidata_$i))))
+                    maldi_data_${i}[[spectra]] = single_peaks_${i}
+                }
+            }
+        }
+
+        msidata_combined = append(msidata_combined, maldi_data_$i)
+
+    #end if
+
+    coordinates_combined = rbind(coordinates_combined, cardinal_coordinates_$i) 
 
 #end for
 
 
-###################### automatic combination ###################################
-################################################################################
+######################### 6a) combination same mz axis ###################
 
 #if str( $combine_conditional.combine_method ) == 'automatic_combine':
-    print("automatic_combine")
-
-    ## combine only valid datasets
+    print("automatic combine")
 
-    valid_data =  list(#echo ','.join($msidata)#)[valid_dataset]
-    msidata_combined = do.call(combine, valid_data)
-    print("Valid datasets in order of input bottom to top:")
-    print(valid_dataset)
+   #if not $processed_true:
+       ## combine only valid datasets
 
-    ## create dataframe with x,y,sample_name and show all pixels in PDF as QC
-    position_df = cbind(coord(msidata_combined)[,1:2], msidata_combined\$combined_sample)
-    colnames(position_df)[3] = "sample_name"
-
-    msidata = msidata_combined
+        valid_data =  list(#echo ','.join($msidata)#)[valid_dataset]
+        msidata = do.call(combine, valid_data)
+        print("Valid datasets in order of input bottom to top:")
+        print(valid_dataset)
+        writeImzML(msidata, "out")
 
-    ## save msidata as imzML file
-    #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")
+    #else
+
+        ## save msidata as imzML file MALDIquant
+        MALDIquantForeign::exportImzMl(msidata_combined, file="out.imzML", processed=TRUE, coordinates=as.matrix(coordinates_combined[,1:2]))
+
     #end if
 
-
-################################## xy shifts ###################################
+########################### xy shift combination ###############################
 ################################################################################
 
 #elif str( $combine_conditional.combine_method ) == 'xy_shifts':
     print("xy_shifts")
 
-    ## in case user made mistake with xy shifts: find duplicated coordinates
-    all_coordinates = do.call(rbind, list(#echo ','.join($pixelcoords)#))
-    duplicated_coordinates= duplicated(all_coordinates[,1:2])| duplicated(all_coordinates[,1:2], fromLast=TRUE)
-print(paste0("Number of removed duplicated coordinates after combination: ", sum(duplicated_coordinates)/2))
-    unique_coordinates = all_coordinates[!duplicated_coordinates,]
+    #if not $processed_true:
+
+        duplicated_coordinates= duplicated(coordinates_combined[,1:2])| duplicated(coordinates_combined[,1:2], fromLast=TRUE)
+        print(paste0("Number of removed duplicated coordinates after combination: ", sum(duplicated_coordinates)))
+        coordinates_combined = coordinates_combined[!duplicated_coordinates,]
 
-    ## remove duplicated coordinates
-    datasetlist = list()
-    count = 1
-    for (usable_dataset in list(#echo ','.join($msidata)#)){
-        pixelsofinterest = pixels(usable_dataset)[names(pixels(usable_dataset)) %in% rownames(unique_coordinates)]
-        filtered_dataset = usable_dataset[,pixelsofinterest]
-        if (ncol(filtered_dataset) > 0 ){
-            datasetlist[[count]] = filtered_dataset}
-        count = count +1}
+        ## remove duplicated coordinates
+        datasetlist = list()
+        count = 1
+        for (usable_dataset in list(#echo ','.join($msidata)#)){
+            pixelsofinterest = pixels(usable_dataset)[names(pixels(usable_dataset)) %in% rownames(coordinates_combined)]
+            filtered_dataset = usable_dataset[,pixelsofinterest]
+            if (ncol(filtered_dataset) > 0 ){
+                datasetlist[[count]] = filtered_dataset}
+            count = count +1}
+
+        msidata = do.call(combine, datasetlist)
+        writeImzML(msidata, "out")
 
-    msidata_combined = do.call(combine, datasetlist)
+    #else
 
-    msidata = msidata_combined
+        ## in case user made mistake with xy shifts: find duplicated coordinates
+        duplicated_coordinates= duplicated(coordinates_combined[,1:2])| duplicated(coordinates_combined[,1:2], fromLast=TRUE)
+        print(paste0("Number of removed duplicated coordinates after combination: ", sum(duplicated_coordinates)))
+        unique_coordinates = data.frame(coordinates_combined)[!duplicated_coordinates,]
+
+        filtered_dataset = msidata_combined [!duplicated_coordinates]
+        coordinates_matrix = as.matrix(unique_coordinates[,1:2])
 
-    ## save msidata as imzML file
-    #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")
+        ## save msidata as imzML file MALDIquant
+        MALDIquantForeign::exportImzMl(filtered_dataset, file="out.imzML", processed=TRUE, coordinates=coordinates_matrix)
+
+        ## create x,y,sample_name dataframe for QC pdf
+       ## position_df = unique_coordinates ### ! anders
+       ## colnames(position_df)[3] = "sample_name"
+        ##coordinates_combined = coordinates_combined[pixelsofinterest,] ###! anders
+        coordinates_combined = unique_coordinates
+##TODO: hier aufräumen kann alles weg?!
+
     #end if
 
-    ## create x,y,sample_name dataframe for QC pdf
-
-    position_df = cbind(coord(msidata)[,1:2], msidata\$combined_sample)
-    colnames(position_df)[3] = "sample_name"
-
 #end if
 
-
-################################## outputs ####################################
+################################## outputs #####################################
 ################################################################################
 
 ########### QC with pixels and their annotations ################################
@@ -280,7 +313,7 @@
 pdf("Combined_qc.pdf", width=15, height=15)
 
 ## combined plot
-combine_plot = ggplot(position_df, aes(x=x, y=y, fill=sample_name))+
+combine_plot = ggplot(coordinates_combined[,1:3], aes(x=x, y=y, fill=sample_name))+
        geom_tile() +
        coord_fixed()+
        ggtitle("Spatial orientation of combined data")+
@@ -288,125 +321,39 @@
        theme(text=element_text(family="ArialMT", face="bold", size=15))+
        theme(legend.position="bottom",legend.direction="vertical")+
        guides(fill=guide_legend(ncol=4,byrow=TRUE))
-coord_labels = aggregate(cbind(x,y)~sample_name, data=position_df, mean)
+coord_labels = aggregate(cbind(x,y)~sample_name, data=coordinates_combined[,1:3], mean)
 coord_labels\$file_number = gsub( "_.*$", "", coord_labels\$sample_name)
-for(file_count in 1:nrow(coord_labels))
-    {combine_plot = combine_plot + annotate("text",x=coord_labels[file_count,"x"],
-    y=coord_labels[file_count,"y"],label=toString(coord_labels[file_count,4]))}
+
 print(combine_plot)
 
     #if str($annotation_cond.annotation_tabular) == 'annotation'
         ## annotation plots
-
-        ## plot 1
-        column1_df = cbind(coord(msidata)[,1:2], msidata\$column1)
-        colnames(column1_df)[3] = "column1"
-
-        if (sum(is.na(column1_df[3])) < nrow(column1_df)){
-        column1_plot = ggplot(column1_df, aes(x=x, y=y, fill=column1))+
-               geom_tile() +
-               coord_fixed()+
-               ggtitle(paste0(annotation_colnames[1]))+
-               theme_bw()+
-               theme(text=element_text(family="ArialMT", face="bold", size=15))+
-               theme(legend.position="bottom",legend.direction="vertical")+
-               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)[,1:2], msidata\$column2)
-        colnames(column2_df)[3] = "column2"
-
-        if (sum(is.na(column2_df[3])) < nrow(column2_df)){
-        column2_plot = ggplot(column2_df, aes(x=x, y=y, fill=column2))+
-               geom_tile() +
-               coord_fixed()+
-               ggtitle(paste0(annotation_colnames[2]))+
-               theme_bw()+
-               theme(text=element_text(family="ArialMT", face="bold", size=15))+
-               theme(legend.position="bottom",legend.direction="vertical")+
-               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]
+        for (inputcolumns in 4:ncol(coordinates_combined)){
+                ## plot 1
+                column1_df = coordinates_combined[,c(1,2,inputcolumns)]
+                colnames(column1_df)[3] = "column1"
 
-        ## plot 3
-        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))+
-               geom_tile() +
-               coord_fixed()+
-               ggtitle(paste0(annotation_colnames[3]))+
-               theme_bw()+
-               theme(text=element_text(family="ArialMT", face="bold", size=15))+
-               theme(legend.position="bottom",legend.direction="vertical")+
-               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)[,1:2], msidata\$column4)
-        colnames(column4_df)[3] = "column4"
+                if (sum(is.na(column1_df[3])) < nrow(column1_df)){
+                column1_plot = ggplot(column1_df, aes(x=x, y=y, fill=column1))+
+                       geom_tile() +
+                       coord_fixed()+
+                       ggtitle(paste0(annotation_colnames[inputcolumns-1]))+
+                       theme_bw()+
+                       theme(text=element_text(family="ArialMT", face="bold", size=15))+
+                       theme(legend.position="bottom",legend.direction="vertical")+
+                       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[inputcolumns-1]
 
-        if (sum(is.na(column4_df[3])) < nrow(column4_df)){
-        column4_plot = ggplot(column4_df, aes(x=x, y=y, fill=column4))+
-               geom_tile() +
-               coord_fixed()+
-               ggtitle(paste0(annotation_colnames[4]))+
-               theme_bw()+
-               theme(text=element_text(family="ArialMT", face="bold", size=15))+
-               theme(legend.position="bottom",legend.direction="vertical")+
-               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)[,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))+
-               geom_tile() +
-               coord_fixed()+
-               ggtitle(paste0(annotation_colnames[5]))+
-               theme_bw()+
-               theme(text=element_text(family="ArialMT", face="bold", size=15))+
-               theme(legend.position="bottom",legend.direction="vertical")+
-               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)
-
-        #if str($annotation_cond.annotation_tabular) == 'no_annotation':
-
-            write.table(position_df, file="$pixel_annotations", quote = FALSE, row.names = FALSE, col.names=TRUE, sep = "\t")
-
-        #else
-            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{
-        print("No annotation tabular output because file has no features or pixels left")
-    }
-
-
-
+            write.table(coordinates_combined, file="$pixel_annotations", quote = FALSE, row.names = FALSE, col.names=TRUE, sep = "\t")
 
     ]]></configfile>
     </configfiles>
@@ -438,7 +385,7 @@
             <when value="annotation">
                 <param name="annotation_files" type="data" multiple="true" format="tabular"
                     label="Pixel annotations tabular files"
-                    help="Same number and order of files as input files. First column x values, second column y values. Up to 5 columns with pixel annotations"/>
+                    help="Same number and order of files as input files. First column x values, second column y values, further columns with annotations"/>
                 <param name="tabular_header" type="boolean" label="Tabular files contain a header line" truevalue="TRUE" falsevalue="FALSE"/>
             </when>
         </conditional>
@@ -447,7 +394,9 @@
                 <option value="automatic_combine" selected="True" >automatic combination</option>
                 <option value="xy_shifts">shift xy coordinates with a tabular file</option>
             </param>
-            <when value="automatic_combine"/>
+            <when value="automatic_combine">
+                <param name="shift_value" type="integer" value="5" label="Number of empty pixels that should separate different datasets in x and y dimension"/>
+            </when>
             <when value="xy_shifts">
                 <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."/>
@@ -455,21 +404,13 @@
                 <param name="column_y" data_ref="coordinates_file" label="Column with values for shift in y direction" type="data_column"/>
                 <param name="column_names" data_ref="coordinates_file" label="Column with dataset names" type="data_column"/>
                 <param name="xy_header" type="boolean" label="Tabular files contain a header line" truevalue="TRUE" falsevalue="FALSE"/>
+                <param name="xy_origin" type="boolean" label="Set all file coordinates to 1/1 as origin" truevalue="TRUE" falsevalue="FALSE" help="Yes: all file coordinates are shifted in order to have at least one pixel with x = 1 and one with y = 1; then coordinates shifts are added. No: the coordinate shifts are added to the current coordinates of the file"/>
             </when>
         </conditional>
-        <param name="imzml_output" type="select" display = "radio" optional = "False"
-               label="Output format" help= "Choose the output format">
-                <option value="imzml_format">imzML</option>
-                <option value="rdata_format" selected="True" >RData</option>
-        </param>
+        <param name="processed_true" type="boolean" label="Do the files have different m/z axis?" help="If all m/z values of all files are exactly the same choose 'No'. If not sure choose 'Yes'." truevalue="TRUE" falsevalue="FALSE"/>
     </inputs>
     <outputs>
-        <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="imzml" name="outfile_imzml" label="${tool.name} on ${on_string}: imzML"/>
         <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"/>
     </outputs>
@@ -486,10 +427,29 @@
             <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"/>
+            <param name="processed_true" value="FALSE"/>
             <output name="pixel_annotations" file="123_annotation_output.tabular"/>
-            <output name="outfile_rdata" file="123_combined.RData" compare="sim_size" />
             <output name="QC_overview" file="123_combined_QC.pdf" compare="sim_size"/>
+            <output name="outfile_imzml" ftype="imzml" file="123_combined.imzml.txt" compare="sim_size">
+                <extra_files type="file" file="123_combined.imzml" name="imzml" lines_diff="4"/>
+                <extra_files type="file" file="123_combined.ibd" name="ibd" compare="sim_size"/>
+            </output>
+        </test>
+        <test>
+            <param name="infiles" value="123_combined_picked.rdata,123_combined_picked2.rdata" ftype="rdata"/>
+            <param name="centroids" value="TRUE"/>
+            <param name="combine_method" value="xy_shifts"/>
+            <param name="coordinates_file" ftype="tabular" value="xy_coordinates2.tabular"/>
+            <param name="column_x" value="1"/>
+            <param name="column_y" value="2"/>
+            <param name="column_names" value="3"/>
+            <param name="processed_true" value="TRUE"/>
+            <output name="pixel_annotations" file="picked.tabular"/>
+            <output name="QC_overview" file="picked_QC.pdf" compare="sim_size"/>
+            <output name="outfile_imzml" ftype="imzml" file="picked.imzml.txt" compare="sim_size">
+                <extra_files type="file" file="picked.imzml" name="imzml" lines_diff="6"/>
+                <extra_files type="file" file="picked.ibd" name="ibd" compare="sim_size"/>
+            </output>
         </test>
         <test>
             <param name="infiles" value="msidata_1.RData,msidata_2.RData,msidata_3.RData" ftype="rdata"/>
@@ -497,7 +457,7 @@
                 <param name="annotation_tabular" value="no_annotation"/>
             </conditional>
             <param name="combine_method" value="automatic_combine"/>
-            <param name="imzml_output" value="imzml_format"/>
+            <param name="processed_true" value="FALSE"/>
             <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">
@@ -513,10 +473,13 @@
                 <param name="tabular_header" value="TRUE"/>
             </conditional>
             <param name="combine_method" value="automatic_combine"/>
-            <param name="imzml_output" value="rdata_format"/>
+            <param name="processed_true" value="FALSE"/>
             <output name="pixel_annotations" file="12_annotation_output.tabular"/>
-            <output name="outfile_rdata" file="12_combined.RData" compare="sim_size" />
             <output name="QC_overview" file="12_combined_QC.pdf" compare="sim_size"/>
+            <output name="outfile_imzml" ftype="imzml" file="12_combined.imzml.txt" compare="sim_size">
+                <extra_files type="file" file="12_combined.imzml" name="imzml" lines_diff="4"/>
+                <extra_files type="file" file="12_combined.ibd" name="ibd" compare="sim_size"/>
+            </output>
         </test>
         <test>
             <param name="infiles" value="msidata_1.RData,123_combined.RData" ftype="rdata"/>
@@ -526,7 +489,7 @@
                 <param name="tabular_header" value="TRUE"/>
             </conditional>
             <param name="combine_method" value="automatic_combine"/>
-            <param name="imzml_output" value="imzml_format"/>
+            <param name="processed_true" value="FALSE"/>
             <output name="pixel_annotations" file="112_annotation_output.tabular"/>
             <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">
@@ -540,10 +503,13 @@
                 <param name="annotation_tabular" value="no_annotation"/>
             </conditional>
             <param name="combine_method" value="automatic_combine"/>
-            <param name="imzml_output" value="rdata_format"/>
+            <param name="processed_true" value="FALSE"/>
             <output name="pixel_annotations" file="2123_annotation_output.tabular"/>
-            <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"/>
+            <output name="outfile_imzml" ftype="imzml" file="2123_auto_combined.imzml.txt" compare="sim_size">
+                <extra_files type="file" file="2123_auto_combined.imzml" name="imzml" lines_diff="4"/>
+                <extra_files type="file" file="2123_auto_combined.ibd" name="ibd" compare="sim_size"/>
+            </output>
         </test>
     </tests>
     <help>
@@ -553,17 +519,16 @@
 
 -----
 
-This tool uses the Cardinal combine function to combine several mass spectrometry imaging data. 
+This tool combines several mass spectrometry imaging data files.
 
 @MSIDATA_INPUT_DESCRIPTION@
-- MSI data files must have the same m/z values (to obtain same m/z values for different files: filtering tool same m/z range and preprocessing tool same binning width)
 - Coordinates stored as decimals rather than integers will be rounded to obtain a regular pixel grid. This might lead to duplicated coordinates which will be automatically removed before the tools analysis starts. 
 @SPECTRA_TABULAR_INPUT_DESCRIPTION@
 
 - For xy shifts with tabular file: Tabular file with x and y coordinates shift and file name
 
-    - Each input file is shifted in x and y direction according to this tabular file. In the example the files have about the same pixel dimensions which is smaller than 510x260.
-    - The file can have any column names as header (in this case set "Tabular file contains a header line" to yes) or no header at all
+    - Each input file is renamed and shifted in x and y direction according to this tabular file. In the example the files have about the same pixel dimensions which is smaller than 510x260.
+    - The file can have any column names as header (in this case set "Tabular file contains a header line" to "Yes") or no header at all (set "Tabular file contains a header line" to "No").
 
         ::
         
@@ -580,24 +545,28 @@
 
 **Options**
 
-- "automatic combination": files are automatically arranged in a grid (duplicated pixels are allowed), subfiles are named according to the input file name
+- "automatic combination": files are automatically arranged in a grid, subfiles are named according to the input file name
 - "xy shifts": each file can be moved in x and y direction according to the users need (define one tabular file in the order in which the files are loaded in the history (bottom to top) and define for each file the x and y coordinates shifts in separate columns and the file name in a third column as shown above). The xy shift option combines all datasets and removes all duplicated pixels (same x and y coordinates).
+- "Set all file coordinates to 1/1 as origin" can be choosen to override current pixel coordinates of the input file and set their minimal x and minimal y values to 1. Then the shifts from the xy shift tabular files are used to move the pixels of each dataset. 
+- In case the input files have not exactly the same m/z values set "Do the files have different m/z axis?" to "Yes". Then functionalities of the "MALDIquant" package are used to combine the datasets. 
+
 
 **Tips**
 
-- The combine tools puts all samples into a common x-y-grid, therefore pixel coordinates will change. In case the pixels are already annotated, the annotations should be provided as tabular files and the tool will return an annotation file with the new pixel coordinates. This annotation file can then be used together with the combined MSI data for tools in which the annotation is required (e.g. 'MSI classification') or useful (e.g. 'MSI spectra plots').
-- In case more annotations are required: The annotation input file should have an identifier column, for example the patient_ID. A second tabular file that contains more annotations and also one column with the identifier column (e.g. 'patient_ID') can be merged to the annotation output file of this tool with the tool 'join two files' and then set the 'Column to use' parameters for both files to the identifier column. 
-
+- The combine tool puts all samples into a common x-y-grid, therefore pixel coordinates will change. In case the pixels are already annotated, the annotations should be provided as tabular files and the tool will return an annotation file with the new pixel coordinates. This annotation file can then be used together with the combined MSI data for tools in which the annotation is required (e.g. 'MSI classification') or useful (e.g. 'MSI spectra plots').
 
 
 **Output**
 
-- 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)
+- MSI data as imzML file (in continous format when m/z axis were the same; in processed format when m/z axis were different)
+- Pdf with pixel positions and annotations of the combined files
+- Tabular file with pixel annotations (x,y,column with input file names and annotation columns)
 
 
 ]]>
     </help>
-    <expand macro="citations"/>
+        <citations>
+            <citation type="doi">10.1093/bioinformatics/btv146</citation>
+            <citation type="doi">10.1007/978-3-319-45809-0_6</citation>
+        </citations>
 </tool>
--- a/test-data/112_annotation_output.tabular	Fri Mar 22 08:09:07 2019 -0400
+++ b/test-data/112_annotation_output.tabular	Fri Dec 13 18:47:12 2019 +0000
@@ -1,16 +1,16 @@
-x	y	sample_name	file_name	column_name	NA.x	NA.y	NA
-1	1	msidata_1.RData	file_one	col1	NA	NA	NA
-1	2	msidata_1.RData	file_one	col1	NA	NA	NA
-1	3	msidata_1.RData	file_one	col1	NA	NA	NA
-10	1	123_combined.RData	file_two	col3	NA	NA	NA
-10	2	123_combined.RData	file_two	col3	NA	NA	NA
-10	3	123_combined.RData	file_two	col3	NA	NA	NA
-15	1	123_combined.RData	file_three	col3	NA	NA	NA
-15	2	123_combined.RData	file_three	col3	NA	NA	NA
-15	3	123_combined.RData	file_three	col3	NA	NA	NA
-7	1	123_combined.RData	file_one	col1	NA	NA	NA
-7	2	123_combined.RData	file_one	col1	NA	NA	NA
-7	3	123_combined.RData	file_one	col1	NA	NA	NA
-9	1	123_combined.RData	file_two	col2	NA	NA	NA
-9	2	123_combined.RData	file_two	col2	NA	NA	NA
-9	3	123_combined.RData	file_two	col2	NA	NA	NA
+x	y	sample_name	file_name	column_name
+1	1	msidata_1.RData	file_one	col1
+1	2	msidata_1.RData	file_one	col1
+1	3	msidata_1.RData	file_one	col1
+7	1	123_combined.RData	file_one	col1
+7	2	123_combined.RData	file_one	col1
+7	3	123_combined.RData	file_one	col1
+9	1	123_combined.RData	file_two	col2
+10	1	123_combined.RData	file_two	col3
+9	2	123_combined.RData	file_two	col2
+10	2	123_combined.RData	file_two	col3
+9	3	123_combined.RData	file_two	col2
+10	3	123_combined.RData	file_two	col3
+15	1	123_combined.RData	file_three	col3
+15	2	123_combined.RData	file_three	col3
+15	3	123_combined.RData	file_three	col3
Binary file test-data/112_auto_combined.ibd has changed
--- a/test-data/112_auto_combined.imzml	Fri Mar 22 08:09:07 2019 -0400
+++ b/test-data/112_auto_combined.imzml	Fri Dec 13 18:47:12 2019 +0000
@@ -9,8 +9,8 @@
 		<fileContent>
 			<cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum" value="" />
 			<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" value="" />
-			<cvParam cvRef="IMS" accession="IMS:1000080" name="universally unique identifier" value="{00A83E55-A8F8-41D4-BBAC-345FA77AAB7E}" />
-			<cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="9B17E43E3D3B35BE3CD0AE65F40E0C6B27C2752F" />
+			<cvParam cvRef="IMS" accession="IMS:1000080" name="universally unique identifier" value="a0620366-fee2-4a2a-a643-0f0e0c9ae5a6" />
+			<cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="9bcd78ace1e6441dc527501b5eb3994fcf15b894" />
 			<cvParam cvRef="IMS" accession="IMS:1000030" name="continuous" value="" />
 		</fileContent>
 	</fileDescription>
@@ -22,19 +22,18 @@
 		</referenceableParamGroup>
 		<referenceableParamGroup id="scan1">
 			<cvParam cvRef="MS" accession="MS:1000093" name="increasing m/z scan" value="" />
-			<cvParam cvRef="MS" accession="MS:1000095" name="linear" value="" />
 		</referenceableParamGroup>
 		<referenceableParamGroup id="mzArray">
 			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
 			<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" value="" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z" />
 			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
-			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="32-bit float" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
 		</referenceableParamGroup>
 		<referenceableParamGroup id="intensityArray">
 			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
 			<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" value="" unitCvRef="MS" unitAccession="MS:1000131" unitName="number of counts" />
 			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
-			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="32-bit float" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
 		</referenceableParamGroup>
 	</referenceableParamGroupList>
 	<sampleList count="1">
@@ -43,18 +42,24 @@
 		</sample>
 	</sampleList>
 	<softwareList count="1">
-		<software id="Cardinal" version="1.12.1">
+		<software id="Cardinal" version="2.2.6">
 			<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="" />
 		</software>
 	</softwareList>
 	<scanSettingsList count="1">
 		<scanSettings id="scansettings1">
-			<cvParam cvRef="IMS" accession="IMS:1000042" name="max count of pixel x" value="15" />
+			<cvParam cvRef="IMS" accession="IMS:1000042" name="max count of pixel x" value="5" />
 			<cvParam cvRef="IMS" accession="IMS:1000043" name="max count of pixel y" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000044" name="max dimension x" value="15" />
+			<cvParam cvRef="IMS" accession="IMS:1000045" name="max dimension y" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000046" name="pixel size x" value="1.000000" />
+			<cvParam cvRef="IMS" accession="IMS:1000047" name="pixel size y" value="1.000000" />
 		</scanSettings>
 	</scanSettingsList>
 	<instrumentConfigurationList count="1">
-		<instrumentConfiguration id="IC1" />
+		<instrumentConfiguration id="IC1">
+			<cvParam cvRef="MS" accession="MS:1000031" name="instrument model" />
+		</instrumentConfiguration>
 	</instrumentConfigurationList>
 	<dataProcessingList count="1">
 		<dataProcessing id="CardinalWriteImzML">
--- a/test-data/112_auto_combined.imzml.txt	Fri Mar 22 08:09:07 2019 -0400
+++ b/test-data/112_auto_combined.imzml.txt	Fri Dec 13 18:47:12 2019 +0000
@@ -1,4 +1,4 @@
 imzML file:
 total 556
--rw-r--r-- 1 meli meli 537552 Feb 12 12:25 ibd
--rw-r--r-- 1 meli meli  25466 Feb 12 12:25 imzml
+-rw-r--r-- 1 meli meli 537552 Dez 11 00:10 ibd
+-rw-r--r-- 1 meli meli  25811 Dez 11 00:10 imzml
Binary file test-data/112_auto_combined_QC.pdf has changed
--- a/test-data/123_annotation_output.tabular	Fri Mar 22 08:09:07 2019 -0400
+++ b/test-data/123_annotation_output.tabular	Fri Dec 13 18:47:12 2019 +0000
@@ -1,13 +1,13 @@
-x	y	sample_name	file_name	column_name	NA.x	NA.y	NA
-1	1	File1	file_one	col1	NA	NA	NA
-1	2	File1	file_one	col1	NA	NA	NA
-1	3	File1	file_one	col1	NA	NA	NA
-3	1	File2	file_two	col2	NA	NA	NA
-3	2	File2	file_two	col2	NA	NA	NA
-3	3	File2	file_two	col2	NA	NA	NA
-4	1	File2	file_two	col3	NA	NA	NA
-4	2	File2	file_two	col3	NA	NA	NA
-4	3	File2	file_two	col3	NA	NA	NA
-9	1	File3	file_three	col3	NA	NA	NA
-9	2	File3	file_three	col3	NA	NA	NA
-9	3	File3	file_three	col3	NA	NA	NA
+x	y	sample_name	file_name	column_name
+1	1	File1	file_one	col1
+1	2	File1	file_one	col1
+1	3	File1	file_one	col1
+3	1	File2	file_two	col2
+4	1	File2	file_two	col3
+3	2	File2	file_two	col2
+4	2	File2	file_two	col3
+3	3	File2	file_two	col2
+4	3	File2	file_two	col3
+9	1	File3	file_three	col3
+9	2	File3	file_three	col3
+9	3	File3	file_three	col3
Binary file test-data/123_combine.rdata has changed
Binary file test-data/123_combined.RData has changed
Binary file test-data/123_combined.ibd has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/123_combined.imzml	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,399 @@
+<?xml version="1.0"?>
+<mzML version="1.1" xmlns="http://psi.hupo.org/ms/mzml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://psi.hupo.org/ms/mzml http://psidev.info/files/ms/mzML/xsd/mzML1.1.0_idx.xsd">
+	<cvList count="3">
+		<cv id="MS" fullName="Proteomics Standards Initiative Mass Spectrometry Ontology" version="1.3.1" URI="http://psidev.info/ms/mzML/psi-ms.obo" />
+		<cv id="UO" fullName="Unit Ontology" version="1.15" URI="http://obo.cvs.sourceforge.net/obo/obo/ontology/phenotype/unit.obo" />
+		<cv id="IMS" fullName="Imaging MS Ontology" version="0.9.1" URI="http://www.maldi-msi.org/download/imzml/imagingMS.obo" />
+	</cvList>
+	<fileDescription>
+		<fileContent>
+			<cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum" value="" />
+			<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" value="" />
+			<cvParam cvRef="IMS" accession="IMS:1000080" name="universally unique identifier" value="8421b4d5-42be-4040-9d94-0398a40d6121" />
+			<cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="d2cf2df8db9b95afd23834703bc933df1098bb6d" />
+			<cvParam cvRef="IMS" accession="IMS:1000030" name="continuous" value="" />
+		</fileContent>
+	</fileDescription>
+	<referenceableParamGroupList count="4">
+		<referenceableParamGroup id="spectrum1">
+			<cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum" value="" />
+			<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="0" />
+			<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="scan1">
+			<cvParam cvRef="MS" accession="MS:1000093" name="increasing m/z scan" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="mzArray">
+			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
+			<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" value="" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z" />
+			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="intensityArray">
+			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
+			<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" value="" unitCvRef="MS" unitAccession="MS:1000131" unitName="number of counts" />
+			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
+		</referenceableParamGroup>
+	</referenceableParamGroupList>
+	<sampleList count="1">
+		<sample id="sample1" name="Sample1">
+			<cvParam cvRef="MS" accession="MS:1000001" name="sample number" value="1" />
+		</sample>
+	</sampleList>
+	<softwareList count="1">
+		<software id="Cardinal" version="2.2.6">
+			<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="" />
+		</software>
+	</softwareList>
+	<scanSettingsList count="1">
+		<scanSettings id="scansettings1">
+			<cvParam cvRef="IMS" accession="IMS:1000042" name="max count of pixel x" value="4" />
+			<cvParam cvRef="IMS" accession="IMS:1000043" name="max count of pixel y" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000044" name="max dimension x" value="9" />
+			<cvParam cvRef="IMS" accession="IMS:1000045" name="max dimension y" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000046" name="pixel size x" value="1.000000" />
+			<cvParam cvRef="IMS" accession="IMS:1000047" name="pixel size y" value="1.000000" />
+		</scanSettings>
+	</scanSettingsList>
+	<instrumentConfigurationList count="1">
+		<instrumentConfiguration id="IC1">
+			<cvParam cvRef="MS" accession="MS:1000031" name="instrument model" />
+		</instrumentConfiguration>
+	</instrumentConfigurationList>
+	<dataProcessingList count="1">
+		<dataProcessing id="CardinalWriteImzML">
+			<processingMethod order="1" softwareRef="Cardinal">
+				<cvParam cvRef="MS" accession="MS:1000544" name="Conversion to mzML" value="" />
+			</processingMethod>
+		</dataProcessing>
+	</dataProcessingList>
+	<run defaultInstrumentConfigurationRef="IC1" id="Experiment01" sampleRef="sample1">
+		<spectrumList count="12" defaultDataProcessingRef="CardinalWriteImzML">
+			<spectrum id="Spectrum=1" defaultArrayLength="0" index="1">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="33612" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=2" defaultArrayLength="0" index="2">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="67208" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=3" defaultArrayLength="0" index="3">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="100804" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=4" defaultArrayLength="0" index="4">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="3" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="134400" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=5" defaultArrayLength="0" index="5">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="4" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="167996" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=6" defaultArrayLength="0" index="6">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="3" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="201592" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=7" defaultArrayLength="0" index="7">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="4" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="235188" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=8" defaultArrayLength="0" index="8">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="3" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="268784" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=9" defaultArrayLength="0" index="9">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="4" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="302380" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=10" defaultArrayLength="0" index="10">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="9" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="335976" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=11" defaultArrayLength="0" index="11">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="9" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="369572" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=12" defaultArrayLength="0" index="12">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="9" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="403168" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+		</spectrumList>
+	</run>
+</mzML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/123_combined.imzml.txt	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,4 @@
+imzML file:
+total 452
+-rw-r--r-- 1 meli meli 436764 Dez 11 00:02 ibd
+-rw-r--r-- 1 meli meli  21511 Dez 11 00:02 imzml
Binary file test-data/123_combined_QC.pdf has changed
Binary file test-data/123_combined_auto.ibd has changed
--- a/test-data/123_combined_auto.imzml	Fri Mar 22 08:09:07 2019 -0400
+++ b/test-data/123_combined_auto.imzml	Fri Dec 13 18:47:12 2019 +0000
@@ -9,8 +9,8 @@
 		<fileContent>
 			<cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum" value="" />
 			<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" value="" />
-			<cvParam cvRef="IMS" accession="IMS:1000080" name="universally unique identifier" value="{7DC9B0BB-277B-4A92-8780-2879E0E6A8F2}" />
-			<cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="6768CFB740661C3F0C560438B85A906EA05933D5" />
+			<cvParam cvRef="IMS" accession="IMS:1000080" name="universally unique identifier" value="c12d4d26-5ff1-4c3c-99ea-95e0858faf36" />
+			<cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="147d6aa7f71a366246c93d750fcc9240b84c748f" />
 			<cvParam cvRef="IMS" accession="IMS:1000030" name="continuous" value="" />
 		</fileContent>
 	</fileDescription>
@@ -22,19 +22,18 @@
 		</referenceableParamGroup>
 		<referenceableParamGroup id="scan1">
 			<cvParam cvRef="MS" accession="MS:1000093" name="increasing m/z scan" value="" />
-			<cvParam cvRef="MS" accession="MS:1000095" name="linear" value="" />
 		</referenceableParamGroup>
 		<referenceableParamGroup id="mzArray">
 			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
 			<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" value="" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z" />
 			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
-			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="32-bit float" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
 		</referenceableParamGroup>
 		<referenceableParamGroup id="intensityArray">
 			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
 			<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" value="" unitCvRef="MS" unitAccession="MS:1000131" unitName="number of counts" />
 			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
-			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="32-bit float" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
 		</referenceableParamGroup>
 	</referenceableParamGroupList>
 	<sampleList count="1">
@@ -43,18 +42,24 @@
 		</sample>
 	</sampleList>
 	<softwareList count="1">
-		<software id="Cardinal" version="1.12.1">
+		<software id="Cardinal" version="2.2.6">
 			<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="" />
 		</software>
 	</softwareList>
 	<scanSettingsList count="1">
 		<scanSettings id="scansettings1">
-			<cvParam cvRef="IMS" accession="IMS:1000042" name="max count of pixel x" value="8" />
-			<cvParam cvRef="IMS" accession="IMS:1000043" name="max count of pixel y" value="11" />
+			<cvParam cvRef="IMS" accession="IMS:1000042" name="max count of pixel x" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000043" name="max count of pixel y" value="6" />
+			<cvParam cvRef="IMS" accession="IMS:1000044" name="max dimension x" value="8" />
+			<cvParam cvRef="IMS" accession="IMS:1000045" name="max dimension y" value="11" />
+			<cvParam cvRef="IMS" accession="IMS:1000046" name="pixel size x" value="1.000000" />
+			<cvParam cvRef="IMS" accession="IMS:1000047" name="pixel size y" value="1.000000" />
 		</scanSettings>
 	</scanSettingsList>
 	<instrumentConfigurationList count="1">
-		<instrumentConfiguration id="IC1" />
+		<instrumentConfiguration id="IC1">
+			<cvParam cvRef="MS" accession="MS:1000031" name="instrument model" />
+		</instrumentConfiguration>
 	</instrumentConfigurationList>
 	<dataProcessingList count="1">
 		<dataProcessing id="CardinalWriteImzML">
--- a/test-data/123_combined_auto.imzml.txt	Fri Mar 22 08:09:07 2019 -0400
+++ b/test-data/123_combined_auto.imzml.txt	Fri Dec 13 18:47:12 2019 +0000
@@ -1,4 +1,4 @@
 imzML file:
 total 452
--rw-r--r-- 1 meli meli 436764 Feb 12 00:51 ibd
--rw-r--r-- 1 meli meli  21166 Feb 12 00:51 imzml
+-rw-r--r-- 1 meli meli 436764 Dez 11 00:05 ibd
+-rw-r--r-- 1 meli meli  21514 Dez 11 00:05 imzml
Binary file test-data/123_combined_auto.pdf has changed
Binary file test-data/123_combined_picked.rdata has changed
Binary file test-data/123_combined_picked2.rdata has changed
--- a/test-data/12_annotation_output.tabular	Fri Mar 22 08:09:07 2019 -0400
+++ b/test-data/12_annotation_output.tabular	Fri Dec 13 18:47:12 2019 +0000
@@ -1,10 +1,10 @@
-x	y	sample_name	file_name	column_name	NA.x	NA.y	NA
-1	1	msidata_1.RData	file_one	col1	NA	NA	NA
-1	2	msidata_1.RData	file_one	col1	NA	NA	NA
-1	3	msidata_1.RData	file_one	col1	NA	NA	NA
-7	1	msidata_2.RData	file_two	col2	NA	NA	NA
-7	2	msidata_2.RData	file_two	col2	NA	NA	NA
-7	3	msidata_2.RData	file_two	col2	NA	NA	NA
-8	1	msidata_2.RData	file_two	col3	NA	NA	NA
-8	2	msidata_2.RData	file_two	col3	NA	NA	NA
-8	3	msidata_2.RData	file_two	col3	NA	NA	NA
+x	y	sample_name	file_name	column_name
+1	1	msidata_1.RData	file_one	col1
+1	2	msidata_1.RData	file_one	col1
+1	3	msidata_1.RData	file_one	col1
+7	1	msidata_2.RData	file_two	col2
+8	1	msidata_2.RData	file_two	col3
+7	2	msidata_2.RData	file_two	col2
+8	2	msidata_2.RData	file_two	col3
+7	3	msidata_2.RData	file_two	col2
+8	3	msidata_2.RData	file_two	col3
Binary file test-data/12_combined.RData has changed
Binary file test-data/12_combined.ibd has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/12_combined.imzml	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,318 @@
+<?xml version="1.0"?>
+<mzML version="1.1" xmlns="http://psi.hupo.org/ms/mzml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://psi.hupo.org/ms/mzml http://psidev.info/files/ms/mzML/xsd/mzML1.1.0_idx.xsd">
+	<cvList count="3">
+		<cv id="MS" fullName="Proteomics Standards Initiative Mass Spectrometry Ontology" version="1.3.1" URI="http://psidev.info/ms/mzML/psi-ms.obo" />
+		<cv id="UO" fullName="Unit Ontology" version="1.15" URI="http://obo.cvs.sourceforge.net/obo/obo/ontology/phenotype/unit.obo" />
+		<cv id="IMS" fullName="Imaging MS Ontology" version="0.9.1" URI="http://www.maldi-msi.org/download/imzml/imagingMS.obo" />
+	</cvList>
+	<fileDescription>
+		<fileContent>
+			<cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum" value="" />
+			<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" value="" />
+			<cvParam cvRef="IMS" accession="IMS:1000080" name="universally unique identifier" value="e9aca5c3-32c8-416b-a9e9-e40ba239ce32" />
+			<cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="c0c53177dc3a008c7a18ba10fe139ccaecc295a2" />
+			<cvParam cvRef="IMS" accession="IMS:1000030" name="continuous" value="" />
+		</fileContent>
+	</fileDescription>
+	<referenceableParamGroupList count="4">
+		<referenceableParamGroup id="spectrum1">
+			<cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum" value="" />
+			<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="0" />
+			<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="scan1">
+			<cvParam cvRef="MS" accession="MS:1000093" name="increasing m/z scan" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="mzArray">
+			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
+			<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" value="" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z" />
+			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="intensityArray">
+			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
+			<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" value="" unitCvRef="MS" unitAccession="MS:1000131" unitName="number of counts" />
+			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
+		</referenceableParamGroup>
+	</referenceableParamGroupList>
+	<sampleList count="1">
+		<sample id="sample1" name="Sample1">
+			<cvParam cvRef="MS" accession="MS:1000001" name="sample number" value="1" />
+		</sample>
+	</sampleList>
+	<softwareList count="1">
+		<software id="Cardinal" version="2.2.6">
+			<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="" />
+		</software>
+	</softwareList>
+	<scanSettingsList count="1">
+		<scanSettings id="scansettings1">
+			<cvParam cvRef="IMS" accession="IMS:1000042" name="max count of pixel x" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000043" name="max count of pixel y" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000044" name="max dimension x" value="8" />
+			<cvParam cvRef="IMS" accession="IMS:1000045" name="max dimension y" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000046" name="pixel size x" value="1.000000" />
+			<cvParam cvRef="IMS" accession="IMS:1000047" name="pixel size y" value="1.000000" />
+		</scanSettings>
+	</scanSettingsList>
+	<instrumentConfigurationList count="1">
+		<instrumentConfiguration id="IC1">
+			<cvParam cvRef="MS" accession="MS:1000031" name="instrument model" />
+		</instrumentConfiguration>
+	</instrumentConfigurationList>
+	<dataProcessingList count="1">
+		<dataProcessing id="CardinalWriteImzML">
+			<processingMethod order="1" softwareRef="Cardinal">
+				<cvParam cvRef="MS" accession="MS:1000544" name="Conversion to mzML" value="" />
+			</processingMethod>
+		</dataProcessing>
+	</dataProcessingList>
+	<run defaultInstrumentConfigurationRef="IC1" id="Experiment01" sampleRef="sample1">
+		<spectrumList count="9" defaultDataProcessingRef="CardinalWriteImzML">
+			<spectrum id="Spectrum=1" defaultArrayLength="0" index="1">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="33612" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=2" defaultArrayLength="0" index="2">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="67208" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=3" defaultArrayLength="0" index="3">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="100804" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=4" defaultArrayLength="0" index="4">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="7" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="134400" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=5" defaultArrayLength="0" index="5">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="8" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="167996" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=6" defaultArrayLength="0" index="6">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="7" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="201592" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=7" defaultArrayLength="0" index="7">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="8" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="235188" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=8" defaultArrayLength="0" index="8">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="7" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="268784" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=9" defaultArrayLength="0" index="9">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="8" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="302380" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+		</spectrumList>
+	</run>
+</mzML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/12_combined.imzml.txt	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,4 @@
+imzML file:
+total 352
+-rw-r--r-- 1 meli meli 335976 Dez 11 00:07 ibd
+-rw-r--r-- 1 meli meli  17217 Dez 11 00:07 imzml
Binary file test-data/12_combined_QC.pdf has changed
Binary file test-data/2123_auto_combined.RData has changed
Binary file test-data/2123_auto_combined.ibd has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/2123_auto_combined.imzml	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,561 @@
+<?xml version="1.0"?>
+<mzML version="1.1" xmlns="http://psi.hupo.org/ms/mzml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://psi.hupo.org/ms/mzml http://psidev.info/files/ms/mzML/xsd/mzML1.1.0_idx.xsd">
+	<cvList count="3">
+		<cv id="MS" fullName="Proteomics Standards Initiative Mass Spectrometry Ontology" version="1.3.1" URI="http://psidev.info/ms/mzML/psi-ms.obo" />
+		<cv id="UO" fullName="Unit Ontology" version="1.15" URI="http://obo.cvs.sourceforge.net/obo/obo/ontology/phenotype/unit.obo" />
+		<cv id="IMS" fullName="Imaging MS Ontology" version="0.9.1" URI="http://www.maldi-msi.org/download/imzml/imagingMS.obo" />
+	</cvList>
+	<fileDescription>
+		<fileContent>
+			<cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum" value="" />
+			<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" value="" />
+			<cvParam cvRef="IMS" accession="IMS:1000080" name="universally unique identifier" value="89a84e82-79bf-466a-a1ce-e942e7cfe37d" />
+			<cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="5d2027d8c0ad315ac09a1c7c4edf84d3d4facd90" />
+			<cvParam cvRef="IMS" accession="IMS:1000030" name="continuous" value="" />
+		</fileContent>
+	</fileDescription>
+	<referenceableParamGroupList count="4">
+		<referenceableParamGroup id="spectrum1">
+			<cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum" value="" />
+			<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="0" />
+			<cvParam cvRef="MS" accession="MS:1000128" name="profile spectrum" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="scan1">
+			<cvParam cvRef="MS" accession="MS:1000093" name="increasing m/z scan" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="mzArray">
+			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
+			<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" value="" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z" />
+			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
+		</referenceableParamGroup>
+		<referenceableParamGroup id="intensityArray">
+			<cvParam cvRef="MS" accession="MS:1000576" name="no compression" value="" />
+			<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" value="" unitCvRef="MS" unitAccession="MS:1000131" unitName="number of counts" />
+			<cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true" />
+			<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" value="" />
+		</referenceableParamGroup>
+	</referenceableParamGroupList>
+	<sampleList count="1">
+		<sample id="sample1" name="Sample1">
+			<cvParam cvRef="MS" accession="MS:1000001" name="sample number" value="1" />
+		</sample>
+	</sampleList>
+	<softwareList count="1">
+		<software id="Cardinal" version="2.2.6">
+			<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="" />
+		</software>
+	</softwareList>
+	<scanSettingsList count="1">
+		<scanSettings id="scansettings1">
+			<cvParam cvRef="IMS" accession="IMS:1000042" name="max count of pixel x" value="6" />
+			<cvParam cvRef="IMS" accession="IMS:1000043" name="max count of pixel y" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000044" name="max dimension x" value="16" />
+			<cvParam cvRef="IMS" accession="IMS:1000045" name="max dimension y" value="3" />
+			<cvParam cvRef="IMS" accession="IMS:1000046" name="pixel size x" value="1.000000" />
+			<cvParam cvRef="IMS" accession="IMS:1000047" name="pixel size y" value="1.000000" />
+		</scanSettings>
+	</scanSettingsList>
+	<instrumentConfigurationList count="1">
+		<instrumentConfiguration id="IC1">
+			<cvParam cvRef="MS" accession="MS:1000031" name="instrument model" />
+		</instrumentConfiguration>
+	</instrumentConfigurationList>
+	<dataProcessingList count="1">
+		<dataProcessing id="CardinalWriteImzML">
+			<processingMethod order="1" softwareRef="Cardinal">
+				<cvParam cvRef="MS" accession="MS:1000544" name="Conversion to mzML" value="" />
+			</processingMethod>
+		</dataProcessing>
+	</dataProcessingList>
+	<run defaultInstrumentConfigurationRef="IC1" id="Experiment01" sampleRef="sample1">
+		<spectrumList count="18" defaultDataProcessingRef="CardinalWriteImzML">
+			<spectrum id="Spectrum=1" defaultArrayLength="0" index="1">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="33612" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=2" defaultArrayLength="0" index="2">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="2" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="67208" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=3" defaultArrayLength="0" index="3">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="100804" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=4" defaultArrayLength="0" index="4">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="2" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="134400" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=5" defaultArrayLength="0" index="5">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="167996" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=6" defaultArrayLength="0" index="6">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="2" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="201592" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=7" defaultArrayLength="0" index="7">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="8" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="235188" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=8" defaultArrayLength="0" index="8">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="8" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="268784" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=9" defaultArrayLength="0" index="9">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="8" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="302380" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=10" defaultArrayLength="0" index="10">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="10" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="335976" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=11" defaultArrayLength="0" index="11">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="11" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="369572" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=12" defaultArrayLength="0" index="12">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="10" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="403168" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=13" defaultArrayLength="0" index="13">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="11" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="436764" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=14" defaultArrayLength="0" index="14">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="10" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="470360" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=15" defaultArrayLength="0" index="15">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="11" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="503956" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=16" defaultArrayLength="0" index="16">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="537552" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=17" defaultArrayLength="0" index="17">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="571148" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+			<spectrum id="Spectrum=18" defaultArrayLength="0" index="18">
+				<referenceableParamGroupRef ref="spectrum1" />
+				<scanList count="1">
+					<cvParam cvRef="MS" accession="MS:1000795" name="no combination" value="" />
+					<scan instrumentConfigurationRef="IC1">
+						<referenceableParamGroupRef ref="scan1" />
+						<cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3" />
+					</scan>
+				</scanList>
+				<binaryDataArrayList count="2">
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="mzArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="604744" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="8399" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+		</spectrumList>
+	</run>
+</mzML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/2123_auto_combined.imzml.txt	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,4 @@
+imzML file:
+total 656
+-rw-r--r-- 1 meli meli 638340 Dez 11 00:12 ibd
+-rw-r--r-- 1 meli meli  30107 Dez 11 00:12 imzml
Binary file test-data/2123_auto_combined_QC.pdf has changed
Binary file test-data/picked.ibd has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/picked.imzml	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,580 @@
+<?xml version="1.0" encoding="utf-8"?>
+<mzML xmlns="http://psi.hupo.org/ms/mzml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://psi.hupo.org/ms/mzml http://psidev.info/files/ms/mzML/xsd/mzML1.1.0.xsd" id="out" version="1.1.0">
+ <cvList count="2">
+  <cv id="MS" fullName="Proteomics Standards Initiative Mass Spectrometry Ontology" version="3.44.0" URI="http://psidev.cvs.sourceforge.net/*checkout*/psidev/psi/psi-ms/mzML/controlledVocabulary/psi-ms.obo"/>
+  <cv id="UO" fullName="Unit Ontology" version="12:10:2012" URI="http://obo.cvs.sourceforge.net/*checkout*/obo/obo/ontology/phenotype/unit.obo"/>
+  <cv id="IMS" fullName="Imaging MS Ontology" version="0.9.1" URI="http://www.maldi-msi.org/download/imzml/imagingMS.obo"/>
+ </cvList>
+ <fileDescription>
+  <fileContent>
+   <cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum"/>
+   <cvParam cvRef="IMS" accession="IMS:1000080" name="universally unique identifier" value="{3d75db19-25c6-4579-a1bc-fb0ee0bae869}"/>
+   <cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="3fbb731b958a3ec73031a5894c29e3ef16586f39"/>
+   <cvParam cvRef="IMS" accession="IMS:1000031" name="processed"/>
+   <userParam name="MALDIquantForeign" value="MALDIquant object(s) exported to mzML"/>
+  </fileContent>
+ </fileDescription>
+ <softwareList count="1">
+  <software id="MALDIquantForeign" version="0.12"/>
+ </softwareList>
+ <referenceableParamGroupList count="2">
+  <referenceableParamGroup id="mzArray">
+   <cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+   <cvParam cvRef="MS" accession="MS:1000576" name="no compression" value=""/>
+   <cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" value=""/>
+   <cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true"/>
+  </referenceableParamGroup>
+  <referenceableParamGroup id="intensityArray">
+   <cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitCvRef="MS" unitAccession="MS:1000131" unitName="number of counts"/>
+   <cvParam cvRef="MS" accession="MS:1000576" name="no compression" value=""/>
+   <cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" value=""/>
+   <cvParam cvRef="IMS" accession="IMS:1000101" name="external data" value="true"/>
+  </referenceableParamGroup>
+ </referenceableParamGroupList>
+ <scanSettingsList count="1">
+  <scanSettings id="scansetting1">
+   <cvParam cvRef="IMS" accession="IMS:1000042" name="max count of pixel x" value="17"/>
+   <cvParam cvRef="IMS" accession="IMS:1000043" name="max count of pixel y" value="3"/>
+   <cvParam cvRef="IMS" accession="IMS:1000044" name="max dimension x" value="1700" unitCvRef="UO" unitAccession="UO:0000017" unitName="micrometer"/>
+   <cvParam cvRef="IMS" accession="IMS:1000045" name="max dimension y" value="300" unitCvRef="UO" unitAccession="UO:0000017" unitName="micrometer"/>
+   <cvParam cvRef="IMS" accession="IMS:1000046" name="pixel size x" value="100" unitCvRef="UO" unitAccession="UO:0000017" unitName="micrometer"/>
+   <cvParam cvRef="IMS" accession="IMS:1000047" name="pixel size y" value="100" unitCvRef="UO" unitAccession="UO:0000017" unitName="micrometer"/>
+  </scanSettings>
+ </scanSettingsList>
+ <instrumentConfigurationList count="1">
+  <instrumentConfiguration id="IC0"/>
+ </instrumentConfigurationList>
+ <dataProcessingList count="1">
+  <dataProcessing id="export">
+   <processingMethod order="1" softwareRef="MALDIquantForeign">
+    <userParam name="MALDIquant object(s) exported to mzML" value=""/>
+   </processingMethod>
+  </dataProcessing>
+ </dataProcessingList>
+ <run id="run0" defaultInstrumentConfigurationRef="IC0">
+  <spectrumList count="18" defaultDataProcessingRef="export">
+   <spectrum index="0" id="scan=0" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="8432"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="1" id="scan=1" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16848"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="25264"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="2" id="scan=2" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="1"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="33680"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="42096"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="3" id="scan=3" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="3"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="50512"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="58928"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="4" id="scan=4" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="4"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="67344"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="75760"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="5" id="scan=5" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="3"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="84176"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="92592"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="6" id="scan=6" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="4"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="101008"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="109424"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="7" id="scan=7" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="3"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="117840"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="126256"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="8" id="scan=8" defaultArrayLength="1052">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="101.083335876465" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="799.666687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="4"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="134672"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="143088"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1052"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="8416"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="9" id="scan=9" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="11"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="151504"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="151864"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="10" id="scan=10" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="12"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="152224"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="152584"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="11" id="scan=11" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="11"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="152944"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="153304"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="12" id="scan=12" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="12"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="153664"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="154024"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="13" id="scan=13" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="11"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="154384"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="154744"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="14" id="scan=14" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="12"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="155104"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="155464"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="15" id="scan=15" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="17"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="1"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="155824"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="156184"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="16" id="scan=16" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="17"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="2"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="156544"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="156904"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+   <spectrum index="17" id="scan=17" defaultArrayLength="45">
+    <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
+    <cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum"/>
+    <cvParam cvRef="MS" accession="MS:1000528" name="lowest observed m/z" value="107.916664123535" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000527" name="highest observed m/z" value="789.916687011719" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
+    <cvParam cvRef="MS" accession="MS:1000127" name="centroid spectrum"/>
+    <scanList count="1">
+     <scan>
+      <cvParam cvRef="IMS" accession="IMS:1000050" name="position x" value="17"/>
+      <cvParam cvRef="IMS" accession="IMS:1000051" name="position y" value="3"/>
+     </scan>
+    </scanList>
+    <binaryDataArrayList count="2">
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="mzArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="157264"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+     <binaryDataArray encodedLength="0">
+      <referenceableParamGroupRef ref="intensityArray"/>
+      <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="157624"/>
+      <cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="45"/>
+      <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="360"/>
+      <binary/>
+     </binaryDataArray>
+    </binaryDataArrayList>
+   </spectrum>
+  </spectrumList>
+ </run>
+</mzML>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/picked.imzml.txt	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,4 @@
+imzML file:
+total 192
+-rw-r--r-- 1 meli meli 157984 Dez 11 00:03 ibd
+-rw-r--r-- 1 meli meli  35012 Dez 11 00:03 imzml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/picked.tabular	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,19 @@
+x	y	sample_name
+1	1	File1
+1	2	File1
+1	3	File1
+3	1	File1
+4	1	File1
+3	2	File1
+4	2	File1
+3	3	File1
+4	3	File1
+11	1	File2
+12	1	File2
+11	2	File2
+12	2	File2
+11	3	File2
+12	3	File2
+17	1	File2
+17	2	File2
+17	3	File2
Binary file test-data/picked_QC.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/xy_coordinates2.tabular	Fri Dec 13 18:47:12 2019 +0000
@@ -0,0 +1,2 @@
+0	0	File1
+8	0	File2