changeset 1:0892a051eb17 draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/MALDIquant commit 0825a4ccd3ebf4ca8a298326d14f3e7b25ae8415
author galaxyp
date Mon, 01 Oct 2018 01:09:28 -0400
parents e2aa05746a69
children e754c2b545a9
files maldi_macros.xml maldi_quant_preprocessing.xml test-data/int1.tabular test-data/int2.tabular test-data/intensity_matrix3.tabular test-data/masspeaks1_forinput.tabular test-data/masspeaks2.tabular test-data/masspeaks3.tabular test-data/masspeaks3_forinput.tabular test-data/peakdetection1_QC.pdf test-data/peakdetection2_QC.pdf test-data/peakdetection3_QC.pdf
diffstat 12 files changed, 846 insertions(+), 468 deletions(-) [+]
line wrap: on
line diff
--- a/maldi_macros.xml	Wed Aug 22 11:49:06 2018 -0400
+++ b/maldi_macros.xml	Mon Oct 01 01:09:28 2018 -0400
@@ -1,20 +1,28 @@
 <macros>
     <token name="@R_IMPORTS@"><![CDATA[
-        ## Libraries
         library (Cardinal)
         library (MALDIquantForeign)
         library (MALDIquant)
         library (ggplot2)
-
+        library(gridExtra)
     ]]>
     </token>
 
+    <token name="@MADLI_QUANT_DESCRIPTION@"><![CDATA[
+MALDIquant_ provides a complete analysis pipeline for MALDI-TOF and other mass spectrometry data.
+So far we have only implemented the functionalities for mass spectrometry imaging data.
+    ]]>
+    </token>
+
+    <token name="@VERSION@">1.18.0</token>
+
     <xml name="requirements">
         <requirements>
             <requirement type="package" version="1.10.0">bioconductor-cardinal</requirement>
             <requirement type="package" version="0.11.5">r-maldiquantforeign</requirement>
             <requirement type="package" version="1.18">r-maldiquant</requirement>
             <requirement type="package" version="2.2.1">r-ggplot2</requirement>
+            <requirement type="package" version="2.2.1">r-gridextra</requirement>
         </requirements>
     </xml>
 
--- a/maldi_quant_preprocessing.xml	Wed Aug 22 11:49:06 2018 -0400
+++ b/maldi_quant_preprocessing.xml	Mon Oct 01 01:09:28 2018 -0400
@@ -1,4 +1,4 @@
-<tool id="maldi_quant_preprocessing" name="MALDIquant preprocessing" version="1.18.0.0">
+<tool id="maldi_quant_preprocessing" name="MALDIquant preprocessing" version="@VERSION@.1">
     <description>
         Preprocessing of mass-spectrometry imaging data
     </description>
@@ -39,7 +39,7 @@
     print('Reading mask region')
     ## Import imzML file
 
-    coordinate_matrix = as.matrix(read.delim("$restriction_conditional.coordinates_file", header = FALSE, stringsAsFactors = FALSE))[,1:2]
+    coordinate_matrix = as.matrix(read.delim("$restriction_conditional.coordinates_file", header = $restriction_conditional.coordinates_header, stringsAsFactors = FALSE))[,1:2]
 
     maldi_data = importImzMl('infile.imzML',
                      coordinates = coordinate_matrix)
@@ -51,9 +51,11 @@
     #if $infile.ext == 'imzml'
         ## Import imzML file
         maldi_data = import( 'infile.imzML', type="imzML" )
+        coordinates_info = cbind(coordinates(maldi_data)[,1:2], c(1:length(maldi_data)))
     #elif $infile.ext == 'analyze75'
         ## Import analyze7.5 file
         maldi_data = import( 'infile.hdr' )
+        coordinates_info = cbind(coordinates(maldi_data)[,1:2], c(1:length(maldi_data)))
     #else
         loadRData <- function(fileName){
         #loads an RData file, and returns it
@@ -61,7 +63,6 @@
         get(ls()[ls() != "fileName"])
         }
         msidata = loadRData('infile.RData')
-
         ## save coordinates
         cardinal_coordinates = as.matrix(Cardinal::coord(msidata)[,1:2])
         ## save mz values
@@ -70,13 +71,14 @@
         maldi_data = list()
         for(number_spectra in 1:ncol(msidata)){
         maldi_data[[number_spectra]] = createMassSpectrum(mass = cardinal_mzs, intensity = iData(msidata)[,number_spectra])
+        coordinates_info = cbind(cardinal_coordinates, c(1:length(maldi_data)))
         }
 
     #end if
 
 #end if
 
-## Quality control plots during preprocessing 
+## Quality control plots during preprocessing
 
 pdf("prepro_qc_plot.pdf", fonts = "Times", pointsize = 12)
 plot(0,type='n',axes=FALSE,ann=FALSE)
@@ -87,15 +89,15 @@
 
 #if str($tabular_annotation.load_annotation) == 'yes_annotation':
     print("use annotation file")
+
     ## read and extract x,y,annotation information
     input_tabular = read.delim("$tabular_annotation.annotation_file", header = $tabular_annotation.tabular_header, stringsAsFactors = FALSE)
     annotation_input = input_tabular[,c($tabular_annotation.column_x, $tabular_annotation.column_y, $tabular_annotation.column_names)]
     colnames(annotation_input) = c("x", "y", "annotation") ## rename annotations header to default name "annotation"
 
-    ## merge with coordinate information of MSI data
-    coordinates_st = cbind(coordinates(maldi_data)[,1:2], c(1:length(maldi_data)))
-    colnames(coordinates_st)[3] = "pixel_index"
-    merged_annotation = merge(coordinates_st, annotation_input, by=c("x", "y"), all.x=TRUE)
+    ## merge with coordinate information (from above) of MSI data
+    colnames(coordinates_info)[3] = "pixel_index"
+    merged_annotation = merge(coordinates_info, annotation_input, by=c("x", "y"), all.x=TRUE)
     merged_annotation[is.na(merged_annotation)] = "NA"
     merged_annotation = merged_annotation[order(merged_annotation\$pixel_index),]
     samples = as.factor(merged_annotation\$annotation)
@@ -133,10 +135,20 @@
 
 #################### Preprocessing methods #####################################
 
-## QC plot
+## QC plot on input file
 avgSpectra = averageMassSpectra(maldi_data,method="mean")
 plot(avgSpectra, main="Average spectrum for input file")
 
+pixel_number = length(maldi_data)
+minmz = round(min(unlist(lapply(maldi_data,mass))), digits=4)
+maxmz = round(max(unlist(lapply(maldi_data,mass))), digits=4)
+maxfeatures = round(length(unlist(lapply(maldi_data,mass)))/length(maldi_data), digits=2)
+medint = round(median(unlist(lapply(maldi_data,intensity))), digits=2)
+inputdata = c(minmz, maxmz,maxfeatures,  medint)
+QC_numbers= data.frame(inputdata = c(minmz, maxmz,maxfeatures, medint))
+vectorofactions = "inputdata"
+
+
 #for $method in $methods:
 
     #if str( $method.methods_conditional.method ) == 'Transformation':
@@ -144,9 +156,17 @@
         print('transforming')
         ##transformation
         maldi_data = transformIntensity(maldi_data, method="$method.methods_conditional.transform_method")
-        ## QC plot
+        ## QC plot and numbers
         avgSpectra = averageMassSpectra(maldi_data,method="mean")
         plot(avgSpectra, main="Average spectrum after transformation")
+        pixel_number = length(maldi_data)
+        minmz = round(min(unlist(lapply(maldi_data,mass))), digits=4)
+        maxmz = round(max(unlist(lapply(maldi_data,mass))), digits=4)
+        maxfeatures = round(length(unlist(lapply(maldi_data,mass)))/length(maldi_data), digits=2)
+        medint = round(median(unlist(lapply(maldi_data,intensity))), digits=2)
+        transformed = c(minmz, maxmz,maxfeatures, medint)
+        QC_numbers= cbind(QC_numbers, transformed)
+        vectorofactions = append(vectorofactions, "transformed")
 
 
     #elif str( $method.methods_conditional.method ) == 'Smoothing':
@@ -170,9 +190,17 @@
 
         #end if
 
-        ## QC plot
+        ## QC plot and numbers
         avgSpectra = averageMassSpectra(maldi_data,method="mean")
-        plot(avgSpectra, main="Average spectrum after smoothing")
+        plot(avgSpectra, main="Average spectrum after smoothing", sub="")
+        pixel_number = length(maldi_data)
+        minmz = round(min(unlist(lapply(maldi_data,mass))), digits=4)
+        maxmz = round(max(unlist(lapply(maldi_data,mass))), digits=4)
+        maxfeatures = round(length(unlist(lapply(maldi_data,mass)))/length(maldi_data), digits=2)
+        medint = round(median(unlist(lapply(maldi_data,intensity))), digits=2)
+        smoothed = c(minmz, maxmz,maxfeatures, medint)
+        QC_numbers= cbind(QC_numbers, smoothed)
+        vectorofactions = append(vectorofactions, "smoothed")
 
 
     #elif str( $method.methods_conditional.method ) == 'Baseline':
@@ -180,12 +208,54 @@
         print('baseline removing')
         ## Remove baseline
 
-        maldi_data = removeBaseline(maldi_data,
-            method="$method.methods_conditional.baseline_method",
-            iterations=$method.methods_conditional.iterations)
-        ## QC plot
+        #if str($method.methods_conditional.methods_for_baseline.baseline_method ) == 'SNIP':
+        print('SNIP')
+            random_spectra = sample(1:length(maldi_data), 4, replace=FALSE)
+            par(mfrow = c(2,2))
+            for (random_sample in random_spectra){
+                maldi_data_baseline = estimateBaseline(maldi_data[[random_sample]],
+                    method="SNIP", iterations=$method.methods_conditional.methods_for_baseline.iterations)
+                plot(maldi_data[[random_sample]], sub="", main=paste0("Estimated baseline for spectrum ", random_sample))
+                lines(maldi_data_baseline, col="blue", lwd=2)}
+
+            maldi_data = removeBaseline(maldi_data,
+                method="SNIP",
+                iterations=$method.methods_conditional.methods_for_baseline.iterations)
+
+        #elif str($method.methods_conditional.methods_for_baseline.baseline_method ) == 'TopHat':
+        print('TopHat')
+
+            maldi_data = removeBaseline(maldi_data,
+                method="TopHat",
+                halfWindowSize=$method.methods_conditional.methods_for_baseline.tophat_halfWindowSize)
+
+        #elif str($method.methods_conditional.methods_for_baseline.baseline_method ) == 'ConvexHull':
+        print('ConvexHull')
+
+            maldi_data = removeBaseline(maldi_data,
+                method="ConvecHull")
+
+        #elif str($method.methods_conditional.methods_for_baseline.baseline_method ) == 'median':
+        print('median')
+
+            maldi_data = removeBaseline(maldi_data,
+                method="TopHat",
+                halfWindowSize=$method.methods_conditional.methods_for_baseline.median_halfWindowSize)
+
+        #end if
+
+        ## QC plot and numbers
+        par(mfrow = c(1,1))
         avgSpectra = averageMassSpectra(maldi_data,method="mean")
         plot(avgSpectra, main="Average spectrum after baseline removal")
+        pixel_number = length(maldi_data)
+        minmz = round(min(unlist(lapply(maldi_data,mass))), digits=4)
+        maxmz = round(max(unlist(lapply(maldi_data,mass))), digits=4)
+        maxfeatures = round(length(unlist(lapply(maldi_data,mass)))/length(maldi_data), digits=2)
+        medint = round(median(unlist(lapply(maldi_data,intensity))), digits=2)
+        baseline_removed = c(minmz, maxmz,maxfeatures, medint)
+        QC_numbers= cbind(QC_numbers, baseline_removed)
+        vectorofactions = append(vectorofactions, "baseline_removed")
 
 
     #elif str( $method.methods_conditional.method ) == 'Calibrate':
@@ -202,9 +272,17 @@
         maldi_data = calibrateIntensity(maldi_data,
             method="$method.methods_conditional.calibrate_method")
         #end if
-        ## QC plot
+        ## QC plot and numbers
         avgSpectra = averageMassSpectra(maldi_data,method="mean")
         plot(avgSpectra, main="Average spectrum after normalization")
+        pixel_number = length(maldi_data)
+        minmz = round(min(unlist(lapply(maldi_data,mass))), digits=4)
+        maxmz = round(max(unlist(lapply(maldi_data,mass))), digits=4)
+        maxfeatures = round(length(unlist(lapply(maldi_data,mass)))/length(maldi_data), digits=2)
+        medint = round(median(unlist(lapply(maldi_data,intensity))), digits=2)
+        intensity_calibrated = c(minmz, maxmz,maxfeatures, medint)
+        QC_numbers= cbind(QC_numbers, intensity_calibrated )
+        vectorofactions = append(vectorofactions, "intensity_calibrated ")
 
 
     #elif str( $method.methods_conditional.method ) == 'Align':
@@ -213,16 +291,14 @@
         ##align spectra
 
         #if str($method.methods_conditional.reference_for_alignment.align_ref) == 'no_reference':
-
             maldi_data = alignSpectra(maldi_data, halfWindowSize=$method.methods_conditional.halfWindowSize,
-                SNR=$method.methods_conditional.snr,
-                tolerance=$method.methods_conditional.tolerance,
+                SNR=$method.methods_conditional.snr, tolerance=$method.methods_conditional.tolerance,
+                allowNoMatches =$method.methods_conditional.allow_nomatch, emptyNoMatches = $method.methods_conditional.empty_nomatch,
                 warpingMethod="$method.methods_conditional.warping_method")
 
         #elif str($method.methods_conditional.reference_for_alignment.align_ref) == 'yes_reference':
-
             ## create reference mass_vector from tabular file
-            mass_vector = read.delim("$method.methods_conditional.reference_for_alignment.reference_file", header = FALSE, stringsAsFactors = FALSE)[,1]
+            mass_vector = read.delim("$method.methods_conditional.reference_for_alignment.reference_file", header = $method.methods_conditional.reference_for_alignment.reference_header, stringsAsFactors = FALSE)[,1]
             int_vector = rep(1,length(mass_vector))
             mass_list = createMassPeaks(mass_vector, int_vector)
 
@@ -230,20 +306,23 @@
                 SNR=$method.methods_conditional.snr,
                 tolerance=$method.methods_conditional.tolerance,
                 warpingMethod="$method.methods_conditional.warping_method", 
-                reference = mass_list, allowNoMatches =$method.methods_conditional.reference_for_alignment.allow_nomatch, emptyNoMatches = $method.methods_conditional.reference_for_alignment.empty_nomatch)
+                reference = mass_list, allowNoMatches =$method.methods_conditional.allow_nomatch, emptyNoMatches = $method.methods_conditional.empty_nomatch)
 
-            #if $method.methods_conditional.reference_for_alignment.remove_empty:
+        #end if
+
+        #if $method.methods_conditional.remove_empty:
+            print("remove empty spectra")
 
-                #if $infile.ext == 'rdata'
-                    cardinal_coordinates = cardinal_coordinates[-findEmptyMassObjects(maldi_data),] ## remove coordinates of empty spectra for Cardinal RData input
-                #end if
-                #if str($tabular_annotation.load_annotation) == 'yes_annotation':
-                    merged_annotation = merged_annotation[-findEmptyMassObjects(maldi_data),] ## remove coordinate annotations for empty spectra
-                #end if
-                maldi_data = removeEmptyMassObjects(maldi_data)
+            #if $infile.ext == 'rdata'
+                cardinal_coordinates = cardinal_coordinates[-findEmptyMassObjects(maldi_data),] ## remove coordinates of empty spectra for Cardinal RData input
             #end if
+            #if str($tabular_annotation.load_annotation) == 'yes_annotation':
+                merged_annotation = merged_annotation[-findEmptyMassObjects(maldi_data),] ## remove coordinate annotations for empty spectra
+            #end if
+            maldi_data = removeEmptyMassObjects(maldi_data)
         #end if
 
+
         ## QC plot
 
         if (length(maldi_data)>0){
@@ -251,9 +330,22 @@
             plot(avgSpectra, main="Average spectrum after alignment")
         }else{"All spectra are empty"}
 
+        pixel_number = length(maldi_data)
+        minmz = round(min(unlist(lapply(maldi_data,mass))), digits=4)
+        maxmz = round(max(unlist(lapply(maldi_data,mass))), digits=4)
+        maxfeatures = round(length(unlist(lapply(maldi_data,mass)))/length(maldi_data), digits=2)
+        medint = round(median(unlist(lapply(maldi_data,intensity))), digits=2)
+        spectra_aligned = c(minmz, maxmz,maxfeatures, medint)
+        QC_numbers= cbind(QC_numbers, spectra_aligned )
+        vectorofactions = append(vectorofactions, "spectra_aligned")
     #end if
+
 #end for
 
+rownames(QC_numbers) = c("min m/z", "max mz", "# features", "median\nintensity")
+plot(0,type='n',axes=FALSE,ann=FALSE)
+grid.table(t(QC_numbers))
+
 dev.off()
 
 ## export imzML file
@@ -274,19 +366,20 @@
         </configfile>
     </configfiles>
     <inputs>
-        <param name="infile" type="data" format="imzml,rdata" label="MS metadata" help="This file is in imzML format or Cardinal MSImageSet saved as RData"/>
+        <param name="infile" type="data" format="imzml,rdata" label="Inputfile as imzML or Cardinal MSImageSet saved as RData" help="This file is in imzML format or Cardinal MSImageSet saved as RData. The file must be in profile mode, not centroided"/>
         <conditional name="restriction_conditional">
             <param name="restriction" type="select" label="Read in only spectra of interest" help="This option only works for imzML files">
                 <option value="no_restriction" selected="True">Calculate on entire file</option>
                 <option value="restrict">Restrict to coordinates of interest</option>
             </param>
             <when value="restrict">
-                <param name="coordinates_file" type="data" format="tabular" label="Tabular file with coordinates which should be read" help="x-values in first column, y-values in second column"/>
+                <param name="coordinates_file" type="data" format="tabular" label="Tabular file with coordinates" help="x-values in first column, y-values in second column"/>
+                <param name="coordinates_header" type="boolean" label="Tabular file contains a header line" truevalue="TRUE" falsevalue="FALSE"/>
             </when>              
             <when value="no_restriction"/>
         </conditional>
         <conditional name="tabular_annotation">
-            <param name="load_annotation" type="select" label="Use pixel annotation from tabular file to have updated annotation information in case empty spectra will be removed">
+            <param name="load_annotation" type="select" label="For Cardinal RData only: Use pixel annotation from tabular file to have updated annotation information in case empty spectra will be removed">
                 <option value="no_annotation" selected="True">use no annotation</option>
                 <option value="yes_annotation">use pixel annotation from a tabular file</option>
             </param>
@@ -302,7 +395,7 @@
         </conditional>
         <repeat name="methods" title="Method" min="1">
             <conditional name="methods_conditional">
-                <param name="method" type="select" label="Select the method you want to apply">
+                <param name="method" type="select" label="Select a method">
                     <option value="Transformation" selected="True">Transformation</option>
                     <option value="Smoothing">Smoothing</option>
                     <option value="Baseline">Baseline removal</option>
@@ -311,7 +404,7 @@
                     <validator type="empty_field" />
                 </param>
                 <when value="Transformation">
-                    <param name="transform_method" type="select" label="Select your transfprormation method">
+                    <param name="transform_method" type="select" label="Select the transfprormation method">
                         <option value="sqrt" selected="True">sqrt</option>
                         <option value="log">log</option>
                         <option value="log2">log2</option>
@@ -340,16 +433,30 @@
                             The best size differs depending on the selected smoothing method."/>
                 </when>
                 <when value="Baseline">
-                    <param name="baseline_method" type="select" label="Baseline removal method">
-                        <option value="SNIP" selected="True">SNIP</option>
-                        <option value="TopHat">TopHat</option>
-                        <option value="ConvexHull">ConvexHull</option>
-                        <option value="median">median</option>
-                        <validator type="empty_field" />
-                    </param>
-                    <param name="iterations" type="integer" value="100"
-                        label="Number of iterations"
-                        help=""/>
+                    <conditional name="methods_for_baseline">
+                        <param name="baseline_method" type="select" label="Baseline removal method">
+                            <option value="SNIP" selected="True">SNIP</option>
+                            <option value="TopHat">TopHat</option>
+                            <option value="ConvexHull">ConvexHull</option>
+                            <option value="median">median</option>
+                            <validator type="empty_field" />
+                        </param>
+                        <when value="SNIP">
+                            <param name="iterations" type="integer" value="100"
+                        label="Number of iterations" help="Corresponds to half window size: The resulting window reaches from mass[cur_index-iterations] to mass[cur_index+iterations]"/>
+                        </when>
+                        <when value="TopHat">
+                            <param name="tophat_halfWindowSize" type="integer" value="10"
+                        label="Half window size" help="The resulting window reaches from 
+                            mass[currentIndex-halfWindowSize] to mass[currentIndex+halfWindowSize]"/>
+                        </when>
+                        <when value="ConvexHull"/>
+                        <when value="median">
+                            <param name="median_halfWindowSize" type="integer" value="10"
+                        label="Half window size" help="The resulting window reaches from 
+                            mass[currentIndex-halfWindowSize] to mass[currentIndex+halfWindowSize]"/>
+                        </when>
+                    </conditional>
                 </when>
                 <when value="Calibrate">
                     <param name="calibrate_method" type="select" label="Calibration method">
@@ -360,10 +467,9 @@
                     </param>
                     <param name="mass_start" type="integer" value="0"
                         label="Start of m/z range, has to be inside m/z range" 
-                        help="Scaling factor is calculated on the mass range and applied to the whole spectrum"/>
+                        help="Scaling factor is calculated on the mass range and applied to the whole spectrum. Start and end are not allowed to be 0"/>
                     <param name="mass_end" type="integer" value="0"
-                        label="End of m/z range, has to be inside m/z range" 
-                        help="The Start and End value needs to be different from 0 to be taken into account and."/>
+                        label="End of m/z range, has to be inside m/z range"/>
                 </when>
                 <when value="Align">
                     <param name="warping_method" type="select" label="Warping methods">
@@ -384,9 +490,10 @@
                             (window size is 2*halfWindowSize+1).
                             The best size differs depending on the selected smoothing method."/>
 
-                    <param name="snr" type="integer" value="2"
-                        label="Signal-to-noise-ratio"
-                        help=""/>
+                    <param name="snr" type="integer" value="2" label="Signal-to-noise-ratio"/>
+                    <param name="allow_nomatch" type="boolean" label="Don't throw an error when less than 2 reference m/z were found in a spectrum" truevalue="TRUE" falsevalue="FALSE"/>
+                    <param name="empty_nomatch" type="boolean" label="logical, if TRUE the intensity values of MassSpectrum or MassPeaks objects with missing (NA) warping functions are set to zero" truevalue="TRUE" falsevalue="FALSE"/>
+                    <param name="remove_empty" type="boolean" label="Should empty spectra be removed" truevalue="TRUE" falsevalue="FALSE" help="For Cardinal RData files this step can only be performed if pixel annotations were provided"/>
 
                     <conditional name="reference_for_alignment">
                         <param name="align_ref" type="select" label="Reference to which the samples should be aligned" help="Use internal calibrants to perform m/z calibration">
@@ -398,9 +505,7 @@
                             <param name="reference_file" type="data" format="tabular"
                                 label="Tabular file with m/z of internal calibrants (MassPeaks) which should be used for spectra alignment"
                                 help="calibration of m/z values to internal calibrants, at least 2 m/z per spectrum are needed"/>
-                            <param name="allow_nomatch" type="boolean" label="Don't throw an error when less than 2 reference m/z were found in a spectrum" truevalue="TRUE" falsevalue="FALSE"/>
-                            <param name="empty_nomatch" type="boolean" label="logical, if TRUE the intensity values of MassSpectrum or MassPeaks objects with missing (NA) warping functions are set to zero" truevalue="TRUE" falsevalue="FALSE"/>
-                            <param name="remove_empty" type="boolean" label="Should empty spectra be removed" truevalue="TRUE" falsevalue="FALSE"/>
+                            <param name="reference_header" type="boolean" label="Tabular file contains a header line" truevalue="TRUE" falsevalue="FALSE"/>
                         </when>
                     </conditional>
                 </when>
@@ -409,7 +514,7 @@
         <param name="export_processed" type="boolean" label="Export file as processed imzML" help="otherwise continuous imzML will be exported" truevalue="TRUE" falsevalue="FALSE"/>
     </inputs>
     <outputs>
-        <data format="imzml" name="outfile_imzml" label="$infile.display_name processed" />
+        <data format="imzml" name="outfile_imzml" label="$infile.display_name preprocessed" />
         <data format="pdf" name="plots" from_work_dir="prepro_qc_plot.pdf" label="$infile.display_name preprocessed QC"/>
         <data format="tabular" name="annotation_output" label="$infile.display_name annotations">
             <filter>tabular_annotation["load_annotation"] == 'yes_annotation'</filter>
@@ -464,12 +569,12 @@
                 <param name="method" value="Align"/>
                 <param name="warping_method" value="linear"/>
                 <param name="halfWindowSize" value="1"/>
+                <param name="allow_nomatch" value="TRUE"/>
+                <param name="remove_empty" value="TRUE"/>
+                <param name="empty_nomatch" value="TRUE"/>
                 <conditional name="reference_for_alignment">
                     <param name="align_ref" value="yes_reference"/>
                     <param name="reference_file" value="align_reference_test2.tabular" ftype="tabular"/>
-                    <param name="allow_nomatch" value="TRUE"/>
-                    <param name="remove_empty" value="TRUE"/>
-                    <param name="empty_nomatch" value="TRUE"/>
                 </conditional>
             </conditional>
             <output name="outfile_imzml" file="outfile3.imzML" compare="sim_size"/>
@@ -480,26 +585,62 @@
     </tests>
     <help><![CDATA[
 
-MALDIquant_ provides a complete analysis pipeline for MALDI-TOF and other mass spectrometry data. So far we have only implemented the functionalities for mass spectrometry imaging data.
+@MADLI_QUANT_DESCRIPTION@
+
+-----
+
+**Input data**
 
-Input data: 
+- MSI data: 2 types of input data can be used:
+
+    - imzml file (upload imzml and ibd file via the "composite" function) `Introduction to the imzml format <https://ms-imaging.org/wp/imzml/>`_
+    - Cardinal "MSImageSet" data saved as .RData
+- Only for Cardinal RData files and when remove empty spectra is chosen: Tabular file with coordinates annotations. Separate columns for x and y coordinates and a third column with pixel annotations. Tabular files with any header name or no header at all are supported
+- Optional: Tabular file with pixel coordinates to restrict reading of imzML files to coordinates of interest. The file has to contain x values in the first column and y values in the second columns. Further columns are allowed. Tabular files with any header name or no header at all are supported. 
+
+    ::
 
-- MSI data as imzML file (upload via the "composite" function) `Introduction to the imzml format <https://ms-imaging.org/wp/imzml/>`_
-- optinal tabular file with pixel coordinates to restrict reading of imzML file to coordinates of interest
+       x_coord     y_coord 
+         1            1    
+         2            1    
+         3            1    
+        ...
+        ...
+
+- Optional: Tabular file with reference m/z for the spectra align function. At least 2 m/z values of the input list must be present in every spectrum to peform the alignment. First column must contain m/z values, without empty fields or letters. Tabular files with any header name or no header at all are supported. 
+
+    ::
 
-Options:
+    
+            m/z
+          100.0
+          100.01
+          100.02
+        ...
+        ...    
+
+
+
+**Options**
 
 - Transformation: transformation of intensities with log, log2, log10 and squareroot
 - Smoothing: Smoothing of the peaks reduces noise and improves peak detection. Available smoothing methods are SavitzkyGolay and Moving Average
-- Baseline reduction: Baseline  reduction removes background intensity generated by chemical noise (common in MALDI datasets). Available methods are SNIP, TopHat,ConvexHull and median.
+- Baseline reduction: Baseline reduction removes background intensity generated by chemical noise (common in MALDI datasets). 
+
+    - Available methods are SNIP, TopHat,ConvexHull and median:
+    - SNIP is the default baseline reduction method in MALDIquant. 
+    - ConvexHull cannot be used for MALDI-TOF baseline removal. 
+    - The moving median may generate negative intensities. 
+    - Except for the ConvexHull all methods have a parameter for the 'Half window size' (in SNIP it is called 'iterations'). The smaller the window the more baseline will be removed but also parts of the peaks. Wider windows preserve the peak height better and produce a smoother baseline, but some local background variation will remain. 
+
 - Intensity calibration (normalization): Normalization of intensities to Total Ion Current (TIC), median spectrum, Probabilistic Quotient Normalization (PQN)
-- Spectra alignment (warping):alignment for (re)calibration of m/z values
+- Spectra alignment (warping): alignment for (re)calibration of m/z values, at least two m/z per spectrum are needed for the alignment. This requirement can be skipped by setting "Don't throw an error when less than 2 reference m/z were found in a spectrum" to yes. If the not aligned spectra should be set to zero select yes in "logical, if TRUE the intensity values of MassSpectrum or MassPeaks objects with missing (NA) warping functions are set to zero". In order to remove such empty spectra set "Should empty spectra be removed" to yes. 
 
 
-Output: 
+**Output**
 
 - imzML file (imzML format can be continuous or processed)
-- pdf with average mass spectra after each preprocessing step
+- PDF with average mass spectra after each preprocessing step
 
 .. _MALDIquant: http://strimmerlab.org/software/maldiquant/
 
--- a/test-data/int1.tabular	Wed Aug 22 11:49:06 2018 -0400
+++ b/test-data/int1.tabular	Mon Oct 01 01:09:28 2018 -0400
@@ -1,4 +1,4 @@
-mz | spectra	col1	col2	col3
+mz	col1	col2	col3
 300.083343505859	0	0.0878976186116536	0
 304	9.438736829163e-11	0.137228806813558	0.203098436196645
 304.166687011719	0.104457606871923	0.0169352528949116	0.00765286510187286
--- a/test-data/int2.tabular	Wed Aug 22 11:49:06 2018 -0400
+++ b/test-data/int2.tabular	Mon Oct 01 01:09:28 2018 -0400
@@ -0,0 +1,10 @@
+mz	xy_1_1	xy_2_1	xy_3_1	xy_1_2	xy_2_2	xy_3_2	xy_1_3	xy_2_3	xy_3_3
+308.266668701172	NA	NA	NA	0.399492412805557	2.67954346782062e-05	0.630028009414673	NA	NA	NA
+329.152786254883	2.47849035263062	1.6380660533905	0.519839584827423	NA	NA	NA	NA	NA	NA
+329.697925567627	NA	NA	NA	NA	2.56914954661625e-05	NA	4.62229545519222e-05	NA	6.18351987213828e-05
+343.642865862165	NA	0.662226140499115	NA	NA	NA	NA	NA	NA	NA
+344.611124674479	0.638258039951324	NA	NA	NA	NA	NA	NA	NA	NA
+366.562515258789	NA	2.64647725956024e-09	2.61009136011126e-05	NA	NA	NA	NA	NA	NA
+367.645835876465	0.235070616006851	NA	NA	NA	NA	NA	NA	NA	NA
+387.850006103516	NA	NA	NA	NA	NA	NA	2.8698808819172e-05	0.197833687067032	4.42154814663809e-05
+394.791679382324	NA	NA	NA	NA	NA	NA	NA	1.05953142589779e-21	0.310508847236633
--- a/test-data/intensity_matrix3.tabular	Wed Aug 22 11:49:06 2018 -0400
+++ b/test-data/intensity_matrix3.tabular	Mon Oct 01 01:09:28 2018 -0400
@@ -1,4 +1,4 @@
-mz | spectra	x = 1, y = 1	x = 2, y = 1	x = 3, y = 1	x = 1, y = 2	x = 2, y = 2	x = 3, y = 2	x = 1, y = 3	x = 2, y = 3	x = 3, y = 3
+mz	xy_1_1	xy_2_1	xy_3_1	xy_1_2	xy_2_2	xy_3_2	xy_1_3	xy_2_3	xy_3_3
 304.595254080636	1.76512676262064e-05	0	0.327420804051165	1.17177887401856e-13	2.65423709869989e-05	0	0.279548346996307	0.256212419994475	0.226718190873036
 305.119057791574	1.62699820283052e-09	0	1.36897748140363e-05	5.69736818276873e-18	1.71781823336396e-09	0	0.716848015785217	1.44706262158933e-05	9.11607707771881e-06
 305.66667175293	1.02237303638199e-13	0	0	5.6757509669499e-22	1.38465480219223e-13	0	6.01442479819525e-05	0.104363307437671	0
--- a/test-data/masspeaks1_forinput.tabular	Wed Aug 22 11:49:06 2018 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-snr	mass	intensity	spectrum
-5.34196717869329	304.166687011719	0.104457606871923	x = 1, y = 1
-12.0922480027988	305	0.238949338595072	x = 1, y = 1
-6.80380283473404	306.25	0.133792817751516	x = 1, y = 1
-11.9239943102966	306.666687011719	0.232789536317284	x = 1, y = 1
-16.7672721943661	306.916687011719	0.322907487551371	x = 1, y = 1
-14.5727405573344	315.916687011719	0.134740673005581	x = 1, y = 1
-12.6587975530526	316.25	0.117780188719432	x = 1, y = 1
-15.5891513371263	320.916687011719	0.0873032609621684	x = 1, y = 1
-8.28066653191209	322.75	0.107258200645447	x = 1, y = 1
-8.64305080588796	327.083343505859	0.593451981743177	x = 1, y = 1
-22.5976205263238	329	1.80600585540136	x = 1, y = 1
-6.62986417925206	343.083343505859	0.319934318463008	x = 1, y = 1
-5.76872573536526	343.75	0.314895849686906	x = 1, y = 1
-7.23012875909998	344	0.41009783744812	x = 1, y = 1
-12.5923211364761	345	0.777459700902303	x = 1, y = 1
-5.61154187261139	346.083343505859	0.311080597071943	x = 1, y = 1
-11.6128628366043	353.083343505859	0.0853602389494578	x = 1, y = 1
-8.93926402677033	355.166687011719	0.093819797039032	x = 1, y = 1
-11.4518402499656	355.916687011719	0.124494592348735	x = 1, y = 1
-12.2687590055812	356.916687011719	0.131409923235575	x = 1, y = 1
-17.1598526473503	360.916687011719	0.159461249907811	x = 1, y = 1
-19.5606964350667	364.333343505859	0.279228508472443	x = 1, y = 1
-13.4363791597757	365.583343505859	0.189359684795294	x = 1, y = 1
-7.2659142337533	366.083343505859	0.0986319063122271	x = 1, y = 1
-6.78882554537553	367.583343505859	0.0783568720022837	x = 1, y = 1
-19.2913990161673	370.083343505859	0.149130453666051	x = 1, y = 1
-22.9258781818056	374.5	0.10046042005221	x = 1, y = 1
-32.553974512381	395.916687011719	0.170605540275574	x = 1, y = 1
-20.0044568991975	397.083343505859	0.0962067842483521	x = 1, y = 1
-52.5251008144488	398.75	0.214157521724701	x = 1, y = 1
-6.53932310180994	300.083343505859	0.0878976186116536	x = 2, y = 1
-8.1332053348611	304	0.137228806813558	x = 2, y = 1
-8.87376047659255	304.666687011719	0.15201666439801	x = 2, y = 1
-9.0031548908286	305.75	0.155222187439613	x = 2, y = 1
-12.1483037475036	305.916687011719	0.20923868753016	x = 2, y = 1
-5.50393277232579	306.916687011719	0.0935481031580518	x = 2, y = 1
-8.92694410124806	307.083343505859	0.151374835480731	x = 2, y = 1
-8.53366295883023	307.75	0.14276859164238	x = 2, y = 1
-20.8363523568967	308.25	0.34317347407341	x = 2, y = 1
-9.03952553159105	311.5	0.126103460788727	x = 2, y = 1
-9.21792692425819	313.166687011719	0.11177615324661	x = 2, y = 1
-10.2836388640006	314	0.114434331655502	x = 2, y = 1
-14.5366950159814	315.833343505859	0.110506186882656	x = 2, y = 1
-29.6030745455647	321.25	0.0977287689844767	x = 2, y = 1
-5.12133326721085	327.916687011719	0.406224122348552	x = 2, y = 1
-18.2260181460723	328.916687011719	1.60846790671349	x = 2, y = 1
-6.71691695849357	339.416687011719	0.214046796162923	x = 2, y = 1
-5.42044735697872	343.916687011719	0.369042471672098	x = 2, y = 1
-9.90109899068147	344.916687011719	0.751941124598185	x = 2, y = 1
-5.7761050136785	346	0.407967170079549	x = 2, y = 1
-9.53380778579935	350.083343505859	0.103204836448034	x = 2, y = 1
-22.3739163562105	357.333343505859	0.132146000862122	x = 2, y = 1
-17.1123310736305	359.916687011719	0.0798314611117045	x = 2, y = 1
-21.5296474065392	365.833343505859	0.247531970342	x = 2, y = 1
-17.6598326813686	367.916687011719	0.225095887978872	x = 2, y = 1
-14.4139559364593	369.083343505859	0.167913814385732	x = 2, y = 1
-13.4612234580055	370.416687011719	0.129989445209503	x = 2, y = 1
-10.0270809962262	376	0.0839582482973735	x = 2, y = 1
-13.7957864133576	378.75	0.090022732814153	x = 2, y = 1
-21.7167106106545	382.583343505859	0.111637224753698	x = 2, y = 1
-37.803872450968	383.166687011719	0.194509585698446	x = 2, y = 1
-19.3443105357995	386.75	0.0984363655249278	x = 2, y = 1
-40.2946953152003	393.583343505859	0.136588126420975	x = 2, y = 1
-10.9042784289401	304	0.203098436196645	x = 3, y = 1
-14.2536155186416	304.666687011719	0.269343495368958	x = 3, y = 1
-9.73428286587393	305.916687011719	0.186377684291186	x = 3, y = 1
-25.326392266369	307.166687011719	0.48292171999357	x = 3, y = 1
-5.77081370276002	308	0.107646773258845	x = 3, y = 1
-9.71607704287468	309.833343505859	0.161644687255224	x = 3, y = 1
-12.3286648153297	314.75	0.168087442715963	x = 3, y = 1
-10.0188114825306	314.916687011719	0.136831253767014	x = 3, y = 1
-9.98544088935621	318.083343505859	0.131532917420069	x = 3, y = 1
-15.9567928309838	318.416687011719	0.202652255694071	x = 3, y = 1
-5.45721434599321	326.916687011719	0.25384642680486	x = 3, y = 1
-6.94450239587698	328	0.340036729971568	x = 3, y = 1
-26.3506501037786	328.916687011719	1.28705859184265	x = 3, y = 1
-21.9755116973922	329.083343505859	1.05529999732971	x = 3, y = 1
-6.26698769334215	342.333343505859	0.19008461634318	x = 3, y = 1
-7.40453698942461	343.916687011719	0.2857492963473	x = 3, y = 1
-5.47629632143471	344.333343505859	0.225824773311615	x = 3, y = 1
-24.2489760518392	345.083343505859	1.09834182262421	x = 3, y = 1
-7.55360848799134	346	0.326915502548218	x = 3, y = 1
-31.8141872712877	355.333343505859	0.218277891476949	x = 3, y = 1
-28.500421447754	359.916687011719	0.0977983176708221	x = 3, y = 1
-35.9263674883478	370.333343505859	0.318489452203115	x = 3, y = 1
-17.9023349585808	376.833343505859	0.119955976804097	x = 3, y = 1
-14.165837350632	379.5	0.138252675533295	x = 3, y = 1
-6.1026956808649	380.75	0.063951442639033	x = 3, y = 1
-6.66805606030542	386.666687011719	0.0939600268999736	x = 3, y = 1
-10.4761700777795	387	0.148616979519526	x = 3, y = 1
-14.9996173987781	387.166687011719	0.213376681009928	x = 3, y = 1
-9.49389038421466	387.5	0.135613699754079	x = 3, y = 1
-6.40597511255643	390.166687011719	0.0942935446898143	x = 3, y = 1
-6.91093965563744	391.083343505859	0.103488087654114	x = 3, y = 1
-12.1864531063779	392	0.184977193673452	x = 3, y = 1
-17.1091639921622	392.833343505859	0.264233609040578	x = 3, y = 1
-6.41767571506743	394.833343505859	0.103502949078878	x = 3, y = 1
-8.23619853479686	398.166687011719	0.142847468455633	x = 3, y = 1
--- a/test-data/masspeaks2.tabular	Wed Aug 22 11:49:06 2018 -0400
+++ b/test-data/masspeaks2.tabular	Mon Oct 01 01:09:28 2018 -0400
@@ -0,0 +1,20 @@
+snr	mass	intensity	spectrum
+Inf	329.152786254883	2.47849035263062	xy_1_1
+Inf	344.611124674479	0.638258039951324	xy_1_1
+Inf	367.645835876465	0.235070616006851	xy_1_1
+Inf	329.152786254883	1.6380660533905	xy_2_1
+Inf	343.642865862165	0.662226140499115	xy_2_1
+Inf	366.562515258789	2.64647725956024e-09	xy_2_1
+Inf	329.152786254883	0.519839584827423	xy_3_1
+Inf	366.562515258789	2.61009136011126e-05	xy_3_1
+Inf	308.266668701172	0.399492412805557	xy_1_2
+Inf	308.266668701172	2.67954346782062e-05	xy_2_2
+Inf	329.697925567627	2.56914954661625e-05	xy_2_2
+Inf	308.266668701172	0.630028009414673	xy_3_2
+Inf	329.697925567627	4.62229545519222e-05	xy_1_3
+Inf	387.850006103516	2.8698808819172e-05	xy_1_3
+Inf	387.850006103516	0.197833687067032	xy_2_3
+Inf	394.791679382324	1.05953142589779e-21	xy_2_3
+Inf	329.697925567627	6.18351987213828e-05	xy_3_3
+Inf	387.850006103516	4.42154814663809e-05	xy_3_3
+Inf	394.791679382324	0.310508847236633	xy_3_3
--- a/test-data/masspeaks3.tabular	Wed Aug 22 11:49:06 2018 -0400
+++ b/test-data/masspeaks3.tabular	Mon Oct 01 01:09:28 2018 -0400
@@ -1,298 +1,298 @@
 snr	mass	intensity	spectrum
-Inf	304.595254080636	1.76512676262064e-05	x = 1, y = 1
-Inf	305.119057791574	1.62699820283052e-09	x = 1, y = 1
-Inf	305.66667175293	1.02237303638199e-13	x = 1, y = 1
-Inf	306.32292175293	7.71168242810122e-18	x = 1, y = 1
-Inf	307.031265258789	5.54882387838857e-22	x = 1, y = 1
-Inf	307.614593505859	3.61475171997316e-26	x = 1, y = 1
-Inf	308.718757629395	1.67789168240286e-34	x = 1, y = 1
-Inf	309.250011444092	1.43981749664202e-38	x = 1, y = 1
-Inf	321.050012207031	1.5556590571819e-38	x = 1, y = 1
-Inf	328.000010172526	0.481155782938004	x = 1, y = 1
-Inf	329.152786254883	2.47849035263062	x = 1, y = 1
-Inf	330.197929382324	1.09462394703996e-08	x = 1, y = 1
-Inf	330.712968614366	5.96421675068404e-13	x = 1, y = 1
-Inf	331.259270562066	5.44180783738833e-17	x = 1, y = 1
-Inf	331.796308729384	2.72964412068832e-21	x = 1, y = 1
-Inf	332.342600504557	2.65403450832136e-25	x = 1, y = 1
-Inf	332.879638671875	1.38079261482617e-29	x = 1, y = 1
-Inf	333.44445461697	1.27447841383671e-33	x = 1, y = 1
-Inf	343.642865862165	0.282461315393448	x = 1, y = 1
-Inf	344.611124674479	0.638258039951324	x = 1, y = 1
-Inf	345.629638671875	7.93658109614626e-05	x = 1, y = 1
-Inf	346.120378282335	6.64322641341641e-09	x = 1, y = 1
-Inf	346.700012207031	3.66650991252132e-13	x = 1, y = 1
-Inf	347.296308729384	3.31281302377731e-17	x = 1, y = 1
-Inf	347.814826117622	1.67992344863529e-21	x = 1, y = 1
-Inf	348.361117892795	1.61966283306326e-25	x = 1, y = 1
-Inf	348.888895670573	8.15391718679523e-30	x = 1, y = 1
-Inf	349.44445461697	7.79337969080295e-34	x = 1, y = 1
-Inf	349.96297539605	4.78329195057699e-38	x = 1, y = 1
-Inf	365.979179382324	3.88570062627783e-13	x = 1, y = 1
-Inf	366.562515258789	1.91497258346089e-17	x = 1, y = 1
-Inf	367.083343505859	1.88767583715038e-21	x = 1, y = 1
-Inf	367.645835876465	0.235070616006851	x = 1, y = 1
-Inf	368.222229003906	1.47346945595928e-05	x = 1, y = 1
-Inf	368.666680908203	1.13727949280218e-09	x = 1, y = 1
-Inf	369.216674804688	6.86236075017783e-14	x = 1, y = 1
-Inf	369.766680908203	5.79879376075753e-18	x = 1, y = 1
-Inf	370.523821149554	2.65765684162034e-05	x = 1, y = 1
-Inf	306.32292175293	1.93815667444142e-05	x = 2, y = 1
-Inf	307.031265258789	1.36712752230039e-09	x = 2, y = 1
-Inf	307.614593505859	9.10052605105835e-14	x = 2, y = 1
-Inf	308.266668701172	0.399492412805557	x = 2, y = 1
-Inf	308.718757629395	2.19716112042079e-05	x = 2, y = 1
-Inf	309.250011444092	1.93809390758304e-09	x = 2, y = 1
-Inf	309.833347865513	1.00940015081239e-13	x = 2, y = 1
-Inf	310.361124674479	9.53307623430011e-18	x = 2, y = 1
-Inf	310.902786254883	4.60080996999485e-22	x = 2, y = 1
-Inf	311.430557250977	0.37831038236618	x = 2, y = 1
-Inf	311.986119588216	3.04782115563285e-05	x = 2, y = 1
-Inf	312.516674804688	1.61912494522909e-09	x = 2, y = 1
-Inf	328.937515258789	2.02454543113708	x = 2, y = 1
-Inf	329.697925567627	4.36672562500462e-05	x = 2, y = 1
-Inf	330.197929382324	0.291347920894623	x = 2, y = 1
-Inf	330.712968614366	2.65860908257309e-05	x = 2, y = 1
-Inf	331.259270562066	1.33338984298348e-09	x = 2, y = 1
-Inf	331.796308729384	0.256167501211166	x = 2, y = 1
-Inf	332.342600504557	1.61519819812384e-05	x = 2, y = 1
-Inf	332.879638671875	0.473990738391876	x = 2, y = 1
-Inf	333.44445461697	3.11978510580957e-05	x = 2, y = 1
-Inf	334.020843505859	2.16568318833765e-09	x = 2, y = 1
-Inf	343.642865862165	4.07043262384832e-05	x = 2, y = 1
-Inf	345.629638671875	0.388675004243851	x = 2, y = 1
-Inf	346.120378282335	1.22390151023865	x = 2, y = 1
-Inf	347.296308729384	2.53151047218125e-05	x = 2, y = 1
-Inf	347.814826117622	2.07963690712631e-09	x = 2, y = 1
-Inf	348.361117892795	1.17175312421697e-13	x = 2, y = 1
-Inf	348.888895670573	1.04223425420895e-17	x = 2, y = 1
-Inf	349.44445461697	5.37785487481536e-22	x = 2, y = 1
-Inf	349.96297539605	0.309614509344101	x = 2, y = 1
-Inf	351.069458007812	1.2832610529756e-09	x = 2, y = 1
-Inf	370.523821149554	2.16230963798365e-13	x = 2, y = 1
-Inf	328.937515258789	1.43158733844757	x = 3, y = 1
-Inf	329.697925567627	4.62229545519222e-05	x = 3, y = 1
-Inf	330.712968614366	2.11953542282421e-13	x = 3, y = 1
-Inf	331.259270562066	2.03012902874583e-17	x = 3, y = 1
-Inf	331.796308729384	9.94915412632575e-22	x = 3, y = 1
-Inf	332.342600504557	9.78378697984054e-26	x = 3, y = 1
-Inf	332.879638671875	5.89565674575821e-30	x = 3, y = 1
-Inf	333.44445461697	4.65177644766935e-34	x = 3, y = 1
-Inf	334.020843505859	3.24418811371231e-38	x = 3, y = 1
-Inf	345.629638671875	3.101946276729e-05	x = 3, y = 1
-Inf	346.120378282335	2.42813036344103e-09	x = 3, y = 1
-Inf	347.296308729384	1.2331086620974e-17	x = 3, y = 1
-Inf	347.814826117622	6.65060432147639e-22	x = 3, y = 1
-Inf	348.361117892795	6.1151591415287e-26	x = 3, y = 1
-Inf	348.888895670573	3.04086320241335e-30	x = 3, y = 1
-Inf	349.44445461697	2.97658725432968e-34	x = 3, y = 1
-Inf	349.96297539605	1.58814465883111e-38	x = 3, y = 1
-Inf	387.850006103516	2.8698808819172e-05	x = 3, y = 1
-Inf	388.895843505859	1.5247652858201e-13	x = 3, y = 1
-Inf	389.854179382324	9.39855267846122e-18	x = 3, y = 1
-Inf	391.083335876465	3.90465670032414e-30	x = 3, y = 1
-Inf	391.972229003906	1.99175119954855e-34	x = 3, y = 1
-Inf	394.083351135254	3.94045773788321e-09	x = 3, y = 1
-Inf	394.791679382324	9.62898286324196e-18	x = 3, y = 1
-Inf	395.270843505859	0.23992046713829	x = 3, y = 1
-Inf	395.816680908203	1.69494323927211e-05	x = 3, y = 1
-Inf	396.383337402344	1.12639098048817e-09	x = 3, y = 1
-Inf	396.916674804687	8.86759402344249e-14	x = 3, y = 1
-Inf	304.595254080636	1.17177887401856e-13	x = 1, y = 2
-Inf	305.119057791574	5.69736818276873e-18	x = 1, y = 2
-Inf	305.66667175293	5.6757509669499e-22	x = 1, y = 2
-Inf	306.32292175293	0.401378452777863	x = 1, y = 2
-Inf	307.031265258789	0.968722462654114	x = 1, y = 2
-Inf	307.614593505859	5.86232454224955e-05	x = 1, y = 2
-Inf	308.718757629395	2.7437655012591e-13	x = 1, y = 2
-Inf	309.250011444092	2.22135184510828e-17	x = 1, y = 2
-Inf	321.050012207031	1.50940976188625e-38	x = 1, y = 2
-Inf	328.000010172526	0.217953696846962	x = 1, y = 2
-Inf	329.152786254883	1.6380660533905	x = 1, y = 2
-Inf	330.197929382324	0.533841967582703	x = 1, y = 2
-Inf	330.712968614366	2.71527351287659e-05	x = 1, y = 2
-Inf	331.259270562066	2.59207522113059e-09	x = 1, y = 2
-Inf	331.796308729384	1.59223044362937e-13	x = 1, y = 2
-Inf	332.342600504557	1.2307215842857e-17	x = 1, y = 2
-Inf	332.879638671875	8.70707862088559e-22	x = 1, y = 2
-Inf	333.44445461697	5.77743854353985e-26	x = 1, y = 2
-Inf	343.642865862165	0.662226140499115	x = 1, y = 2
-Inf	344.611124674479	0.267281413078308	x = 1, y = 2
-Inf	345.629638671875	2.6464356778888e-05	x = 1, y = 2
-Inf	346.120378282335	0.933241784572601	x = 1, y = 2
-Inf	346.700012207031	5.34617865923792e-05	x = 1, y = 2
-Inf	347.296308729384	2.65817307081306e-05	x = 1, y = 2
-Inf	347.814826117622	2.63146238133061e-09	x = 1, y = 2
-Inf	348.361117892795	1.46233204581861e-13	x = 1, y = 2
-Inf	348.888895670573	1.25829507097872e-17	x = 1, y = 2
-Inf	349.44445461697	8.27559972606905e-22	x = 1, y = 2
-Inf	349.96297539605	5.94295388740686e-26	x = 1, y = 2
-Inf	365.979179382324	4.37134549429175e-05	x = 1, y = 2
-Inf	366.562515258789	2.64647725956024e-09	x = 1, y = 2
-Inf	367.083343505859	2.23088989772732e-13	x = 1, y = 2
-Inf	367.645835876465	1.22170415755601e-17	x = 1, y = 2
-Inf	368.222229003906	1.11046018496466e-21	x = 1, y = 2
-Inf	368.666680908203	5.59376337511562e-26	x = 1, y = 2
-Inf	369.216674804688	5.42113770011657e-30	x = 1, y = 2
-Inf	369.766680908203	2.78554944810064e-34	x = 1, y = 2
-Inf	370.523821149554	2.60531652564813e-38	x = 1, y = 2
-Inf	306.32292175293	2.31608719332144e-05	x = 2, y = 2
-Inf	307.031265258789	0.447774022817612	x = 2, y = 2
-Inf	307.614593505859	0.428305774927139	x = 2, y = 2
-Inf	308.266668701172	2.67954346782062e-05	x = 2, y = 2
-Inf	308.718757629395	2.22558682594354e-09	x = 2, y = 2
-Inf	309.250011444092	1.23887540308919e-13	x = 2, y = 2
-Inf	309.833347865513	1.11220637212349e-17	x = 2, y = 2
-Inf	310.361124674479	5.68033014673253e-22	x = 2, y = 2
-Inf	310.902786254883	5.44664266518465e-26	x = 2, y = 2
-Inf	311.430557250977	2.68241453784197e-30	x = 2, y = 2
-Inf	311.986119588216	2.62427828124129e-34	x = 2, y = 2
-Inf	312.516674804688	1.58696420500477e-38	x = 2, y = 2
-Inf	328.937515258789	2.37836694717407	x = 2, y = 2
-Inf	329.697925567627	2.56914954661625e-05	x = 2, y = 2
-Inf	330.197929382324	2.05684469456457e-09	x = 2, y = 2
-Inf	330.712968614366	1.42042993578166e-13	x = 2, y = 2
-Inf	331.259270562066	9.67603620520642e-18	x = 2, y = 2
-Inf	331.796308729384	7.48378431587693e-22	x = 2, y = 2
-Inf	332.342600504557	4.50551773856038e-26	x = 2, y = 2
-Inf	332.879638671875	3.81384647033894e-30	x = 2, y = 2
-Inf	333.44445461697	2.07898068639674e-34	x = 2, y = 2
-Inf	334.020843505859	1.92182899577831e-38	x = 2, y = 2
-Inf	343.642865862165	3.78152206840319e-30	x = 2, y = 2
-Inf	345.629638671875	2.89905474346597e-05	x = 2, y = 2
-Inf	346.120378282335	2.03336369963836e-09	x = 2, y = 2
-Inf	347.296308729384	1.5656460163882e-05	x = 2, y = 2
-Inf	347.814826117622	1.26892807372769e-09	x = 2, y = 2
-Inf	348.361117892795	7.2568185727033e-14	x = 2, y = 2
-Inf	348.888895670573	6.38326717387832e-18	x = 2, y = 2
-Inf	349.44445461697	3.33466297356616e-22	x = 2, y = 2
-Inf	349.96297539605	3.14223389850709e-26	x = 2, y = 2
-Inf	351.069458007812	1.5203838193817e-34	x = 2, y = 2
-Inf	370.523821149554	2.19204516215991e-38	x = 2, y = 2
-Inf	328.937515258789	0.995543837547302	x = 3, y = 2
-Inf	329.697925567627	3.03936976706609e-05	x = 3, y = 2
-Inf	330.712968614366	2.97629267151933e-05	x = 3, y = 2
-Inf	331.259270562066	1.62655666713363e-09	x = 3, y = 2
-Inf	331.796308729384	1.42477311415937e-13	x = 3, y = 2
-Inf	332.342600504557	9.25888240485103e-18	x = 3, y = 2
-Inf	332.879638671875	6.73557006833172e-22	x = 3, y = 2
-Inf	333.44445461697	4.97108094996007e-26	x = 3, y = 2
-Inf	334.020843505859	0.268675297498703	x = 3, y = 2
-Inf	345.629638671875	8.61570297274739e-05	x = 3, y = 2
-Inf	346.120378282335	0.285138785839081	x = 3, y = 2
-Inf	347.296308729384	1.30612853865841e-09	x = 3, y = 2
-Inf	347.814826117622	1.26163240011384e-13	x = 3, y = 2
-Inf	348.361117892795	6.39862460913097e-18	x = 3, y = 2
-Inf	348.888895670573	6.06791151963729e-22	x = 3, y = 2
-Inf	349.44445461697	3.743162251606e-26	x = 3, y = 2
-Inf	349.96297539605	2.88010014996665e-30	x = 3, y = 2
-Inf	387.850006103516	0.197833687067032	x = 3, y = 2
-Inf	388.895843505859	1.24303778381574e-09	x = 3, y = 2
-Inf	389.854179382324	6.66746120334285e-18	x = 3, y = 2
-Inf	391.083335876465	0.310464262962341	x = 3, y = 2
-Inf	391.972229003906	0.554931581020355	x = 3, y = 2
-Inf	394.083351135254	1.74293175463129e-17	x = 3, y = 2
-Inf	394.791679382324	1.05953142589779e-21	x = 3, y = 2
-Inf	395.270843505859	8.90397842411612e-26	x = 3, y = 2
-Inf	395.816680908203	4.8930473332074e-30	x = 3, y = 2
-Inf	396.383337402344	4.43552910897872e-34	x = 3, y = 2
-Inf	396.916674804687	2.28012433765444e-38	x = 3, y = 2
-Inf	304.595254080636	0.279548346996307	x = 1, y = 3
-Inf	305.119057791574	0.716848015785217	x = 1, y = 3
-Inf	305.66667175293	6.01442479819525e-05	x = 1, y = 3
-Inf	306.32292175293	3.80939590982621e-09	x = 1, y = 3
-Inf	307.031265258789	2.06235797064436e-17	x = 1, y = 3
-Inf	307.614593505859	1.33474952143388e-21	x = 1, y = 3
-Inf	308.718757629395	6.1926750159511e-30	x = 1, y = 3
-Inf	309.250011444092	5.40336274000115e-34	x = 1, y = 3
-Inf	321.050012207031	0.261909782886505	x = 1, y = 3
-Inf	328.000010172526	2.71850386646122e-09	x = 1, y = 3
-Inf	329.152786254883	0.519839584827423	x = 1, y = 3
-Inf	330.197929382324	2.44585240949391e-09	x = 1, y = 3
-Inf	330.712968614366	1.88825666799612e-13	x = 1, y = 3
-Inf	331.259270562066	1.13914243343648e-17	x = 1, y = 3
-Inf	331.796308729384	9.62779062132945e-22	x = 1, y = 3
-Inf	332.342600504557	5.25721990550878e-26	x = 1, y = 3
-Inf	332.879638671875	4.78893314027823e-30	x = 1, y = 3
-Inf	333.44445461697	2.40634231736506e-34	x = 1, y = 3
-Inf	343.642865862165	2.33215705520706e-05	x = 1, y = 3
-Inf	344.611124674479	1.14931461158048e-13	x = 1, y = 3
-Inf	345.629638671875	2.49274271482136e-05	x = 1, y = 3
-Inf	346.120378282335	2.42154163387909e-09	x = 1, y = 3
-Inf	346.700012207031	1.25566657765974e-13	x = 1, y = 3
-Inf	347.296308729384	1.16314638763216e-17	x = 1, y = 3
-Inf	347.814826117622	7.28580269542504e-22	x = 1, y = 3
-Inf	348.361117892795	5.51452352978133e-26	x = 1, y = 3
-Inf	348.888895670573	3.95872379808908e-30	x = 1, y = 3
-Inf	349.44445461697	2.58541051461361e-34	x = 1, y = 3
-Inf	349.96297539605	2.00786591889092e-38	x = 1, y = 3
-Inf	365.979179382324	0.29585200548172	x = 1, y = 3
-Inf	366.562515258789	2.61009136011126e-05	x = 1, y = 3
-Inf	367.083343505859	1.29202726295574e-09	x = 1, y = 3
-Inf	367.645835876465	1.26925610321495e-13	x = 1, y = 3
-Inf	368.222229003906	6.86202649112451e-18	x = 1, y = 3
-Inf	368.666680908203	6.0804923995715e-22	x = 1, y = 3
-Inf	369.216674804688	3.92168363149906e-26	x = 1, y = 3
-Inf	369.766680908203	2.87628364894794e-30	x = 1, y = 3
-Inf	370.523821149554	2.11079916033934e-34	x = 1, y = 3
-Inf	306.32292175293	2.58914169535274e-05	x = 2, y = 3
-Inf	307.031265258789	0.2786685526371	x = 2, y = 3
-Inf	307.614593505859	2.96689468086697e-05	x = 2, y = 3
-Inf	308.266668701172	0.630028009414673	x = 2, y = 3
-Inf	308.718757629395	3.5055691114394e-05	x = 2, y = 3
-Inf	309.250011444092	3.4764433554102e-09	x = 2, y = 3
-Inf	309.833347865513	2.08417769262566e-13	x = 2, y = 3
-Inf	310.361124674479	1.65365266219334e-17	x = 2, y = 3
-Inf	310.902786254883	1.14908291585848e-21	x = 2, y = 3
-Inf	311.430557250977	7.77481833182232e-26	x = 2, y = 3
-Inf	311.986119588216	6.04272858040201e-30	x = 2, y = 3
-Inf	312.516674804688	3.61853642833949e-34	x = 2, y = 3
-Inf	328.937515258789	1.3272477388382	x = 2, y = 3
-Inf	329.697925567627	0.000119319425721187	x = 2, y = 3
-Inf	330.197929382324	0.87813526391983	x = 2, y = 3
-Inf	330.712968614366	5.94691991864238e-05	x = 2, y = 3
-Inf	331.259270562066	4.48100578864796e-09	x = 2, y = 3
-Inf	331.796308729384	2.77607174444319e-13	x = 2, y = 3
-Inf	332.342600504557	2.30068624134988e-17	x = 2, y = 3
-Inf	332.879638671875	1.28379127790181e-21	x = 2, y = 3
-Inf	333.44445461697	1.15039499526719e-25	x = 2, y = 3
-Inf	334.020843505859	5.88708673366388e-30	x = 2, y = 3
-Inf	343.642865862165	0.628214061260223	x = 2, y = 3
-Inf	345.629638671875	2.52073332376312e-05	x = 2, y = 3
-Inf	346.120378282335	2.42913511527831e-09	x = 2, y = 3
-Inf	347.296308729384	3.06663314404432e-05	x = 2, y = 3
-Inf	347.814826117622	1.64383595624429e-09	x = 2, y = 3
-Inf	348.361117892795	1.4698648114625e-13	x = 2, y = 3
-Inf	348.888895670573	9.42402156952173e-18	x = 2, y = 3
-Inf	349.44445461697	6.95620575449764e-22	x = 2, y = 3
-Inf	349.96297539605	5.08223484114241e-26	x = 2, y = 3
-Inf	351.069458007812	2.63284561467787e-34	x = 2, y = 3
-Inf	370.523821149554	0.38996833562851	x = 2, y = 3
-Inf	328.937515258789	1.43404459953308	x = 3, y = 3
-Inf	329.697925567627	6.18351987213828e-05	x = 3, y = 3
-Inf	330.712968614366	3.4482751940304e-13	x = 3, y = 3
-Inf	331.259270562066	2.93395139921047e-17	x = 3, y = 3
-Inf	331.796308729384	1.94369975414076e-21	x = 3, y = 3
-Inf	332.342600504557	1.38486306848585e-25	x = 3, y = 3
-Inf	332.879638671875	1.03717248235199e-29	x = 3, y = 3
-Inf	333.44445461697	6.46787389371651e-34	x = 3, y = 3
-Inf	334.020843505859	5.33374608969737e-38	x = 3, y = 3
-Inf	345.629638671875	0.000100398268841673	x = 3, y = 3
-Inf	346.120378282335	0.700047612190247	x = 3, y = 3
-Inf	347.296308729384	0.290130436420441	x = 3, y = 3
-Inf	347.814826117622	1.69061459018849e-05	x = 3, y = 3
-Inf	348.361117892795	1.38276745609289e-09	x = 3, y = 3
-Inf	348.888895670573	9.4092654945744e-14	x = 3, y = 3
-Inf	349.44445461697	6.51254681822392e-18	x = 3, y = 3
-Inf	349.96297539605	4.97919259365601e-22	x = 3, y = 3
-Inf	387.850006103516	4.42154814663809e-05	x = 3, y = 3
-Inf	388.895843505859	2.20461995013854e-13	x = 3, y = 3
-Inf	389.854179382324	1.07776605300705e-21	x = 3, y = 3
-Inf	391.083335876465	5.18557991695755e-30	x = 3, y = 3
-Inf	391.972229003906	2.46211811583847e-38	x = 3, y = 3
-Inf	394.083351135254	0.225453585386276	x = 3, y = 3
-Inf	394.791679382324	0.310508847236633	x = 3, y = 3
-Inf	395.270843505859	2.11353399208747e-05	x = 3, y = 3
-Inf	395.816680908203	1.37501721120259e-09	x = 3, y = 3
-Inf	396.383337402344	9.99066823194339e-14	x = 3, y = 3
-Inf	396.916674804687	7.3794850397387e-18	x = 3, y = 3
+Inf	304.595254080636	1.76512676262064e-05	xy_1_1
+Inf	305.119057791574	1.62699820283052e-09	xy_1_1
+Inf	305.66667175293	1.02237303638199e-13	xy_1_1
+Inf	306.32292175293	7.71168242810122e-18	xy_1_1
+Inf	307.031265258789	5.54882387838857e-22	xy_1_1
+Inf	307.614593505859	3.61475171997316e-26	xy_1_1
+Inf	308.718757629395	1.67789168240286e-34	xy_1_1
+Inf	309.250011444092	1.43981749664202e-38	xy_1_1
+Inf	321.050012207031	1.5556590571819e-38	xy_1_1
+Inf	328.000010172526	0.481155782938004	xy_1_1
+Inf	329.152786254883	2.47849035263062	xy_1_1
+Inf	330.197929382324	1.09462394703996e-08	xy_1_1
+Inf	330.712968614366	5.96421675068404e-13	xy_1_1
+Inf	331.259270562066	5.44180783738833e-17	xy_1_1
+Inf	331.796308729384	2.72964412068832e-21	xy_1_1
+Inf	332.342600504557	2.65403450832136e-25	xy_1_1
+Inf	332.879638671875	1.38079261482617e-29	xy_1_1
+Inf	333.44445461697	1.27447841383671e-33	xy_1_1
+Inf	343.642865862165	0.282461315393448	xy_1_1
+Inf	344.611124674479	0.638258039951324	xy_1_1
+Inf	345.629638671875	7.93658109614626e-05	xy_1_1
+Inf	346.120378282335	6.64322641341641e-09	xy_1_1
+Inf	346.700012207031	3.66650991252132e-13	xy_1_1
+Inf	347.296308729384	3.31281302377731e-17	xy_1_1
+Inf	347.814826117622	1.67992344863529e-21	xy_1_1
+Inf	348.361117892795	1.61966283306326e-25	xy_1_1
+Inf	348.888895670573	8.15391718679523e-30	xy_1_1
+Inf	349.44445461697	7.79337969080295e-34	xy_1_1
+Inf	349.96297539605	4.78329195057699e-38	xy_1_1
+Inf	365.979179382324	3.88570062627783e-13	xy_1_1
+Inf	366.562515258789	1.91497258346089e-17	xy_1_1
+Inf	367.083343505859	1.88767583715038e-21	xy_1_1
+Inf	367.645835876465	0.235070616006851	xy_1_1
+Inf	368.222229003906	1.47346945595928e-05	xy_1_1
+Inf	368.666680908203	1.13727949280218e-09	xy_1_1
+Inf	369.216674804688	6.86236075017783e-14	xy_1_1
+Inf	369.766680908203	5.79879376075753e-18	xy_1_1
+Inf	370.523821149554	2.65765684162034e-05	xy_1_1
+Inf	306.32292175293	1.93815667444142e-05	xy_2_1
+Inf	307.031265258789	1.36712752230039e-09	xy_2_1
+Inf	307.614593505859	9.10052605105835e-14	xy_2_1
+Inf	308.266668701172	0.399492412805557	xy_2_1
+Inf	308.718757629395	2.19716112042079e-05	xy_2_1
+Inf	309.250011444092	1.93809390758304e-09	xy_2_1
+Inf	309.833347865513	1.00940015081239e-13	xy_2_1
+Inf	310.361124674479	9.53307623430011e-18	xy_2_1
+Inf	310.902786254883	4.60080996999485e-22	xy_2_1
+Inf	311.430557250977	0.37831038236618	xy_2_1
+Inf	311.986119588216	3.04782115563285e-05	xy_2_1
+Inf	312.516674804688	1.61912494522909e-09	xy_2_1
+Inf	328.937515258789	2.02454543113708	xy_2_1
+Inf	329.697925567627	4.36672562500462e-05	xy_2_1
+Inf	330.197929382324	0.291347920894623	xy_2_1
+Inf	330.712968614366	2.65860908257309e-05	xy_2_1
+Inf	331.259270562066	1.33338984298348e-09	xy_2_1
+Inf	331.796308729384	0.256167501211166	xy_2_1
+Inf	332.342600504557	1.61519819812384e-05	xy_2_1
+Inf	332.879638671875	0.473990738391876	xy_2_1
+Inf	333.44445461697	3.11978510580957e-05	xy_2_1
+Inf	334.020843505859	2.16568318833765e-09	xy_2_1
+Inf	343.642865862165	4.07043262384832e-05	xy_2_1
+Inf	345.629638671875	0.388675004243851	xy_2_1
+Inf	346.120378282335	1.22390151023865	xy_2_1
+Inf	347.296308729384	2.53151047218125e-05	xy_2_1
+Inf	347.814826117622	2.07963690712631e-09	xy_2_1
+Inf	348.361117892795	1.17175312421697e-13	xy_2_1
+Inf	348.888895670573	1.04223425420895e-17	xy_2_1
+Inf	349.44445461697	5.37785487481536e-22	xy_2_1
+Inf	349.96297539605	0.309614509344101	xy_2_1
+Inf	351.069458007812	1.2832610529756e-09	xy_2_1
+Inf	370.523821149554	2.16230963798365e-13	xy_2_1
+Inf	328.937515258789	1.43158733844757	xy_3_1
+Inf	329.697925567627	4.62229545519222e-05	xy_3_1
+Inf	330.712968614366	2.11953542282421e-13	xy_3_1
+Inf	331.259270562066	2.03012902874583e-17	xy_3_1
+Inf	331.796308729384	9.94915412632575e-22	xy_3_1
+Inf	332.342600504557	9.78378697984054e-26	xy_3_1
+Inf	332.879638671875	5.89565674575821e-30	xy_3_1
+Inf	333.44445461697	4.65177644766935e-34	xy_3_1
+Inf	334.020843505859	3.24418811371231e-38	xy_3_1
+Inf	345.629638671875	3.101946276729e-05	xy_3_1
+Inf	346.120378282335	2.42813036344103e-09	xy_3_1
+Inf	347.296308729384	1.2331086620974e-17	xy_3_1
+Inf	347.814826117622	6.65060432147639e-22	xy_3_1
+Inf	348.361117892795	6.1151591415287e-26	xy_3_1
+Inf	348.888895670573	3.04086320241335e-30	xy_3_1
+Inf	349.44445461697	2.97658725432968e-34	xy_3_1
+Inf	349.96297539605	1.58814465883111e-38	xy_3_1
+Inf	387.850006103516	2.8698808819172e-05	xy_3_1
+Inf	388.895843505859	1.5247652858201e-13	xy_3_1
+Inf	389.854179382324	9.39855267846122e-18	xy_3_1
+Inf	391.083335876465	3.90465670032414e-30	xy_3_1
+Inf	391.972229003906	1.99175119954855e-34	xy_3_1
+Inf	394.083351135254	3.94045773788321e-09	xy_3_1
+Inf	394.791679382324	9.62898286324196e-18	xy_3_1
+Inf	395.270843505859	0.23992046713829	xy_3_1
+Inf	395.816680908203	1.69494323927211e-05	xy_3_1
+Inf	396.383337402344	1.12639098048817e-09	xy_3_1
+Inf	396.916674804687	8.86759402344249e-14	xy_3_1
+Inf	304.595254080636	1.17177887401856e-13	xy_1_2
+Inf	305.119057791574	5.69736818276873e-18	xy_1_2
+Inf	305.66667175293	5.6757509669499e-22	xy_1_2
+Inf	306.32292175293	0.401378452777863	xy_1_2
+Inf	307.031265258789	0.968722462654114	xy_1_2
+Inf	307.614593505859	5.86232454224955e-05	xy_1_2
+Inf	308.718757629395	2.7437655012591e-13	xy_1_2
+Inf	309.250011444092	2.22135184510828e-17	xy_1_2
+Inf	321.050012207031	1.50940976188625e-38	xy_1_2
+Inf	328.000010172526	0.217953696846962	xy_1_2
+Inf	329.152786254883	1.6380660533905	xy_1_2
+Inf	330.197929382324	0.533841967582703	xy_1_2
+Inf	330.712968614366	2.71527351287659e-05	xy_1_2
+Inf	331.259270562066	2.59207522113059e-09	xy_1_2
+Inf	331.796308729384	1.59223044362937e-13	xy_1_2
+Inf	332.342600504557	1.2307215842857e-17	xy_1_2
+Inf	332.879638671875	8.70707862088559e-22	xy_1_2
+Inf	333.44445461697	5.77743854353985e-26	xy_1_2
+Inf	343.642865862165	0.662226140499115	xy_1_2
+Inf	344.611124674479	0.267281413078308	xy_1_2
+Inf	345.629638671875	2.6464356778888e-05	xy_1_2
+Inf	346.120378282335	0.933241784572601	xy_1_2
+Inf	346.700012207031	5.34617865923792e-05	xy_1_2
+Inf	347.296308729384	2.65817307081306e-05	xy_1_2
+Inf	347.814826117622	2.63146238133061e-09	xy_1_2
+Inf	348.361117892795	1.46233204581861e-13	xy_1_2
+Inf	348.888895670573	1.25829507097872e-17	xy_1_2
+Inf	349.44445461697	8.27559972606905e-22	xy_1_2
+Inf	349.96297539605	5.94295388740686e-26	xy_1_2
+Inf	365.979179382324	4.37134549429175e-05	xy_1_2
+Inf	366.562515258789	2.64647725956024e-09	xy_1_2
+Inf	367.083343505859	2.23088989772732e-13	xy_1_2
+Inf	367.645835876465	1.22170415755601e-17	xy_1_2
+Inf	368.222229003906	1.11046018496466e-21	xy_1_2
+Inf	368.666680908203	5.59376337511562e-26	xy_1_2
+Inf	369.216674804688	5.42113770011657e-30	xy_1_2
+Inf	369.766680908203	2.78554944810064e-34	xy_1_2
+Inf	370.523821149554	2.60531652564813e-38	xy_1_2
+Inf	306.32292175293	2.31608719332144e-05	xy_2_2
+Inf	307.031265258789	0.447774022817612	xy_2_2
+Inf	307.614593505859	0.428305774927139	xy_2_2
+Inf	308.266668701172	2.67954346782062e-05	xy_2_2
+Inf	308.718757629395	2.22558682594354e-09	xy_2_2
+Inf	309.250011444092	1.23887540308919e-13	xy_2_2
+Inf	309.833347865513	1.11220637212349e-17	xy_2_2
+Inf	310.361124674479	5.68033014673253e-22	xy_2_2
+Inf	310.902786254883	5.44664266518465e-26	xy_2_2
+Inf	311.430557250977	2.68241453784197e-30	xy_2_2
+Inf	311.986119588216	2.62427828124129e-34	xy_2_2
+Inf	312.516674804688	1.58696420500477e-38	xy_2_2
+Inf	328.937515258789	2.37836694717407	xy_2_2
+Inf	329.697925567627	2.56914954661625e-05	xy_2_2
+Inf	330.197929382324	2.05684469456457e-09	xy_2_2
+Inf	330.712968614366	1.42042993578166e-13	xy_2_2
+Inf	331.259270562066	9.67603620520642e-18	xy_2_2
+Inf	331.796308729384	7.48378431587693e-22	xy_2_2
+Inf	332.342600504557	4.50551773856038e-26	xy_2_2
+Inf	332.879638671875	3.81384647033894e-30	xy_2_2
+Inf	333.44445461697	2.07898068639674e-34	xy_2_2
+Inf	334.020843505859	1.92182899577831e-38	xy_2_2
+Inf	343.642865862165	3.78152206840319e-30	xy_2_2
+Inf	345.629638671875	2.89905474346597e-05	xy_2_2
+Inf	346.120378282335	2.03336369963836e-09	xy_2_2
+Inf	347.296308729384	1.5656460163882e-05	xy_2_2
+Inf	347.814826117622	1.26892807372769e-09	xy_2_2
+Inf	348.361117892795	7.2568185727033e-14	xy_2_2
+Inf	348.888895670573	6.38326717387832e-18	xy_2_2
+Inf	349.44445461697	3.33466297356616e-22	xy_2_2
+Inf	349.96297539605	3.14223389850709e-26	xy_2_2
+Inf	351.069458007812	1.5203838193817e-34	xy_2_2
+Inf	370.523821149554	2.19204516215991e-38	xy_2_2
+Inf	328.937515258789	0.995543837547302	xy_3_2
+Inf	329.697925567627	3.03936976706609e-05	xy_3_2
+Inf	330.712968614366	2.97629267151933e-05	xy_3_2
+Inf	331.259270562066	1.62655666713363e-09	xy_3_2
+Inf	331.796308729384	1.42477311415937e-13	xy_3_2
+Inf	332.342600504557	9.25888240485103e-18	xy_3_2
+Inf	332.879638671875	6.73557006833172e-22	xy_3_2
+Inf	333.44445461697	4.97108094996007e-26	xy_3_2
+Inf	334.020843505859	0.268675297498703	xy_3_2
+Inf	345.629638671875	8.61570297274739e-05	xy_3_2
+Inf	346.120378282335	0.285138785839081	xy_3_2
+Inf	347.296308729384	1.30612853865841e-09	xy_3_2
+Inf	347.814826117622	1.26163240011384e-13	xy_3_2
+Inf	348.361117892795	6.39862460913097e-18	xy_3_2
+Inf	348.888895670573	6.06791151963729e-22	xy_3_2
+Inf	349.44445461697	3.743162251606e-26	xy_3_2
+Inf	349.96297539605	2.88010014996665e-30	xy_3_2
+Inf	387.850006103516	0.197833687067032	xy_3_2
+Inf	388.895843505859	1.24303778381574e-09	xy_3_2
+Inf	389.854179382324	6.66746120334285e-18	xy_3_2
+Inf	391.083335876465	0.310464262962341	xy_3_2
+Inf	391.972229003906	0.554931581020355	xy_3_2
+Inf	394.083351135254	1.74293175463129e-17	xy_3_2
+Inf	394.791679382324	1.05953142589779e-21	xy_3_2
+Inf	395.270843505859	8.90397842411612e-26	xy_3_2
+Inf	395.816680908203	4.8930473332074e-30	xy_3_2
+Inf	396.383337402344	4.43552910897872e-34	xy_3_2
+Inf	396.916674804687	2.28012433765444e-38	xy_3_2
+Inf	304.595254080636	0.279548346996307	xy_1_3
+Inf	305.119057791574	0.716848015785217	xy_1_3
+Inf	305.66667175293	6.01442479819525e-05	xy_1_3
+Inf	306.32292175293	3.80939590982621e-09	xy_1_3
+Inf	307.031265258789	2.06235797064436e-17	xy_1_3
+Inf	307.614593505859	1.33474952143388e-21	xy_1_3
+Inf	308.718757629395	6.1926750159511e-30	xy_1_3
+Inf	309.250011444092	5.40336274000115e-34	xy_1_3
+Inf	321.050012207031	0.261909782886505	xy_1_3
+Inf	328.000010172526	2.71850386646122e-09	xy_1_3
+Inf	329.152786254883	0.519839584827423	xy_1_3
+Inf	330.197929382324	2.44585240949391e-09	xy_1_3
+Inf	330.712968614366	1.88825666799612e-13	xy_1_3
+Inf	331.259270562066	1.13914243343648e-17	xy_1_3
+Inf	331.796308729384	9.62779062132945e-22	xy_1_3
+Inf	332.342600504557	5.25721990550878e-26	xy_1_3
+Inf	332.879638671875	4.78893314027823e-30	xy_1_3
+Inf	333.44445461697	2.40634231736506e-34	xy_1_3
+Inf	343.642865862165	2.33215705520706e-05	xy_1_3
+Inf	344.611124674479	1.14931461158048e-13	xy_1_3
+Inf	345.629638671875	2.49274271482136e-05	xy_1_3
+Inf	346.120378282335	2.42154163387909e-09	xy_1_3
+Inf	346.700012207031	1.25566657765974e-13	xy_1_3
+Inf	347.296308729384	1.16314638763216e-17	xy_1_3
+Inf	347.814826117622	7.28580269542504e-22	xy_1_3
+Inf	348.361117892795	5.51452352978133e-26	xy_1_3
+Inf	348.888895670573	3.95872379808908e-30	xy_1_3
+Inf	349.44445461697	2.58541051461361e-34	xy_1_3
+Inf	349.96297539605	2.00786591889092e-38	xy_1_3
+Inf	365.979179382324	0.29585200548172	xy_1_3
+Inf	366.562515258789	2.61009136011126e-05	xy_1_3
+Inf	367.083343505859	1.29202726295574e-09	xy_1_3
+Inf	367.645835876465	1.26925610321495e-13	xy_1_3
+Inf	368.222229003906	6.86202649112451e-18	xy_1_3
+Inf	368.666680908203	6.0804923995715e-22	xy_1_3
+Inf	369.216674804688	3.92168363149906e-26	xy_1_3
+Inf	369.766680908203	2.87628364894794e-30	xy_1_3
+Inf	370.523821149554	2.11079916033934e-34	xy_1_3
+Inf	306.32292175293	2.58914169535274e-05	xy_2_3
+Inf	307.031265258789	0.2786685526371	xy_2_3
+Inf	307.614593505859	2.96689468086697e-05	xy_2_3
+Inf	308.266668701172	0.630028009414673	xy_2_3
+Inf	308.718757629395	3.5055691114394e-05	xy_2_3
+Inf	309.250011444092	3.4764433554102e-09	xy_2_3
+Inf	309.833347865513	2.08417769262566e-13	xy_2_3
+Inf	310.361124674479	1.65365266219334e-17	xy_2_3
+Inf	310.902786254883	1.14908291585848e-21	xy_2_3
+Inf	311.430557250977	7.77481833182232e-26	xy_2_3
+Inf	311.986119588216	6.04272858040201e-30	xy_2_3
+Inf	312.516674804688	3.61853642833949e-34	xy_2_3
+Inf	328.937515258789	1.3272477388382	xy_2_3
+Inf	329.697925567627	0.000119319425721187	xy_2_3
+Inf	330.197929382324	0.87813526391983	xy_2_3
+Inf	330.712968614366	5.94691991864238e-05	xy_2_3
+Inf	331.259270562066	4.48100578864796e-09	xy_2_3
+Inf	331.796308729384	2.77607174444319e-13	xy_2_3
+Inf	332.342600504557	2.30068624134988e-17	xy_2_3
+Inf	332.879638671875	1.28379127790181e-21	xy_2_3
+Inf	333.44445461697	1.15039499526719e-25	xy_2_3
+Inf	334.020843505859	5.88708673366388e-30	xy_2_3
+Inf	343.642865862165	0.628214061260223	xy_2_3
+Inf	345.629638671875	2.52073332376312e-05	xy_2_3
+Inf	346.120378282335	2.42913511527831e-09	xy_2_3
+Inf	347.296308729384	3.06663314404432e-05	xy_2_3
+Inf	347.814826117622	1.64383595624429e-09	xy_2_3
+Inf	348.361117892795	1.4698648114625e-13	xy_2_3
+Inf	348.888895670573	9.42402156952173e-18	xy_2_3
+Inf	349.44445461697	6.95620575449764e-22	xy_2_3
+Inf	349.96297539605	5.08223484114241e-26	xy_2_3
+Inf	351.069458007812	2.63284561467787e-34	xy_2_3
+Inf	370.523821149554	0.38996833562851	xy_2_3
+Inf	328.937515258789	1.43404459953308	xy_3_3
+Inf	329.697925567627	6.18351987213828e-05	xy_3_3
+Inf	330.712968614366	3.4482751940304e-13	xy_3_3
+Inf	331.259270562066	2.93395139921047e-17	xy_3_3
+Inf	331.796308729384	1.94369975414076e-21	xy_3_3
+Inf	332.342600504557	1.38486306848585e-25	xy_3_3
+Inf	332.879638671875	1.03717248235199e-29	xy_3_3
+Inf	333.44445461697	6.46787389371651e-34	xy_3_3
+Inf	334.020843505859	5.33374608969737e-38	xy_3_3
+Inf	345.629638671875	0.000100398268841673	xy_3_3
+Inf	346.120378282335	0.700047612190247	xy_3_3
+Inf	347.296308729384	0.290130436420441	xy_3_3
+Inf	347.814826117622	1.69061459018849e-05	xy_3_3
+Inf	348.361117892795	1.38276745609289e-09	xy_3_3
+Inf	348.888895670573	9.4092654945744e-14	xy_3_3
+Inf	349.44445461697	6.51254681822392e-18	xy_3_3
+Inf	349.96297539605	4.97919259365601e-22	xy_3_3
+Inf	387.850006103516	4.42154814663809e-05	xy_3_3
+Inf	388.895843505859	2.20461995013854e-13	xy_3_3
+Inf	389.854179382324	1.07776605300705e-21	xy_3_3
+Inf	391.083335876465	5.18557991695755e-30	xy_3_3
+Inf	391.972229003906	2.46211811583847e-38	xy_3_3
+Inf	394.083351135254	0.225453585386276	xy_3_3
+Inf	394.791679382324	0.310508847236633	xy_3_3
+Inf	395.270843505859	2.11353399208747e-05	xy_3_3
+Inf	395.816680908203	1.37501721120259e-09	xy_3_3
+Inf	396.383337402344	9.99066823194339e-14	xy_3_3
+Inf	396.916674804687	7.3794850397387e-18	xy_3_3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/masspeaks3_forinput.tabular	Mon Oct 01 01:09:28 2018 -0400
@@ -0,0 +1,298 @@
+snr	mass	intensity	spectrum
+Inf	304.595254080636	1.76512676262064e-05	xy_1_1
+Inf	305.119057791574	1.62699820283052e-09	xy_1_1
+Inf	305.66667175293	1.02237303638199e-13	xy_1_1
+Inf	306.32292175293	7.71168242810122e-18	xy_1_1
+Inf	307.031265258789	5.54882387838857e-22	xy_1_1
+Inf	307.614593505859	3.61475171997316e-26	xy_1_1
+Inf	308.718757629395	1.67789168240286e-34	xy_1_1
+Inf	309.250011444092	1.43981749664202e-38	xy_1_1
+Inf	321.050012207031	1.5556590571819e-38	xy_1_1
+Inf	328.000010172526	0.481155782938004	xy_1_1
+Inf	329.152786254883	2.47849035263062	xy_1_1
+Inf	330.197929382324	1.09462394703996e-08	xy_1_1
+Inf	330.712968614366	5.96421675068404e-13	xy_1_1
+Inf	331.259270562066	5.44180783738833e-17	xy_1_1
+Inf	331.796308729384	2.72964412068832e-21	xy_1_1
+Inf	332.342600504557	2.65403450832136e-25	xy_1_1
+Inf	332.879638671875	1.38079261482617e-29	xy_1_1
+Inf	333.44445461697	1.27447841383671e-33	xy_1_1
+Inf	343.642865862165	0.282461315393448	xy_1_1
+Inf	344.611124674479	0.638258039951324	xy_1_1
+Inf	345.629638671875	7.93658109614626e-05	xy_1_1
+Inf	346.120378282335	6.64322641341641e-09	xy_1_1
+Inf	346.700012207031	3.66650991252132e-13	xy_1_1
+Inf	347.296308729384	3.31281302377731e-17	xy_1_1
+Inf	347.814826117622	1.67992344863529e-21	xy_1_1
+Inf	348.361117892795	1.61966283306326e-25	xy_1_1
+Inf	348.888895670573	8.15391718679523e-30	xy_1_1
+Inf	349.44445461697	7.79337969080295e-34	xy_1_1
+Inf	349.96297539605	4.78329195057699e-38	xy_1_1
+Inf	365.979179382324	3.88570062627783e-13	xy_1_1
+Inf	366.562515258789	1.91497258346089e-17	xy_1_1
+Inf	367.083343505859	1.88767583715038e-21	xy_1_1
+Inf	367.645835876465	0.235070616006851	xy_1_1
+Inf	368.222229003906	1.47346945595928e-05	xy_1_1
+Inf	368.666680908203	1.13727949280218e-09	xy_1_1
+Inf	369.216674804688	6.86236075017783e-14	xy_1_1
+Inf	369.766680908203	5.79879376075753e-18	xy_1_1
+Inf	370.523821149554	2.65765684162034e-05	xy_1_1
+Inf	306.32292175293	1.93815667444142e-05	xy_2_1
+Inf	307.031265258789	1.36712752230039e-09	xy_2_1
+Inf	307.614593505859	9.10052605105835e-14	xy_2_1
+Inf	308.266668701172	0.399492412805557	xy_2_1
+Inf	308.718757629395	2.19716112042079e-05	xy_2_1
+Inf	309.250011444092	1.93809390758304e-09	xy_2_1
+Inf	309.833347865513	1.00940015081239e-13	xy_2_1
+Inf	310.361124674479	9.53307623430011e-18	xy_2_1
+Inf	310.902786254883	4.60080996999485e-22	xy_2_1
+Inf	311.430557250977	0.37831038236618	xy_2_1
+Inf	311.986119588216	3.04782115563285e-05	xy_2_1
+Inf	312.516674804688	1.61912494522909e-09	xy_2_1
+Inf	328.937515258789	2.02454543113708	xy_2_1
+Inf	329.697925567627	4.36672562500462e-05	xy_2_1
+Inf	330.197929382324	0.291347920894623	xy_2_1
+Inf	330.712968614366	2.65860908257309e-05	xy_2_1
+Inf	331.259270562066	1.33338984298348e-09	xy_2_1
+Inf	331.796308729384	0.256167501211166	xy_2_1
+Inf	332.342600504557	1.61519819812384e-05	xy_2_1
+Inf	332.879638671875	0.473990738391876	xy_2_1
+Inf	333.44445461697	3.11978510580957e-05	xy_2_1
+Inf	334.020843505859	2.16568318833765e-09	xy_2_1
+Inf	343.642865862165	4.07043262384832e-05	xy_2_1
+Inf	345.629638671875	0.388675004243851	xy_2_1
+Inf	346.120378282335	1.22390151023865	xy_2_1
+Inf	347.296308729384	2.53151047218125e-05	xy_2_1
+Inf	347.814826117622	2.07963690712631e-09	xy_2_1
+Inf	348.361117892795	1.17175312421697e-13	xy_2_1
+Inf	348.888895670573	1.04223425420895e-17	xy_2_1
+Inf	349.44445461697	5.37785487481536e-22	xy_2_1
+Inf	349.96297539605	0.309614509344101	xy_2_1
+Inf	351.069458007812	1.2832610529756e-09	xy_2_1
+Inf	370.523821149554	2.16230963798365e-13	xy_2_1
+Inf	328.937515258789	1.43158733844757	xy_3_1
+Inf	329.697925567627	4.62229545519222e-05	xy_3_1
+Inf	330.712968614366	2.11953542282421e-13	xy_3_1
+Inf	331.259270562066	2.03012902874583e-17	xy_3_1
+Inf	331.796308729384	9.94915412632575e-22	xy_3_1
+Inf	332.342600504557	9.78378697984054e-26	xy_3_1
+Inf	332.879638671875	5.89565674575821e-30	xy_3_1
+Inf	333.44445461697	4.65177644766935e-34	xy_3_1
+Inf	334.020843505859	3.24418811371231e-38	xy_3_1
+Inf	345.629638671875	3.101946276729e-05	xy_3_1
+Inf	346.120378282335	2.42813036344103e-09	xy_3_1
+Inf	347.296308729384	1.2331086620974e-17	xy_3_1
+Inf	347.814826117622	6.65060432147639e-22	xy_3_1
+Inf	348.361117892795	6.1151591415287e-26	xy_3_1
+Inf	348.888895670573	3.04086320241335e-30	xy_3_1
+Inf	349.44445461697	2.97658725432968e-34	xy_3_1
+Inf	349.96297539605	1.58814465883111e-38	xy_3_1
+Inf	387.850006103516	2.8698808819172e-05	xy_3_1
+Inf	388.895843505859	1.5247652858201e-13	xy_3_1
+Inf	389.854179382324	9.39855267846122e-18	xy_3_1
+Inf	391.083335876465	3.90465670032414e-30	xy_3_1
+Inf	391.972229003906	1.99175119954855e-34	xy_3_1
+Inf	394.083351135254	3.94045773788321e-09	xy_3_1
+Inf	394.791679382324	9.62898286324196e-18	xy_3_1
+Inf	395.270843505859	0.23992046713829	xy_3_1
+Inf	395.816680908203	1.69494323927211e-05	xy_3_1
+Inf	396.383337402344	1.12639098048817e-09	xy_3_1
+Inf	396.916674804687	8.86759402344249e-14	xy_3_1
+Inf	304.595254080636	1.17177887401856e-13	xy_1_2
+Inf	305.119057791574	5.69736818276873e-18	xy_1_2
+Inf	305.66667175293	5.6757509669499e-22	xy_1_2
+Inf	306.32292175293	0.401378452777863	xy_1_2
+Inf	307.031265258789	0.968722462654114	xy_1_2
+Inf	307.614593505859	5.86232454224955e-05	xy_1_2
+Inf	308.718757629395	2.7437655012591e-13	xy_1_2
+Inf	309.250011444092	2.22135184510828e-17	xy_1_2
+Inf	321.050012207031	1.50940976188625e-38	xy_1_2
+Inf	328.000010172526	0.217953696846962	xy_1_2
+Inf	329.152786254883	1.6380660533905	xy_1_2
+Inf	330.197929382324	0.533841967582703	xy_1_2
+Inf	330.712968614366	2.71527351287659e-05	xy_1_2
+Inf	331.259270562066	2.59207522113059e-09	xy_1_2
+Inf	331.796308729384	1.59223044362937e-13	xy_1_2
+Inf	332.342600504557	1.2307215842857e-17	xy_1_2
+Inf	332.879638671875	8.70707862088559e-22	xy_1_2
+Inf	333.44445461697	5.77743854353985e-26	xy_1_2
+Inf	343.642865862165	0.662226140499115	xy_1_2
+Inf	344.611124674479	0.267281413078308	xy_1_2
+Inf	345.629638671875	2.6464356778888e-05	xy_1_2
+Inf	346.120378282335	0.933241784572601	xy_1_2
+Inf	346.700012207031	5.34617865923792e-05	xy_1_2
+Inf	347.296308729384	2.65817307081306e-05	xy_1_2
+Inf	347.814826117622	2.63146238133061e-09	xy_1_2
+Inf	348.361117892795	1.46233204581861e-13	xy_1_2
+Inf	348.888895670573	1.25829507097872e-17	xy_1_2
+Inf	349.44445461697	8.27559972606905e-22	xy_1_2
+Inf	349.96297539605	5.94295388740686e-26	xy_1_2
+Inf	365.979179382324	4.37134549429175e-05	xy_1_2
+Inf	366.562515258789	2.64647725956024e-09	xy_1_2
+Inf	367.083343505859	2.23088989772732e-13	xy_1_2
+Inf	367.645835876465	1.22170415755601e-17	xy_1_2
+Inf	368.222229003906	1.11046018496466e-21	xy_1_2
+Inf	368.666680908203	5.59376337511562e-26	xy_1_2
+Inf	369.216674804688	5.42113770011657e-30	xy_1_2
+Inf	369.766680908203	2.78554944810064e-34	xy_1_2
+Inf	370.523821149554	2.60531652564813e-38	xy_1_2
+Inf	306.32292175293	2.31608719332144e-05	xy_2_2
+Inf	307.031265258789	0.447774022817612	xy_2_2
+Inf	307.614593505859	0.428305774927139	xy_2_2
+Inf	308.266668701172	2.67954346782062e-05	xy_2_2
+Inf	308.718757629395	2.22558682594354e-09	xy_2_2
+Inf	309.250011444092	1.23887540308919e-13	xy_2_2
+Inf	309.833347865513	1.11220637212349e-17	xy_2_2
+Inf	310.361124674479	5.68033014673253e-22	xy_2_2
+Inf	310.902786254883	5.44664266518465e-26	xy_2_2
+Inf	311.430557250977	2.68241453784197e-30	xy_2_2
+Inf	311.986119588216	2.62427828124129e-34	xy_2_2
+Inf	312.516674804688	1.58696420500477e-38	xy_2_2
+Inf	328.937515258789	2.37836694717407	xy_2_2
+Inf	329.697925567627	2.56914954661625e-05	xy_2_2
+Inf	330.197929382324	2.05684469456457e-09	xy_2_2
+Inf	330.712968614366	1.42042993578166e-13	xy_2_2
+Inf	331.259270562066	9.67603620520642e-18	xy_2_2
+Inf	331.796308729384	7.48378431587693e-22	xy_2_2
+Inf	332.342600504557	4.50551773856038e-26	xy_2_2
+Inf	332.879638671875	3.81384647033894e-30	xy_2_2
+Inf	333.44445461697	2.07898068639674e-34	xy_2_2
+Inf	334.020843505859	1.92182899577831e-38	xy_2_2
+Inf	343.642865862165	3.78152206840319e-30	xy_2_2
+Inf	345.629638671875	2.89905474346597e-05	xy_2_2
+Inf	346.120378282335	2.03336369963836e-09	xy_2_2
+Inf	347.296308729384	1.5656460163882e-05	xy_2_2
+Inf	347.814826117622	1.26892807372769e-09	xy_2_2
+Inf	348.361117892795	7.2568185727033e-14	xy_2_2
+Inf	348.888895670573	6.38326717387832e-18	xy_2_2
+Inf	349.44445461697	3.33466297356616e-22	xy_2_2
+Inf	349.96297539605	3.14223389850709e-26	xy_2_2
+Inf	351.069458007812	1.5203838193817e-34	xy_2_2
+Inf	370.523821149554	2.19204516215991e-38	xy_2_2
+Inf	328.937515258789	0.995543837547302	xy_3_2
+Inf	329.697925567627	3.03936976706609e-05	xy_3_2
+Inf	330.712968614366	2.97629267151933e-05	xy_3_2
+Inf	331.259270562066	1.62655666713363e-09	xy_3_2
+Inf	331.796308729384	1.42477311415937e-13	xy_3_2
+Inf	332.342600504557	9.25888240485103e-18	xy_3_2
+Inf	332.879638671875	6.73557006833172e-22	xy_3_2
+Inf	333.44445461697	4.97108094996007e-26	xy_3_2
+Inf	334.020843505859	0.268675297498703	xy_3_2
+Inf	345.629638671875	8.61570297274739e-05	xy_3_2
+Inf	346.120378282335	0.285138785839081	xy_3_2
+Inf	347.296308729384	1.30612853865841e-09	xy_3_2
+Inf	347.814826117622	1.26163240011384e-13	xy_3_2
+Inf	348.361117892795	6.39862460913097e-18	xy_3_2
+Inf	348.888895670573	6.06791151963729e-22	xy_3_2
+Inf	349.44445461697	3.743162251606e-26	xy_3_2
+Inf	349.96297539605	2.88010014996665e-30	xy_3_2
+Inf	387.850006103516	0.197833687067032	xy_3_2
+Inf	388.895843505859	1.24303778381574e-09	xy_3_2
+Inf	389.854179382324	6.66746120334285e-18	xy_3_2
+Inf	391.083335876465	0.310464262962341	xy_3_2
+Inf	391.972229003906	0.554931581020355	xy_3_2
+Inf	394.083351135254	1.74293175463129e-17	xy_3_2
+Inf	394.791679382324	1.05953142589779e-21	xy_3_2
+Inf	395.270843505859	8.90397842411612e-26	xy_3_2
+Inf	395.816680908203	4.8930473332074e-30	xy_3_2
+Inf	396.383337402344	4.43552910897872e-34	xy_3_2
+Inf	396.916674804687	2.28012433765444e-38	xy_3_2
+Inf	304.595254080636	0.279548346996307	xy_1_3
+Inf	305.119057791574	0.716848015785217	xy_1_3
+Inf	305.66667175293	6.01442479819525e-05	xy_1_3
+Inf	306.32292175293	3.80939590982621e-09	xy_1_3
+Inf	307.031265258789	2.06235797064436e-17	xy_1_3
+Inf	307.614593505859	1.33474952143388e-21	xy_1_3
+Inf	308.718757629395	6.1926750159511e-30	xy_1_3
+Inf	309.250011444092	5.40336274000115e-34	xy_1_3
+Inf	321.050012207031	0.261909782886505	xy_1_3
+Inf	328.000010172526	2.71850386646122e-09	xy_1_3
+Inf	329.152786254883	0.519839584827423	xy_1_3
+Inf	330.197929382324	2.44585240949391e-09	xy_1_3
+Inf	330.712968614366	1.88825666799612e-13	xy_1_3
+Inf	331.259270562066	1.13914243343648e-17	xy_1_3
+Inf	331.796308729384	9.62779062132945e-22	xy_1_3
+Inf	332.342600504557	5.25721990550878e-26	xy_1_3
+Inf	332.879638671875	4.78893314027823e-30	xy_1_3
+Inf	333.44445461697	2.40634231736506e-34	xy_1_3
+Inf	343.642865862165	2.33215705520706e-05	xy_1_3
+Inf	344.611124674479	1.14931461158048e-13	xy_1_3
+Inf	345.629638671875	2.49274271482136e-05	xy_1_3
+Inf	346.120378282335	2.42154163387909e-09	xy_1_3
+Inf	346.700012207031	1.25566657765974e-13	xy_1_3
+Inf	347.296308729384	1.16314638763216e-17	xy_1_3
+Inf	347.814826117622	7.28580269542504e-22	xy_1_3
+Inf	348.361117892795	5.51452352978133e-26	xy_1_3
+Inf	348.888895670573	3.95872379808908e-30	xy_1_3
+Inf	349.44445461697	2.58541051461361e-34	xy_1_3
+Inf	349.96297539605	2.00786591889092e-38	xy_1_3
+Inf	365.979179382324	0.29585200548172	xy_1_3
+Inf	366.562515258789	2.61009136011126e-05	xy_1_3
+Inf	367.083343505859	1.29202726295574e-09	xy_1_3
+Inf	367.645835876465	1.26925610321495e-13	xy_1_3
+Inf	368.222229003906	6.86202649112451e-18	xy_1_3
+Inf	368.666680908203	6.0804923995715e-22	xy_1_3
+Inf	369.216674804688	3.92168363149906e-26	xy_1_3
+Inf	369.766680908203	2.87628364894794e-30	xy_1_3
+Inf	370.523821149554	2.11079916033934e-34	xy_1_3
+Inf	306.32292175293	2.58914169535274e-05	xy_2_3
+Inf	307.031265258789	0.2786685526371	xy_2_3
+Inf	307.614593505859	2.96689468086697e-05	xy_2_3
+Inf	308.266668701172	0.630028009414673	xy_2_3
+Inf	308.718757629395	3.5055691114394e-05	xy_2_3
+Inf	309.250011444092	3.4764433554102e-09	xy_2_3
+Inf	309.833347865513	2.08417769262566e-13	xy_2_3
+Inf	310.361124674479	1.65365266219334e-17	xy_2_3
+Inf	310.902786254883	1.14908291585848e-21	xy_2_3
+Inf	311.430557250977	7.77481833182232e-26	xy_2_3
+Inf	311.986119588216	6.04272858040201e-30	xy_2_3
+Inf	312.516674804688	3.61853642833949e-34	xy_2_3
+Inf	328.937515258789	1.3272477388382	xy_2_3
+Inf	329.697925567627	0.000119319425721187	xy_2_3
+Inf	330.197929382324	0.87813526391983	xy_2_3
+Inf	330.712968614366	5.94691991864238e-05	xy_2_3
+Inf	331.259270562066	4.48100578864796e-09	xy_2_3
+Inf	331.796308729384	2.77607174444319e-13	xy_2_3
+Inf	332.342600504557	2.30068624134988e-17	xy_2_3
+Inf	332.879638671875	1.28379127790181e-21	xy_2_3
+Inf	333.44445461697	1.15039499526719e-25	xy_2_3
+Inf	334.020843505859	5.88708673366388e-30	xy_2_3
+Inf	343.642865862165	0.628214061260223	xy_2_3
+Inf	345.629638671875	2.52073332376312e-05	xy_2_3
+Inf	346.120378282335	2.42913511527831e-09	xy_2_3
+Inf	347.296308729384	3.06663314404432e-05	xy_2_3
+Inf	347.814826117622	1.64383595624429e-09	xy_2_3
+Inf	348.361117892795	1.4698648114625e-13	xy_2_3
+Inf	348.888895670573	9.42402156952173e-18	xy_2_3
+Inf	349.44445461697	6.95620575449764e-22	xy_2_3
+Inf	349.96297539605	5.08223484114241e-26	xy_2_3
+Inf	351.069458007812	2.63284561467787e-34	xy_2_3
+Inf	370.523821149554	0.38996833562851	xy_2_3
+Inf	328.937515258789	1.43404459953308	xy_3_3
+Inf	329.697925567627	6.18351987213828e-05	xy_3_3
+Inf	330.712968614366	3.4482751940304e-13	xy_3_3
+Inf	331.259270562066	2.93395139921047e-17	xy_3_3
+Inf	331.796308729384	1.94369975414076e-21	xy_3_3
+Inf	332.342600504557	1.38486306848585e-25	xy_3_3
+Inf	332.879638671875	1.03717248235199e-29	xy_3_3
+Inf	333.44445461697	6.46787389371651e-34	xy_3_3
+Inf	334.020843505859	5.33374608969737e-38	xy_3_3
+Inf	345.629638671875	0.000100398268841673	xy_3_3
+Inf	346.120378282335	0.700047612190247	xy_3_3
+Inf	347.296308729384	0.290130436420441	xy_3_3
+Inf	347.814826117622	1.69061459018849e-05	xy_3_3
+Inf	348.361117892795	1.38276745609289e-09	xy_3_3
+Inf	348.888895670573	9.4092654945744e-14	xy_3_3
+Inf	349.44445461697	6.51254681822392e-18	xy_3_3
+Inf	349.96297539605	4.97919259365601e-22	xy_3_3
+Inf	387.850006103516	4.42154814663809e-05	xy_3_3
+Inf	388.895843505859	2.20461995013854e-13	xy_3_3
+Inf	389.854179382324	1.07776605300705e-21	xy_3_3
+Inf	391.083335876465	5.18557991695755e-30	xy_3_3
+Inf	391.972229003906	2.46211811583847e-38	xy_3_3
+Inf	394.083351135254	0.225453585386276	xy_3_3
+Inf	394.791679382324	0.310508847236633	xy_3_3
+Inf	395.270843505859	2.11353399208747e-05	xy_3_3
+Inf	395.816680908203	1.37501721120259e-09	xy_3_3
+Inf	396.383337402344	9.99066823194339e-14	xy_3_3
+Inf	396.916674804687	7.3794850397387e-18	xy_3_3
Binary file test-data/peakdetection1_QC.pdf has changed
Binary file test-data/peakdetection2_QC.pdf has changed
Binary file test-data/peakdetection3_QC.pdf has changed