changeset 3:fe28ca73548a draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/msi_spectra_plots commit a7be47698f53eb4f00961192327d93e8989276a7
author galaxyp
date Mon, 11 Jun 2018 17:34:44 -0400
parents ea4f1c516368
children 9eef2792afa4
files msi_spectra_plots.xml test-data/123_combined.RData test-data/123_combined.rdata test-data/Example_Continuous.ibd test-data/Example_Continuous.imzML test-data/Plot_analyze75.pdf test-data/Plot_empty_spectra.pdf test-data/Plot_imzml.pdf test-data/Plot_rdata.pdf
diffstat 9 files changed, 371 insertions(+), 438 deletions(-) [+]
line wrap: on
line diff
--- a/msi_spectra_plots.xml	Mon May 28 12:39:59 2018 -0400
+++ b/msi_spectra_plots.xml	Mon Jun 11 17:34:44 2018 -0400
@@ -1,4 +1,4 @@
-<tool id="mass_spectrometry_imaging_mzplots" name="MSI plot spectra" version="1.10.0.0">
+<tool id="mass_spectrometry_imaging_mzplots" name="MSI plot spectra" version="1.10.0.1">
     <description>
         mass spectrometry imaging mass spectra plots
     </description>
@@ -24,6 +24,7 @@
     </command>
     <configfiles>
         <configfile name="MSI_mzplots"><![CDATA[
+
 ################################# load libraries and read file #################
 
 library(Cardinal)
@@ -41,9 +42,9 @@
 
 ###################################### file properties in numbers ##############
 
-## Number of features (mz)
+## Number of features (m/z)
 maxfeatures = length(features(msidata))
-## Range mz
+## Range m/z
 minmz = round(min(mz(msidata)), digits=2)
 maxmz = round(max(mz(msidata)), digits=2)
 ## Number of spectra (pixels)
@@ -60,7 +61,7 @@
 medint = round(median(spectra(msidata)[]), digits=2)
 ## Number of intensities > 0
 npeaks= sum(spectra(msidata)[]>0)
-## Spectra multiplied with mz (potential number of peaks)
+## Spectra multiplied with m/z (potential number of peaks)
 numpeaks = ncol(spectra(msidata)[])*nrow(spectra(msidata)[])
 ## Percentage of intensities > 0
 percpeaks = round(npeaks/numpeaks*100, digits=2)
@@ -99,8 +100,8 @@
   peakpickinginfo=processinginfo@peakPicking
 }
 
-properties = c("Number of mz features",
-               "Range of mz values [Da]",
+properties = c("Number of m/z features",
+               "Range of m/z values [Da]",
                "Number of pixels", 
                "Range of x coordinates", 
                "Range of y coordinates",
@@ -133,8 +134,6 @@
 
 property_df = data.frame(properties, values)
 
-print("before pdf")
-
 ######################################## PDF ###################################
 ################################################################################
 ################################################################################
@@ -142,62 +141,50 @@
 
 pdf("mzplots.pdf", fonts = "Times", pointsize = 12)
 plot(0,type='n',axes=FALSE,ann=FALSE)
-
-title(main=paste0("Plotted mass spectra for file: \n\n", "$infile.display_name"))
+#if not $filename:
+    #set $filename = $infile.display_name
+#end if
+title(main=paste0("Plotted mass spectra for file: \n\n","$filename"))
 
 
 ############################# I) numbers ######################################
 ###############################################################################
 
-print("in pdf")
 grid.table(property_df, rows= NULL)
 
-
+if (npeaks > 0){
 
-if (npeaks > 0)
-{
     pixeldf = data.frame(matrix(ncol = 2, nrow=0))
 
+    ############################# single pixel ################################
+    ###########################################################################
 
     #if str( $pixel_conditional.pixel_type) == 'single_pixel':
-    print("single_pixel")
+        print("single_pixel")
 
         #for $chosenpixel in $pixel_conditional.repeatpixel: 
 
-
             pixelisvalid = as.character($chosenpixel.inputx %in% coord(msidata)\$x & $chosenpixel.inputy %in% coord(msidata)\$y)
             pixelname = paste0("x=", $chosenpixel.inputx,", ", "y=", $chosenpixel.inputy)
-            print(pixelname)
-            print(colnames(pixeldf))
-            print(colnames(cbind(pixelname, pixelisvalid)))
             pixeldf = rbind(pixeldf, cbind(pixelname, pixelisvalid))
-            print(colnames(pixeldf))
 
             ############################# II) control image ####################
-            ####################################################################
 
-
-                if (pixelisvalid == "TRUE")
-                {
+                if (pixelisvalid == "TRUE"){
+                    print(pixelisvalid)
 
-                print(pixelisvalid)
-
-
-                    image(msidata, mz=$chosenpixel.inputmz, 
-                          ylim = c(maximumy+(0.2*maximumy),minimumy-1),colorkey=FALSE, plusminus = $chosenpixel.plusminusinDalton, contrast.enhance = "histogram", 
-                          main= paste0("x= ",$chosenpixel.inputx, ", y= ", $chosenpixel.inputy))
+                    image(msidata, mz=$chosenpixel.inputmz, ylim = c(maximumy+(0.2*maximumy),minimumy-1),
+                    colorkey=FALSE, plusminus = $chosenpixel.plusminusinDalton, contrast.enhance = "histogram", 
+                    main= paste0("x= ",$chosenpixel.inputx, ", y= ", $chosenpixel.inputy))
 
                     abline(v=$chosenpixel.inputx, col ="$chosenpixel.inputcolour", lty="$chosenpixel.inputtype", lwd=$chosenpixel.inputwidth)
                     abline(h=$chosenpixel.inputy, col ="$chosenpixel.inputcolour", lty="$chosenpixel.inputtype", lwd=$chosenpixel.inputwidth)
 
-
             ##################### III) plot full mass spectrum #################
-            ####################################################################
 
                     plot(msidata, coord=list(x=$chosenpixel.inputx, y=$chosenpixel.inputy))
 
             ##################### IV) plot zoom-in mass spectrum ###############
-            ####################################################################
 
                     #if $chosenpixel.zoomedplot:
                         #for $token in $chosenpixel.zoomedplot:
@@ -210,33 +197,39 @@
 
                         #end for
                     #end if
-
                 }else{
                     print("The pixel coordinates did not correspond to a real pixel")}
-
         #end for
 
     colnames(pixeldf) = c("pixel coordinates", "coordinates were found in this file")
 
-    #elif str( $pixel_conditional.pixel_type) == 'sample_pixel':
-    print("sample_pixel")
+
+    ############################# sample pixel ################################
+    ###########################################################################
 
-            ##################### I) Sample: plot full mass spectrum ###########
-        plot(msidata, pixel=1:ncol(msidata), pixel.groups=pData(msidata)\$sample, key=TRUE, col=c("blue", "orange", "green", "red", "yellow", "grey"), superpose=TRUE)
+    #elif str( $pixel_conditional.pixel_type) == 'sample_pixel':
+        print("sample_pixel")
 
-            ##################### II) Sample: plot zoom-in mass spectrum #######
+        ##################### I) Sample: plot full mass spectrum ##############
+
+        plot(msidata, pixel=1:ncol(msidata), pixel.groups=msidata\$combined_sample, key=TRUE, col=c("blue", "orange", "green", "red", "yellow", "grey"), superpose=TRUE)
+
+        ##################### II) Sample: plot zoom-in mass spectrum ##########
 
         #if $pixel_conditional.zoomed_sample:
             #for $token in $pixel_conditional.zoomed_sample:
 
                 minmasspixel = features(msidata, mz=$token.xlimmin)
                 maxmasspixel = features(msidata, mz=$token.xlimmax)
-                plot(msidata[minmasspixel:maxmasspixel,], pixel=1:ncol(msidata),  xlim= c($token.xlimmin,$token.xlimmax),pixel.groups=pData(msidata)\$sample, key=TRUE,col=c("blue", "orange", "green", "red", "yellow", "grey"), superpose=TRUE)
+
+                plot(msidata[minmasspixel:maxmasspixel,], pixel=1:ncol(msidata),
+                xlim= c($token.xlimmin,$token.xlimmax),pixel.groups=msidata\$combined_sample,
+                key=TRUE,col=c("blue", "orange", "green", "red", "yellow", "grey"), superpose=TRUE)
 
             #end for
         #end if
 
-        pixeldf = data.frame(table(pData(msidata)\$sample))
+        pixeldf = data.frame(table(msidata\$combined_sample))
         colnames(pixeldf) = c("sample name", "number of pixels")
 
     #end if
@@ -247,7 +240,6 @@
 
     dev.off()
 
-
 }else{
     print("Inputfile has no intensities > 0")
     dev.off()
@@ -257,6 +249,7 @@
     <inputs>
         <param name="infile" type="data" format="imzml,rdata,analyze75" label="Inputfile as imzML, Analyze7.5 or Cardinal MSImageSet saved as RData"
             help="Upload composite datatype imzml (ibd+imzML) or analyze75 (hdr+img+t2m) or regular upload .RData (Cardinal MSImageSet)"/>
+        <param name="filename" type="text" value="" label="Title" help="will appear in the pdf output. If nothing given it will take the dataset name"/>
         <conditional name="pixel_conditional">
             <param name="pixel_type" type="select" label="Select if you want to plot the mass spectrum of a single pixel or of all pixels of a sample">
                 <option value="single_pixel" selected="True">Single pixel</option>
@@ -266,8 +259,8 @@
                 <repeat name="repeatpixel" title="Plot mass spectra for pixel of interest" min="1" max="20">
                     <param name="inputx" type="integer" value="" label="x-coordinate of pixel of interest" help="x-value of the pixel of interest"/>
                     <param name="inputy" type="integer" value="" label="y-coordinate of pixel of interest" help="y-value of the pixel of interest"/>
-                    <param name="inputmz" type="float" value="1296.7" label="Next parameters are to control heatmap image which will be plotted, here mz in Dalton" help="mz will be displayed as heatmap and the pixel of interest will be visualized by the intersection of two lines"/>
-                    <param name="plusminusinDalton" value="0.25" type="float" label="mass range for this mz value" help="plusminus mass window in Dalton"/>
+                    <param name="inputmz" type="float" value="1296.7" label="Next parameters are to control heatmap image which will be plotted, here m/z in Dalton" help="m/z will be displayed as heatmap and the pixel of interest will be visualized by the intersection of two lines"/>
+                    <param name="plusminusinDalton" value="0.25" type="float" label="m/z range for this m/z value" help="plusminus m/z window in Dalton"/>
                     <param name="inputcolour" type="select" label="select the colour for the lines at x and y position">
                         <option value="white" selected="True">white</option>
                         <option value="black">black</option>
@@ -283,22 +276,22 @@
                         <option value="longdash">longdash</option>
                     </param>
                     <param name="inputwidth" type="integer" value="2" label="select the width of the lines at x and y position"/>
-                    <repeat name="zoomedplot" title="Zoomed in plots with mz min and mz max to define the plot window" min="0" max="50">
-                        <param name="xlimmin" type="integer" value="" label="lower boundary in Dalton for plotting window" help="minimum mz for zoomed in window"/>
-                        <param name="xlimmax" type="integer" value="" label="upper boundary in Dalton for plotting window" help="maximum mz for zoomed in window"/>
+                    <repeat name="zoomedplot" title="Zoomed in plots with m/z min and m/z max to define the plot window" min="0" max="50">
+                        <param name="xlimmin" type="integer" value="" label="lower boundary in Dalton for plotting window" help="minimum m/z for zoomed in window"/>
+                        <param name="xlimmax" type="integer" value="" label="upper boundary in Dalton for plotting window" help="maximum m/z for zoomed in window"/>
                     </repeat>
                 </repeat>
             </when>
             <when value="sample_pixel">
-                <repeat name="zoomed_sample" title="Zoomed in plots with mz min and mz max to define the plot window" min="0" max="50">
-                    <param name="xlimmin" type="integer" value="" label="lower boundary in Dalton for plotting window" help="minimum mz for zoomed in window"/>
-                    <param name="xlimmax" type="integer" value="" label="upper boundary in Dalton for plotting window" help="maximum mz for zoomed in window"/>
+                <repeat name="zoomed_sample" title="Zoomed in plots with m/z min and m/z max to define the plot window" min="0" max="50">
+                    <param name="xlimmin" type="integer" value="" label="lower boundary in Dalton for plotting window" help="minimum m/z for zoomed in window"/>
+                    <param name="xlimmax" type="integer" value="" label="upper boundary in Dalton for plotting window" help="maximum m/z for zoomed in window"/>
                 </repeat>
             </when>
         </conditional>
     </inputs>
     <outputs>
-        <data format="pdf" name="plots" from_work_dir="mzplots.pdf" label = "${tool.name} ${on_string}"/>
+        <data format="pdf" name="plots" from_work_dir="mzplots.pdf" label = "$infile.display_name mass_spectra"/>
     </outputs>
     <tests>
         <test>
@@ -313,12 +306,12 @@
                         <param name="inputx" value="3"/>
                         <param name="inputy" value="3"/>
                         <repeat name="zoomedplot">
-                            <param name="xlimmin" value="550"/>
-                            <param name="xlimmax" value="555"/>
+                            <param name="xlimmin" value="310"/>
+                            <param name="xlimmax" value="320"/>
                         </repeat>
                         <repeat name="zoomedplot">
-                            <param name="xlimmin" value="750"/>
-                            <param name="xlimmax" value="800"/>
+                            <param name="xlimmin" value="350"/>
+                            <param name="xlimmax" value="400"/>
                         </repeat>
                         <repeat name="zoomedplot">
                             <param name="xlimmin" value="400"/>
@@ -364,7 +357,7 @@
             <output name="plots" file="Plot_analyze75.pdf" compare="sim_size" delta="20000"/>
         </test>
         <test>
-            <param name="infile" value="123_combined.rdata" ftype="rdata"/>
+            <param name="infile" value="123_combined.RData" ftype="rdata"/>
             <conditional name="pixel_conditional">
                 <param name="pixel_type" value="sample_pixel"/>
                     <repeat name="zoomed_sample">
@@ -395,7 +388,7 @@
 
 Cardinal is an R package that implements statistical & computational tools for analyzing mass spectrometry imaging datasets. `More information on Cardinal <http://cardinalmsi.org//>`_
 
-This tool uses the Cardinal plot function to generate (zoomed in) mass spectra plots of mass-spectrometry imaging data.
+This tool uses the Cardinal plot function to generate (zoomed in) mass spectra plots of mass spectrometry imaging data.
 
 Input data: 3 types of input data can be used:
 
@@ -405,23 +398,23 @@
 
 Options:
 
-- "single pixel": Returns a full mass-spectrum plot for one pixel, which is defined by its x- and y-coordinates
+- "single pixel": Returns a full mass spectrum plot for one pixel, which is defined by its x- and y-coordinates
 
     - Enter the x and y coordinates of your pixel of interest
-    - To have a visual control for the selected pixel, a heatmap of a mass of interest will be drawn. Two intersecting lines will show the pixel location. This procedure requires an mass of interest together with a mass range and for the lines the colour and type.
-    - Additionally zoom into mass-spectra plots is possible by providing the minimum and maximum mass value to define the limits of the plot
-- "All pixels of a sample": Returns a full average mass-spectrum plot with different colours for each subfile
+    - To have a visual control for the selected pixel, a heatmap of a m/z of interest will be drawn. Two intersecting lines will show the pixel location. This procedure requires an m/z of interest together with a m/z range and for the lines the colour and type.
+    - Additionally zoom into mass spectra plots is possible by providing the minimum and maximum m/z value to define the limits of the plot
+- "All pixels of a sample": Returns a full average mass spectrum plot with different colours for each subfile
 
     - This option only works on files that have previosly been combined in the combine tool
-    - Additionally zoom into mass-spectra plots is possible by providing the minimum and maximum mass value to define the limits of the plot
+    - Additionally zoom into mass spectra plots is possible by providing the minimum and maximum m/z value to define the limits of the plot
 
 Output:
 
-- Pdf with the selected mass-spectra plots and additional control plots
+- Pdf with the selected mass spectra plots and additional control plots
 
 Tip: 
 
-- Corresponding peaklists with masses and their intensities can be obtained with the filtering tool option "ranges for x and y"
+- Corresponding mass spectra with m/z intensity pairs as tabular output can be obtained with the filtering tool option "ranges for x and y"
 
 
 ]]>
Binary file test-data/123_combined.RData has changed
Binary file test-data/123_combined.rdata has changed
Binary file test-data/Example_Continuous.ibd has changed
--- a/test-data/Example_Continuous.imzML	Mon May 28 12:39:59 2018 -0400
+++ b/test-data/Example_Continuous.imzML	Mon Jun 11 17:34:44 2018 -0400
@@ -1,373 +1,313 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<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_idx.xsd" version="1.1">
-  <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="{554A27FA-79D2-4766-9A2C-862E6D78B1F3}"/>
-      <cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="A5BE532D25997B71BE6D20C76561DDC4D5307DDD"/>
-      <cvParam cvRef="IMS" accession="IMS:1000030" name="continuous" value=""/>
-    </fileContent>
-    <sourceFileList count="1">
-      <sourceFile id="sf1" name="Example.raw" location="C:\Users\Thorsten Schramm\Documents\Promotion\imzML\Website\files\Beispiel-Dateien\Example images\">
-        <cvParam cvRef="MS" accession="MS:1000563" name="Thermo RAW file" value=""/>
-        <cvParam cvRef="MS" accession="MS:1000768" name="Thermo nativeID format" value=""/>
-        <cvParam cvRef="MS" accession="MS:1000569" name="SHA-1" value="7623BE263B25FF99FDF017154B86FAB742D4BB0B"/>
-      </sourceFile>
-    </sourceFileList>
-    <contact>
-      <cvParam cvRef="MS" accession="MS:1000586" name="contact name" value="Thorsten Schramm"/>
-      <cvParam cvRef="MS" accession="MS:1000590" name="contact organization" value="Institut für Anorganische und Analytische Chemie"/>
-      <cvParam cvRef="MS" accession="MS:1000587" name="contact address" value="Schubertstraße 60, Haus 16, Gießen, Germany"/>
-      <cvParam cvRef="MS" accession="MS:1000589" name="contact email" value="thorsten.schramm@anorg.chemie.uni-.giessen.de"/>
-    </contact>
-  </fileDescription>
-  <referenceableParamGroupList count="4">
-    <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>
-    <referenceableParamGroup id="scan1">
-      <cvParam cvRef="MS" accession="MS:1000093" name="increasing m/z scan" value=""/>
-      <cvParam cvRef="MS" accession="MS:1000095" name="linear" value=""/>
-      <cvParam cvRef="MS" accession="MS:1000512" name="filter string" value="ITMS - p NSI Full ms [100,00-800,00]"/>
-    </referenceableParamGroup>
-    <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=""/>
-      <cvParam cvRef="MS" accession="MS:1000129" name="negative scan" 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="2">
-    <software id="Xcalibur" version="2.2">
-      <cvParam cvRef="MS" accession="MS:1000532" name="Xcalibur" value=""/>
-    </software>
-    <software id="TMC" version="1.1 beta">
-      <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:1000401" name="top down" value=""/>
-      <cvParam cvRef="IMS" accession="IMS:1000413" name="flyback" value=""/>
-      <cvParam cvRef="IMS" accession="IMS:1000480" name="horizontal line scan" value=""/>
-      <cvParam cvRef="IMS" accession="IMS:1000491" name="linescan left right" value=""/>
-      <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="300" 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"/>
-      <cvParam cvRef="MS" accession="MS:1000836" name="dried dropplet" value=""/>
-      <cvParam cvRef="MS" accession="MS:1000835" name="matrix solution concentration" value="10"/>
-      <cvParam cvRef="MS" accession="MS:1000834" name="matrix solution" value="DHB"/>
-    </scanSettings>
-  </scanSettingsList>
-  <instrumentConfigurationList count="1">
-    <instrumentConfiguration id="LTQFTUltra0">
-      <cvParam cvRef="MS" accession="MS:1000557" name="LTQ FT Ultra" value=""/>
-      <cvParam cvRef="MS" accession="MS:1000529" name="instrument serial number" value="none"/>
-      <componentList count="3">
-        <source order="1">
-          <cvParam cvRef="MS" accession="MS:1000073" name="electrospray ionization" value=""/>
-          <cvParam cvRef="MS" accession="MS:1000485" name="nanospray inlet" value=""/>
-          <cvParam cvRef="MS" accession="MS:1000843" name="wavelength" value="337"/>
-          <cvParam cvRef="MS" accession="MS:1000844" name="focus diameter x" value="10"/>
-          <cvParam cvRef="MS" accession="MS:1000845" name="focus diameter y" value="10"/>
-          <cvParam cvRef="MS" accession="MS:1000846" name="pulse energy" value="10"/>
-          <cvParam cvRef="MS" accession="MS:1000847" name="pulse duration" value="10"/>
-          <cvParam cvRef="MS" accession="MS:1000848" name="attenuation" value="50"/>
-          <cvParam cvRef="MS" accession="MS:1000850" name="gas laser" value=""/>
-          <cvParam cvRef="IMS" accession="IMS:1000202" name="target material" value="Conductive Glas"/>
-        </source>
-        <analyzer order="2">
-          <cvParam cvRef="MS" accession="MS:1000264" name="ion trap" value=""/>
-          <cvParam cvRef="MS" accession="MS:1000014" name="accuracy" value="0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
-        </analyzer>
-        <detector order="3">
-          <cvParam cvRef="MS" accession="MS:1000253" name="electron multiplier" value=""/>
-          <cvParam cvRef="MS" accession="MS:1000120" name="transient recorder" value=""/>
-        </detector>
-      </componentList>
-      <softwareRef ref="Xcalibur"/>
-    </instrumentConfiguration>
-  </instrumentConfigurationList>
-  <dataProcessingList count="2">
-    <dataProcessing id="XcaliburProcessing">
-      <processingMethod order="1" softwareRef="Xcalibur">
-        <cvParam cvRef="MS" accession="MS:1000594" name="low intensity data point removal" value=""/>
-      </processingMethod>
-    </dataProcessing>
-    <dataProcessing id="TMCConversion">
-      <processingMethod order="2" softwareRef="TMC">
-        <cvParam cvRef="MS" accession="MS:1000544" name="Conversion to mzML" value=""/>
-      </processingMethod>
-    </dataProcessing>
-  </dataProcessingList>
-  <run defaultInstrumentConfigurationRef="LTQFTUltra0" defaultSourceFileRef="sf1" id="Experiment01" sampleRef="sample1" startTimeStamp="2009-08-11T15:59:44">
-    <spectrumList count="9" defaultDataProcessingRef="XcaliburProcessing">
-      <spectrum id="Scan=1" defaultArrayLength="0" index="0">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="33612"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-      <spectrum id="Scan=2" defaultArrayLength="0" index="1">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="67208"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-      <spectrum id="Scan=3" defaultArrayLength="0" index="2">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="100804"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-      <spectrum id="Scan=4" defaultArrayLength="0" index="3">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="134400"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-      <spectrum id="Scan=5" defaultArrayLength="0" index="4">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="167996"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-      <spectrum id="Scan=6" defaultArrayLength="0" index="5">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="201592"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-      <spectrum id="Scan=7" defaultArrayLength="0" index="6">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="235188"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-      <spectrum id="Scan=8" defaultArrayLength="0" index="7">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="268784"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-      <spectrum id="Scan=9" defaultArrayLength="0" index="8">
-        <referenceableParamGroupRef ref="spectrum1"/>
-        <scanList count="1">
-          <cvParam cvRef="MS" accession="MS:1000795" name="no combination" value=""/>
-          <scan instrumentConfigurationRef="LTQFTUltra0">
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="16"/>
-            <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:1000103" name="external array length" value="8399"/>
-            <cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="302380"/>
-            <cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="33596"/>
-            <binary/>
-          </binaryDataArray>
-        </binaryDataArrayList>
-      </spectrum>
-    </spectrumList>
-  </run>
-</mzML>
\ No newline at end of file
+<?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="{51BB7C6F-9974-4626-B35F-5B65547BAE6B}" />
+			<cvParam cvRef="IMS" accession="IMS:1000091" name="ibd SHA-1" value="26C26A63DCF7CD1AD768A67AEDB7131C5D88C397" />
+			<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="" />
+			<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" />
+		</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" />
+		</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="1.12.0">
+			<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" />
+		</scanSettings>
+	</scanSettingsList>
+	<instrumentConfigurationList count="1">
+		<instrumentConfiguration id="IC1" />
+	</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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="4812" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="9608" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<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="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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="14404" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<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="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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="19200" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<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="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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="23996" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="28792" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<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="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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="33588" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<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="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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="38384" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<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="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="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+					<binaryDataArray encodedLength="0">
+						<referenceableParamGroupRef ref="intensityArray" />
+						<cvParam cvRef="IMS" accession="IMS:1000102" name="external offset" value="43180" />
+						<cvParam cvRef="IMS" accession="IMS:1000103" name="external array length" value="1199" />
+						<cvParam cvRef="IMS" accession="IMS:1000104" name="external encoded length" value="4796" />
+						<binary />
+					</binaryDataArray>
+				</binaryDataArrayList>
+			</spectrum>
+		</spectrumList>
+	</run>
+</mzML>
Binary file test-data/Plot_analyze75.pdf has changed
Binary file test-data/Plot_empty_spectra.pdf has changed
Binary file test-data/Plot_imzml.pdf has changed
Binary file test-data/Plot_rdata.pdf has changed