mzml 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Gemfile +4 -0
- data/Rakefile +15 -39
- data/bin/{mzML2mgf.rb → mzml2mgf} +1 -17
- data/lib/mzml/chromatogram.rb +80 -0
- data/lib/mzml/doc.rb +185 -0
- data/lib/mzml/spectrum.rb +107 -0
- data/lib/mzml/version.rb +4 -0
- data/lib/mzml.rb +4 -244
- data/mzml.gemspec +15 -59
- data/spec/mzml_spec.rb +16 -0
- data/spec/sample.unindexed.mzML +221 -0
- data/test/fixtures/sample.compressed.mzML +2699 -0
- data/test/fixtures/sample.mgf +25548 -0
- data/test/fixtures/sample.mzML +2688 -0
- data/test/test_mzml-helper.rb +15 -0
- data/test/test_mzml.rb +94 -0
- metadata +83 -76
- data/.document +0 -5
- data/.yardoc +0 -0
- data/VERSION +0 -1
data/lib/mzml.rb
CHANGED
@@ -1,245 +1,5 @@
|
|
1
1
|
require 'nokogiri'
|
2
|
-
require '
|
3
|
-
require '
|
4
|
-
|
5
|
-
|
6
|
-
# This program is free software; you can redistribute it and/or modify
|
7
|
-
# it under the terms of the GNU Library or "Lesser" General Public
|
8
|
-
# License (LGPL) as published by the Free Software Foundation;
|
9
|
-
# either version 2 of the License, or (at your option) any later
|
10
|
-
# version.
|
11
|
-
# Author: Angel Pizarro
|
12
|
-
# Date: 12/05/2009
|
13
|
-
# Copyright: Angel Pizarro, Copyright (c) University of Pennsylvania. All rights reserved.
|
14
|
-
#
|
15
|
-
|
16
|
-
# == MzML
|
17
|
-
#
|
18
|
-
# A non-validating mzML v 1.1.0 parser. Most annotation is left as XML DOM
|
19
|
-
# objects. See the Nokogiri::XML::Node and Nokogiri::XML::NodeSet
|
20
|
-
# documentation on how to work with these.
|
21
|
-
#
|
22
|
-
# ===USAGE:
|
23
|
-
#
|
24
|
-
# require 'mzml'
|
25
|
-
# mzml = MzML::Doc.new("test.mzXML")
|
26
|
-
|
27
|
-
module MzML
|
28
|
-
|
29
|
-
# An internal module containing useful regular expressions
|
30
|
-
module RGX
|
31
|
-
# The file byte offset of the start of the file index
|
32
|
-
INDEX_OFFSET = /<indexListOffset>(\d+)<\/indexListOffset>/
|
33
|
-
# The start of a either a spectrumList or chromatographList
|
34
|
-
DATA_LIST_START = /<(spectrum|chromatogram)List\s.*count\=["'](\d+)/m
|
35
|
-
# The start spectrum or chromatogram element
|
36
|
-
DATA_START = /<(spectrum|chromatogram)\s.*id=["']([^'"]+)["']/m
|
37
|
-
# The end spectrum or chromatogram element
|
38
|
-
DATA_END = /(<\/(spectrum|chromatogram)>)/
|
39
|
-
end
|
40
|
-
|
41
|
-
def parse(xml)
|
42
|
-
Nokogiri::XML.parse(xml).root
|
43
|
-
end
|
44
|
-
|
45
|
-
class UnsupportedFileFormat < Exception
|
46
|
-
end
|
47
|
-
class BadIdentifier < Exception
|
48
|
-
end
|
49
|
-
|
50
|
-
class Doc < File
|
51
|
-
attr_reader :index, :fname, :spectrum_count, :chromatogram_count, :node
|
52
|
-
|
53
|
-
def initialize(mz_fname)
|
54
|
-
unless mz_fname =~ /\.mzML$/
|
55
|
-
raise MzML::UnsupportedFileFormat.new "File extension must be .\"mzML\""
|
56
|
-
end
|
57
|
-
super(mz_fname, "r")
|
58
|
-
@index = parse_index_list
|
59
|
-
end
|
60
|
-
|
61
|
-
def chromatogram(chromatogram_id)
|
62
|
-
if @index[:chromatogram].has_key? chromatogram_id
|
63
|
-
self.seek @index[:chromatogram][chromatogram_id]
|
64
|
-
parse_next
|
65
|
-
else
|
66
|
-
raise MzML::BadIdentifier.new("Invalid ID '#{chromatogram_id}'")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def spectrum(spectrum_id)
|
71
|
-
if @index[:spectrum].has_key? spectrum_id
|
72
|
-
self.seek @index[:spectrum][spectrum_id]
|
73
|
-
return Spectrum.new(parse_next())
|
74
|
-
|
75
|
-
else
|
76
|
-
raise MzML::BadIdentifier.new("Invalid ID '#{spectrum_id}'")
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
# private
|
81
|
-
# Parses the IndexList
|
82
|
-
def parse_index_list
|
83
|
-
self.seek(self.stat.size - 200)
|
84
|
-
# parse the index offset
|
85
|
-
tmp = self.read
|
86
|
-
tmp =~ MzML::RGX::INDEX_OFFSET
|
87
|
-
offset = $1
|
88
|
-
# if I didn't match anything, compute the index and return
|
89
|
-
unless (offset)
|
90
|
-
return compute_index_list
|
91
|
-
end
|
92
|
-
@index = {}
|
93
|
-
self.seek(offset.to_i)
|
94
|
-
tmp = Nokogiri::XML.parse(self.read).root
|
95
|
-
tmp.css("index").each do |idx|
|
96
|
-
index_type = idx[:name].to_sym
|
97
|
-
@index[index_type] = {}
|
98
|
-
idx.css("offset").each do |o|
|
99
|
-
@index[index_type][o[:idRef]] = o.text().to_i
|
100
|
-
end
|
101
|
-
end
|
102
|
-
return @index
|
103
|
-
end
|
104
|
-
|
105
|
-
def compute_index_list
|
106
|
-
@index = {}
|
107
|
-
# start at the beginning.
|
108
|
-
self.rewind
|
109
|
-
# fast forward to the first spectrum or chromatograph
|
110
|
-
buffer = ''
|
111
|
-
while !self.eof
|
112
|
-
buffer += self.read(1024)
|
113
|
-
if start_pos = buffer =~ MzML::RGX::DATA_START
|
114
|
-
self.seek start_pos
|
115
|
-
break
|
116
|
-
end
|
117
|
-
end
|
118
|
-
# for each particular entity start to fill in the index
|
119
|
-
buffer = ''
|
120
|
-
rgx_start = /<(spectrum|chromatogram)\s.*id=["']([^"']+)["']/
|
121
|
-
while !self.eof
|
122
|
-
buffer += self.read(1024)
|
123
|
-
if start_pos = buffer =~ rgx_start
|
124
|
-
start_pos = self.pos - buffer.length + start_pos
|
125
|
-
@index[$1.to_sym][$2] = start_pos
|
126
|
-
buffer = ''
|
127
|
-
end
|
128
|
-
end
|
129
|
-
return @index
|
130
|
-
end
|
131
|
-
|
132
|
-
def parse_next
|
133
|
-
buffer = self.read(1024)
|
134
|
-
end_pos = nil
|
135
|
-
while(!self.eof)
|
136
|
-
if end_pos = buffer =~ MzML::RGX::DATA_END
|
137
|
-
buffer = buffer.slice(0..(end_pos + $1.length))
|
138
|
-
break
|
139
|
-
end
|
140
|
-
buffer += self.read(1024)
|
141
|
-
end
|
142
|
-
return Nokogiri::XML.parse(buffer)
|
143
|
-
end
|
144
|
-
end
|
145
|
-
|
146
|
-
class Spectrum
|
147
|
-
attr_accessor :id, :default_array_length, :spot_id, :type,\
|
148
|
-
:charge, :precursor, :base_peak_mz, :base_peak_intensity, :ms_level, \
|
149
|
-
:high_mz, :low_mz, :title, :tic, :polarity, :representation, :mz_node, :intensity_node, \
|
150
|
-
:mz, :intensity, :precursor_list, :scan_list, :retention_time, :precursor_mass, :precursor_intensity
|
151
|
-
|
152
|
-
attr_reader :node, :params
|
153
|
-
|
154
|
-
# mz & intensity arrays will be don by proper methods maybe.
|
155
|
-
def initialize(spectrum_node)
|
156
|
-
@node = spectrum_node
|
157
|
-
@params = {}
|
158
|
-
@precursor_list = []
|
159
|
-
parse_element()
|
160
|
-
end
|
161
|
-
|
162
|
-
protected
|
163
|
-
# This method pulls out all of the annotation from the XML node
|
164
|
-
def parse_element
|
165
|
-
# id
|
166
|
-
@id = @node.xpath("spectrum")[0][:id]
|
167
|
-
@default_array_length = @node.xpath("spectrum")[0][:defaultArrayLength]
|
168
|
-
@spot_id = @node.xpath("spectrum")[0][:spotID]
|
169
|
-
# now reaching into params
|
170
|
-
@params = @node.xpath("spectrum/cvParam").inject({}) do |memo,prm|
|
171
|
-
memo[prm[:name]] = prm[:value]
|
172
|
-
memo
|
173
|
-
end
|
174
|
-
@ms_level = @params["ms level"].to_i
|
175
|
-
@low_mz = @params["lowest observed m/z"].to_f if @params.has_key?("lowest observed m/z")
|
176
|
-
@high_mz = @params["highest observed m/z"].to_f if @params.has_key?("highest observed m/z")
|
177
|
-
@tic = @params["total ion current"].to_i if @params.has_key?("total ion current")
|
178
|
-
@base_peak_mz = @params["base peak m/z"].to_i if @params.has_key?("base peak m/z")
|
179
|
-
@base_peak_intensity = @params["base peak intensity"].to_i if @params.has_key?("base peak intensity")
|
180
|
-
# polarity
|
181
|
-
# representation
|
182
|
-
# precursor list
|
183
|
-
if (! @node.xpath("spectrum/precursorList")[0].nil?)
|
184
|
-
parse_precursor_list()
|
185
|
-
get_parent_info()
|
186
|
-
else
|
187
|
-
@precursor_list = []
|
188
|
-
end
|
189
|
-
# scan list
|
190
|
-
if (@node.xpath("spectrum/scanList")[0])
|
191
|
-
@scan_list = parse_scan_list()
|
192
|
-
else
|
193
|
-
@scan_list = nil
|
194
|
-
end
|
195
|
-
# binary data
|
196
|
-
parse_binary_data()
|
197
|
-
end
|
198
|
-
|
199
|
-
def parse_precursor_list
|
200
|
-
@node.css("precursorList > precursor").each do |p|
|
201
|
-
[p[:spectrumRef], p]
|
202
|
-
@precursor_list << p
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
def get_parent_info
|
207
|
-
|
208
|
-
unless @precursor_list.empty?
|
209
|
-
|
210
|
-
@precursor_mass = @precursor_list[0].xpath("selectedIonList/selectedIon/cvParam[@accession='MS:1000744']")[0][:value] unless @precursor_list[0].xpath("selectedIonList/selectedIon/cvParam[@accession='MS:1000744']")[0].nil?
|
211
|
-
@precursor_intensity = @precursor_list[0].xpath("selectedIonList/selectedIon/cvParam[@accession='MS:1000042']")[0][:value] unless @precursor_list[0].xpath("selectedIonList/selectedIon/cvParam[@accession='MS:1000042']")[0].nil?
|
212
|
-
|
213
|
-
end
|
214
|
-
|
215
|
-
|
216
|
-
end
|
217
|
-
|
218
|
-
def parse_scan_list
|
219
|
-
@scan_list = @node.xpath("spectrum/scanList/scan")
|
220
|
-
@retention_time = @node.xpath("spectrum/scanList/scan/cvParam[@accession='MS:1000016']")[0][:value] unless @node.xpath("spectrum/scanList/scan/cvParam[@accession='MS:1000016']")[0].nil?
|
221
|
-
end
|
222
|
-
|
223
|
-
def parse_binary_data
|
224
|
-
@mz_node = @node.xpath("spectrum/binaryDataArrayList/binaryDataArray/cvParam[@accession='MS:1000514']").first.parent
|
225
|
-
data = Base64.decode64(@mz_node.xpath("binary").text)
|
226
|
-
if @mz_node.xpath("cvParam[@accession='MS:1000574']")[0]
|
227
|
-
# need to uncompress the data
|
228
|
-
data = Zlib::Inflate.inflate(data)
|
229
|
-
end
|
230
|
-
# 64-bit floats? default is 32-bit
|
231
|
-
dtype = @mz_node.xpath("cvParam[@accession='MS:1000523']")[0] ? "E*" : "e*"
|
232
|
-
@mz = data.unpack(dtype)
|
233
|
-
|
234
|
-
@intensity_node = @node.xpath("spectrum/binaryDataArrayList/binaryDataArray/cvParam[@accession='MS:1000515']").first.parent
|
235
|
-
data = Base64.decode64(@intensity_node.xpath("binary").text)
|
236
|
-
if @intensity_node.xpath("cvParam[@accession='MS:1000574']")[0]
|
237
|
-
# need to uncompress the data
|
238
|
-
data = Zlib::Inflate.inflate(data)
|
239
|
-
end
|
240
|
-
# 64-bit floats? default is 32-bit
|
241
|
-
dtype = @intensity_node.xpath("cvParam[@accession='MS:1000523']")[0] ? "E*" : "e*"
|
242
|
-
@intensity = data.unpack(dtype)
|
243
|
-
end
|
244
|
-
end
|
245
|
-
end
|
2
|
+
require 'mzml/doc'
|
3
|
+
require 'mzml/chromatogram'
|
4
|
+
require 'mzml/spectrum'
|
5
|
+
require 'mzml/version'
|
data/mzml.gemspec
CHANGED
@@ -1,65 +1,21 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "mzml/version"
|
5
4
|
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
9
|
-
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.date = %q{2010-10-01}
|
13
|
-
s.default_executable = %q{mzML2mgf.rb}
|
14
|
-
s.description = %q{A non-validating mzML parser. MzML is a standard data format for representing mass spectrometry data.}
|
15
|
-
s.email = %q{angel@delagoya.com}
|
16
|
-
s.executables = ["mzML2mgf.rb"]
|
17
|
-
s.extra_rdoc_files = [
|
18
|
-
"LICENSE",
|
19
|
-
"README.rdoc"
|
20
|
-
]
|
21
|
-
s.files = [
|
22
|
-
".document",
|
23
|
-
".gitignore",
|
24
|
-
".yardoc",
|
25
|
-
"LICENSE",
|
26
|
-
"README.rdoc",
|
27
|
-
"Rakefile",
|
28
|
-
"VERSION",
|
29
|
-
"bin/mzML2mgf.rb",
|
30
|
-
"lib/mzml.rb",
|
31
|
-
"mzml.gemspec",
|
32
|
-
"spec/mzml_spec.rb",
|
33
|
-
"spec/sample.compressed.mzML",
|
34
|
-
"spec/sample.mgf",
|
35
|
-
"spec/sample.mzML",
|
36
|
-
"spec/spec.opts",
|
37
|
-
"spec/spec_helper.rb"
|
38
|
-
]
|
39
|
-
s.homepage = %q{http://github.com/delagoya/mzml}
|
40
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
41
|
-
s.require_paths = ["lib"]
|
42
|
-
s.rubygems_version = %q{1.3.7}
|
6
|
+
s.name = "mzml"
|
7
|
+
s.version = MzML::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Angel Pizarro"]
|
10
|
+
s.email = ["angel@upenn.edu"]
|
43
11
|
s.summary = %q{A non-validating mzML parser}
|
44
|
-
s.
|
45
|
-
"
|
46
|
-
"spec/spec_helper.rb"
|
47
|
-
]
|
48
|
-
|
49
|
-
if s.respond_to? :specification_version then
|
50
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
51
|
-
s.specification_version = 3
|
12
|
+
s.description = %q{A non-validating mzML parser. MzML is a standard data format for representing mass spectrometry data.}
|
13
|
+
s.homepage = "http://github.com/delagoya/mzml"
|
52
14
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
60
|
-
else
|
61
|
-
s.add_dependency(%q<rspec>, ["= 1.3.0"])
|
62
|
-
s.add_dependency(%q<nokogiri>, ["= 1.4.1"])
|
63
|
-
end
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.add_dependency("nokogiri", ["~> 1.5"])
|
19
|
+
s.add_development_dependency "rake"
|
20
|
+
s.add_development_dependency "yard"
|
64
21
|
end
|
65
|
-
|
data/spec/mzml_spec.rb
CHANGED
@@ -5,6 +5,7 @@ describe MzML do
|
|
5
5
|
# set the input file name
|
6
6
|
@file = File.join(File.dirname(__FILE__), "sample.mzML")
|
7
7
|
@compressed = File.join(File.dirname(__FILE__), "sample.compressed.mzML")
|
8
|
+
@unindexed = File.join(File.dirname(__FILE__), "sample.unindexed.mzML")
|
8
9
|
@mgf = File.join(File.dirname(__FILE__), "sample.mgf")
|
9
10
|
end
|
10
11
|
|
@@ -95,4 +96,19 @@ describe MzML do
|
|
95
96
|
s.intensity.should_not be_nil
|
96
97
|
end
|
97
98
|
end
|
99
|
+
|
100
|
+
# TOPPView outputs mzML with no indexedmzML wrapper
|
101
|
+
context 'Given a valid mzML file without an index wrapper' do
|
102
|
+
it 'should be able to retrieve by index' do
|
103
|
+
mz = MzML::Doc.new(@unindexed)
|
104
|
+
s = mz.spectrum(mz.index[:spectrum].keys.first)
|
105
|
+
s.intensity.should_not be_nil
|
106
|
+
end
|
107
|
+
it 'does not fail when parsing a spectrum without binary data' do
|
108
|
+
mz = MzML::Doc.new(@unindexed)
|
109
|
+
s = mz.spectrum(mz.index[:spectrum].keys.last)
|
110
|
+
s.should_not be_nil
|
111
|
+
s.intensity.should be_nil
|
112
|
+
end
|
113
|
+
end
|
98
114
|
end
|
@@ -0,0 +1,221 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
<mzML xmlns="http://psi.hupo.org/ms/mzml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://psi.hupo.org/ms/mzml http://psidev.info/files/ms/mzML/xsd/mzML1.1.0.xsd" accession="" version="1.1.0">
|
3
|
+
<cvList count="2">
|
4
|
+
<cv id="MS" fullName="Proteomics Standards Initiative Mass Spectrometry Ontology" URI="http://psidev.cvs.sourceforge.net/*checkout*/psidev/psi/psi-ms/mzML/controlledVocabulary/psi-ms.obo"/>
|
5
|
+
<cv id="UO" fullName="Unit Ontology" URI="http://obo.cvs.sourceforge.net/obo/obo/ontology/phenotype/unit.obo"/>
|
6
|
+
</cvList>
|
7
|
+
<fileDescription>
|
8
|
+
<fileContent>
|
9
|
+
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
|
10
|
+
</fileContent>
|
11
|
+
<sourceFileList count="1">
|
12
|
+
<sourceFile id="sf_ru_0" name="file://MSALLY2/S/RAW/HEK_cells/Hek_cells_100904050914.RAW" location="">
|
13
|
+
<cvParam cvRef="MS" accession="MS:1000569" name="SHA-1" value="2b6ebe1d5f900a445f82adb40b24cd77ed476ecb" />
|
14
|
+
<cvParam cvRef="MS" accession="MS:1000564" name="PSI mzData file" />
|
15
|
+
<cvParam cvRef="MS" accession="MS:1000777" name="spectrum identifier nativeID format" />
|
16
|
+
</sourceFile>
|
17
|
+
</sourceFileList>
|
18
|
+
</fileDescription>
|
19
|
+
<sampleList count="1">
|
20
|
+
<sample id="sa_0" name="">
|
21
|
+
<cvParam cvRef="MS" accession="MS:1000004" name="sample mass" value="0" unitAccession="UO:0000021" unitName="gram" unitCvRef="UO" />
|
22
|
+
<cvParam cvRef="MS" accession="MS:1000005" name="sample volume" value="0" unitAccession="UO:0000098" unitName="milliliter" unitCvRef="UO" />
|
23
|
+
<cvParam cvRef="MS" accession="MS:1000006" name="sample concentration" value="0" unitAccession="UO:0000175" unitName="gram per liter" unitCvRef="UO" />
|
24
|
+
</sample>
|
25
|
+
</sampleList>
|
26
|
+
<softwareList count="4">
|
27
|
+
<software id="so_in_0" version="2.5.5" >
|
28
|
+
<cvParam cvRef="MS" accession="MS:1000532" name="Xcalibur" />
|
29
|
+
</software>
|
30
|
+
<software id="so_default" version="" >
|
31
|
+
<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="" />
|
32
|
+
</software>
|
33
|
+
<software id="so_dp_sp_0_pm_0" version="4.3.1(build Sep 9 2009 12:30:29)" >
|
34
|
+
<cvParam cvRef="MS" accession="MS:1000541" name="ReAdW" />
|
35
|
+
</software>
|
36
|
+
<software id="so_dp_sp_0_pm_1" version="1.7.0" >
|
37
|
+
<cvParam cvRef="MS" accession="MS:1000799" name="custom unreleased software tool" value="SpectrumCanvas" />
|
38
|
+
</software>
|
39
|
+
</softwareList>
|
40
|
+
<instrumentConfigurationList count="1">
|
41
|
+
<instrumentConfiguration id="ic_0">
|
42
|
+
<cvParam cvRef="MS" accession="MS:1000031" name="instrument model" />
|
43
|
+
<componentList count="3">
|
44
|
+
<source order="0">
|
45
|
+
<cvParam cvRef="MS" accession="MS:1000008" name="ionization type" />
|
46
|
+
</source>
|
47
|
+
<analyzer order="0">
|
48
|
+
<cvParam cvRef="MS" accession="MS:1000014" name="accuracy" value="0" unitAccession="UO:0000169" unitName="parts per million" unitCvRef="UO" />
|
49
|
+
<cvParam cvRef="MS" accession="MS:1000022" name="TOF Total Path Length" value="0" unitAccession="UO:0000008" unitName="meter" unitCvRef="UO" />
|
50
|
+
<cvParam cvRef="MS" accession="MS:1000024" name="final MS exponent" value="0" />
|
51
|
+
<cvParam cvRef="MS" accession="MS:1000025" name="magnetic field strength" value="0" unitAccession="UO:0000228" unitName="tesla" unitCvRef="UO" />
|
52
|
+
<cvParam cvRef="MS" accession="MS:1000443" name="mass analyzer type" />
|
53
|
+
</analyzer>
|
54
|
+
<detector order="0">
|
55
|
+
<cvParam cvRef="MS" accession="MS:1000028" name="detector resolution" value="0" />
|
56
|
+
<cvParam cvRef="MS" accession="MS:1000029" name="sampling frequency" value="0" unitAccession="UO:0000106" unitName="hertz" unitCvRef="UO" />
|
57
|
+
<cvParam cvRef="MS" accession="MS:1000026" name="detector type" />
|
58
|
+
</detector>
|
59
|
+
</componentList>
|
60
|
+
<softwareRef ref="so_in_0" />
|
61
|
+
</instrumentConfiguration>
|
62
|
+
</instrumentConfigurationList>
|
63
|
+
<dataProcessingList count="1">
|
64
|
+
<dataProcessing id="dp_sp_0">
|
65
|
+
<processingMethod order="0" softwareRef="so_dp_sp_0_pm_0">
|
66
|
+
<cvParam cvRef="MS" accession="MS:1000035" name="peak picking" />
|
67
|
+
<userParam name="#type" type="xsd:string" value="conversion"/>
|
68
|
+
</processingMethod>
|
69
|
+
<processingMethod order="0" softwareRef="so_dp_sp_0_pm_1">
|
70
|
+
<cvParam cvRef="MS" accession="MS:1001486" name="data filtering" />
|
71
|
+
<cvParam cvRef="MS" accession="MS:1000747" name="completion time" value="2011-02-07+21:50" />
|
72
|
+
</processingMethod>
|
73
|
+
</dataProcessing>
|
74
|
+
</dataProcessingList>
|
75
|
+
<run id="ru_0" defaultInstrumentConfigurationRef="ic_0" sampleRef="sa_0" defaultSourceFileRef="sf_ru_0">
|
76
|
+
<spectrumList count="5" defaultDataProcessingRef="dp_sp_0">
|
77
|
+
<spectrum id="scan=9033" index="562" defaultArrayLength="75">
|
78
|
+
<cvParam cvRef="MS" accession="MS:1000525" name="spectrum representation" />
|
79
|
+
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1" />
|
80
|
+
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
|
81
|
+
<cvParam cvRef="MS" accession="MS:1000130" name="positive scan" />
|
82
|
+
<scanList count="1">
|
83
|
+
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
|
84
|
+
<scan>
|
85
|
+
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="5207.31" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
|
86
|
+
</scan>
|
87
|
+
</scanList>
|
88
|
+
<binaryDataArrayList count="2">
|
89
|
+
<binaryDataArray encodedLength="800">
|
90
|
+
<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
91
|
+
<cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" />
|
92
|
+
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
|
93
|
+
<binary>AAAAQNHFh0AAAACApsiHQAAAAOAByYdAAAAAIGrNh0AAAABA/s6HQAAAAGD+1YdAAAAA4P3Wh0AAAAAgWtuHQAAAAEAC3odAAAAAoA/mh0AAAAAg3+qHQAAAAMBk64dAAAAAIE3th0AAAAAAbPCHQAAAAGA08YdAAAAAQB3zh0AAAADAxfWHQAAAAEBw+IdAAAAAQPUCiEAAAADAIQeIQAAAAIAyDYhAAAAAAPAgiEAAAACAkyGIQAAAAKAyI4hAAAAAoHIniEAAAADAASiIQAAAACAVLohAAAAAgAwwiEAAAACA9jKIQAAAAMBUNIhAAAAAAJw1iEAAAAAgIDuIQAAAAOAfP4hAAAAAYHVBiEAAAAAA1kKIQAAAAEAmQ4hAAAAAwABGiEAAAABAMUuIQAAAAEA0T4hAAAAAgDFRiEAAAACAGFmIQAAAAAAbX4hAAAAAACBjiEAAAABAa2+IQAAAAKAGc4hAAAAAwCF7iEAAAACAEIWIQAAAAAAVh4hAAAAAgBWJiEAAAAAgEYuIQAAAAKCvi4hAAAAAgBqNiEAAAACg0o2IQAAAAGAbk4hAAAAAQGyYiEAAAAAgdpuIQAAAAAAjnohAAAAAoMWgiEAAAADgV6aIQAAAACDxqIhAAAAA4F+piEAAAADgHq2IQAAAAGAdrohAAAAAoMuwiEAAAACgPLOIQAAAAOB2s4hAAAAA4CG2iEAAAADAG7eIQAAAAODTuIhAAAAAoBW+iEAAAABAhMCIQAAAAOAww4hAAAAA4E7HiEAAAABA5NWIQAAAAIAo44hA</binary>
|
94
|
+
</binaryDataArray>
|
95
|
+
<binaryDataArray encodedLength="400">
|
96
|
+
<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitAccession="MS:1000131" unitName="number of counts" unitCvRef="MS"/>
|
97
|
+
<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" />
|
98
|
+
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
|
99
|
+
<binary>CZMLRfdvCEWM1ydFdZ/pRDWvDUapXF5FlQ4eRRgd20W1P3BFe9EqRecTCEWk6gdF1TyQRf3eDEblhfxEGkkWRua92UXCoaVFknjfRD2F80RS3hxFwbDrRHJiRkUUbSBFv2McRTEaQ0VvUwlFi68fRUv5hkVEwIZFBrRRRdTF6UVEzxJF+UYTRd/nH0Ui83tFox8MRUrwG0X3gWpFmtUURQjH20UWMTRFwc8pRTNRCEWsaQlFcrUXRSkJwUWZkBxGrgIxRuMio0WU/etEmWwtReGvbEUa4JZFyoffRPtHlEUI/lBFsW2ARV4xUEWtvS5FBi06RdwJEkWojBJGPIxHRvKcE0UAqGNGzdmkRQ+aFkXsqlpFvtcwRRLkYUV/WFRFSJQLRQy4BkV29CNF</binary>
|
100
|
+
</binaryDataArray>
|
101
|
+
</binaryDataArrayList>
|
102
|
+
</spectrum>
|
103
|
+
<spectrum id="scan=9034" index="563" defaultArrayLength="79">
|
104
|
+
<cvParam cvRef="MS" accession="MS:1000525" name="spectrum representation" />
|
105
|
+
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1" />
|
106
|
+
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
|
107
|
+
<cvParam cvRef="MS" accession="MS:1000130" name="positive scan" />
|
108
|
+
<scanList count="1">
|
109
|
+
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
|
110
|
+
<scan>
|
111
|
+
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="5208.68" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
|
112
|
+
</scan>
|
113
|
+
</scanList>
|
114
|
+
<binaryDataArrayList count="2">
|
115
|
+
<binaryDataArray encodedLength="844">
|
116
|
+
<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
117
|
+
<cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" />
|
118
|
+
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
|
119
|
+
<binary>AAAAICHDh0AAAAAAL8uHQAAAAIACzYdAAAAAoPrOh0AAAACAX9CHQAAAAEBd24dAAAAA4Prih0AAAACgCuaHQAAAAGBh6IdAAAAA4Arrh0AAAADASO2HQAAAAMBN74dAAAAAAG3wh0AAAABAGvOHQAAAAMDJ9YdAAAAAYGz4h0AAAACAB/uHQAAAACBC+4dAAAAAgAH/h0AAAADgPxiIQAAAAMCmHYhAAAAAwEwgiEAAAABAkyGIQAAAAKDMJIhAAAAAYGImiEAAAACgeyeIQAAAAMB5K4hAAAAAQAouiEAAAADAdi6IQAAAAKAIMIhAAAAAgAYxiEAAAACg5zSIQAAAAEChNYhAAAAAQCI7iEAAAACgIj+IQAAAAOB0RYhAAAAAgA5JiEAAAADgLUuIQAAAAIByTYhAAAAAYA9QiEAAAACASFWIQAAAACAYW4hAAAAAIBtdiEAAAABAImOIQAAAAEAlZYhAAAAAAPl0iEAAAAAgDneIQAAAAEASeYhAAAAAoBd9iEAAAACgFH+IQAAAAAA8g4hAAAAAgBOFiEAAAAAAFoeIQAAAAMAWiYhAAAAAQA6LiEAAAACgUouIQAAAAOAUjYhAAAAAwBmPiEAAAACAgJCIQAAAAIAdk4hAAAAAoHWbiEAAAAAgH56IQAAAAMB0o4hAAAAAIBipiEAAAADgI6uIQAAAAAAdrohAAAAAgMiwiEAAAACgdrOIQAAAAKAjtohAAAAAoCa7iEAAAACA2L2IQAAAAAAlw4hAAAAAwGfIiEAAAACAusqIQAAAAEC6zYhAAAAAAELPiEAAAACgWtCIQAAAAKBC0YhAAAAAgNPciEA=</binary>
|
120
|
+
</binaryDataArray>
|
121
|
+
<binaryDataArray encodedLength="424">
|
122
|
+
<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitAccession="MS:1000131" unitName="number of counts" unitCvRef="MS"/>
|
123
|
+
<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" />
|
124
|
+
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
|
125
|
+
<binary>pb8PRZMGWEVVn1lFubaqRfkR9kQDlm9FT/ACRWNkKEWd/O9Ep2c3RawNg0XKUEtFGxvcRdjRFUZWyWdFw0hhRVb/BkUlNVtFoqkRRZLe+USzSApFXQv6RLsYMkWBsjFFk6OBRXLSNUVydedEVt7jRE/ECkUVMA5FHQ4YRbGREUWA9fZE+j5lRY5hx0UBRAxFY6cBRc2+OkU4JBBFsFsiRcmD+0Q9B4dF327GRZ1oDkVZ1w5FF5sLRfppFEW51lJFmBM4RXZCpEUdjvREDS6TRftxVUY/pL1FGRb1RCPjUEU0HGVFckCBRfDWH0V+wx9FkXcrRlr3bEVTNjdFvosIRVkXc0U5klxGCiYnRt0xHEa/RsVF1IQNRUNWNEXMaftEvNkPRRWB+ETuG19FMOLURL+sQUUdew5FuDkARQ==</binary>
|
126
|
+
</binaryDataArray>
|
127
|
+
</binaryDataArrayList>
|
128
|
+
</spectrum>
|
129
|
+
<spectrum id="scan=9035" index="564" defaultArrayLength="0">
|
130
|
+
<cvParam cvRef="MS" accession="MS:1000525" name="spectrum representation" />
|
131
|
+
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="2" />
|
132
|
+
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
|
133
|
+
<cvParam cvRef="MS" accession="MS:1000130" name="positive scan" />
|
134
|
+
<scanList count="1">
|
135
|
+
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
|
136
|
+
<scan>
|
137
|
+
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="5209.18" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
|
138
|
+
</scan>
|
139
|
+
</scanList>
|
140
|
+
<precursorList count="1">
|
141
|
+
<precursor>
|
142
|
+
<isolationWindow>
|
143
|
+
<cvParam cvRef="MS" accession="MS:1000827" name="isolation window target m/z" value="868.46765137" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
144
|
+
<cvParam cvRef="MS" accession="MS:1000828" name="isolation window lower offset" value="0" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
145
|
+
<cvParam cvRef="MS" accession="MS:1000829" name="isolation window upper offset" value="0" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
146
|
+
</isolationWindow>
|
147
|
+
<selectedIonList count="1">
|
148
|
+
<selectedIon>
|
149
|
+
<cvParam cvRef="MS" accession="MS:1000744" name="selected ion m/z" value="868.46765137" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
150
|
+
<cvParam cvRef="MS" accession="MS:1000041" name="charge state" value="3" />
|
151
|
+
<cvParam cvRef="MS" accession="MS:1000042" name="peak intensity" value="12840.7001953125" unitAccession="MS:1000132" unitName="percent of base peak" unitCvRef="MS" />
|
152
|
+
</selectedIon>
|
153
|
+
</selectedIonList>
|
154
|
+
<activation>
|
155
|
+
<cvParam cvRef="MS" accession="MS:1000509" name="activation energy" value="0" unitAccession="UO:0000266" unitName="electronvolt" unitCvRef="UO" />
|
156
|
+
<cvParam cvRef="MS" accession="MS:1000044" name="dissociation method" />
|
157
|
+
</activation>
|
158
|
+
</precursor>
|
159
|
+
</precursorList>
|
160
|
+
</spectrum>
|
161
|
+
<spectrum id="scan=9036" index="565" defaultArrayLength="83">
|
162
|
+
<cvParam cvRef="MS" accession="MS:1000525" name="spectrum representation" />
|
163
|
+
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1" />
|
164
|
+
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
|
165
|
+
<cvParam cvRef="MS" accession="MS:1000130" name="positive scan" />
|
166
|
+
<scanList count="1">
|
167
|
+
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
|
168
|
+
<scan>
|
169
|
+
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="5209.63" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
|
170
|
+
</scan>
|
171
|
+
</scanList>
|
172
|
+
<binaryDataArrayList count="2">
|
173
|
+
<binaryDataArray encodedLength="888">
|
174
|
+
<cvParam cvRef="MS" accession="MS:1000514" name="m/z array" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
175
|
+
<cvParam cvRef="MS" accession="MS:1000523" name="64-bit float" />
|
176
|
+
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
|
177
|
+
<binary>AAAAICXDh0AAAADgMMyHQAAAAOD5zIdAAAAAYLzNh0AAAAAARc+HQAAAAOC60IdAAAAA4PnQh0AAAADgCdWHQAAAAMCq2IdAAAAAwAXah0AAAAAAB96HQAAAAKC74IdAAAAAgAPjh0AAAABgGOOHQAAAACAQ5odAAAAAAFHvh0AAAAAgb/CHQAAAAEBK8YdAAAAAABrzh0AAAAAgyfWHQAAAAIBn+IdAAAAAIL0CiEAAAAAArQ+IQAAAAMA+GIhAAAAAgAAbiEAAAACgmx2IQAAAAIBhJohAAAAAwBwriEAAAADgHjCIQAAAAEACM4hAAAAAwKI1iEAAAABgHjuIQAAAACAmP4hAAAAAgCtBiEAAAADgMk2IQAAAAMAUWYhAAAAAIB1biEAAAACARluIQAAAAKAfXYhAAAAAYIJhiEAAAAAgyGSIQAAAAKBBc4hAAAAAwFxziEAAAAAAFXiIQAAAAGAYfYhAAAAAgCCEiEAAAAAgEoWIQAAAAAAVh4hAAAAAwMuHiEAAAADAdIiIQAAAAGATiYhAAAAAQBqLiEAAAACAFI2IQAAAAOACjohAAAAAgBqPiEAAAACgU4+IQAAAAKARkYhAAAAAABOTiEAAAADgIp6IQAAAAEDMoIhAAAAAYBGjiEAAAADgOqmIQAAAACD3qohAAAAAQCqriEAAAACgHK6IQAAAAIDJsIhAAAAAwDaxiEAAAAAAdrOIQAAAAEAktohAAAAAYAi3iEAAAAAA3bmIQAAAAEAxu4hAAAAAoMG9iEAAAABg1r2IQAAAACA3w4hAAAAAYNfKiEAAAACgnsyIQAAAAECo0IhAAAAA4MfWiEAAAABA6dqIQAAAAADP4ohAAAAAIA7jiEAAAADgqeWIQA==</binary>
|
178
|
+
</binaryDataArray>
|
179
|
+
<binaryDataArray encodedLength="444">
|
180
|
+
<cvParam cvRef="MS" accession="MS:1000515" name="intensity array" unitAccession="MS:1000131" unitName="number of counts" unitCvRef="MS"/>
|
181
|
+
<cvParam cvRef="MS" accession="MS:1000521" name="32-bit float" />
|
182
|
+
<cvParam cvRef="MS" accession="MS:1000576" name="no compression" />
|
183
|
+
<binary>Q4ImReexMkXWN0VF1fbbRA9nB0Xe/Q1Fa/urRX8rTEWmbiRFiZoORfixFUUuPEZFPmYCRftqzURuxC9FfZg1RbgrYEYmLB5FsK+FRoIRlEUDV4NF+TAaRecZNUW5phhFoIsjRa5JBUU+ezVFC3PqRNAl80TsNepE+vMgRfW5hEVv6VxFHYMFRV2NEUXvJCpFvHYNRQXMUUVMBFBFvGrvRLUEBEXs2OpEd8n6RBYJJkWzmyhFEaklRXVEp0UrKVtGKosjRUYeJEUJ8FVGN5knRjHQ7kX6AUNFxeEpRdmiD0V8QjpFpaUaRSSwn0UBmPZFtF8TRYJfB0VugzZF+AwJRf/G8EWjC4hGhv0sRYyvq0XuxoxFuKYdRaJqBEWvwCFFaZYgRdncL0W/dR1FrHL4REkECkUJ8lJFRDYXRatv+0Tha01Fr8E2RWCNDkU=</binary>
|
184
|
+
</binaryDataArray>
|
185
|
+
</binaryDataArrayList>
|
186
|
+
</spectrum>
|
187
|
+
<spectrum id="scan=9037" index="566" defaultArrayLength="0">
|
188
|
+
<cvParam cvRef="MS" accession="MS:1000525" name="spectrum representation" />
|
189
|
+
<cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="2" />
|
190
|
+
<cvParam cvRef="MS" accession="MS:1000294" name="mass spectrum" />
|
191
|
+
<cvParam cvRef="MS" accession="MS:1000130" name="positive scan" />
|
192
|
+
<scanList count="1">
|
193
|
+
<cvParam cvRef="MS" accession="MS:1000795" name="no combination" />
|
194
|
+
<scan>
|
195
|
+
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="5210.17" unitAccession="UO:0000010" unitName="second" unitCvRef="UO" />
|
196
|
+
</scan>
|
197
|
+
</scanList>
|
198
|
+
<precursorList count="1">
|
199
|
+
<precursor>
|
200
|
+
<isolationWindow>
|
201
|
+
<cvParam cvRef="MS" accession="MS:1000827" name="isolation window target m/z" value="1045.84021" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
202
|
+
<cvParam cvRef="MS" accession="MS:1000828" name="isolation window lower offset" value="0" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
203
|
+
<cvParam cvRef="MS" accession="MS:1000829" name="isolation window upper offset" value="0" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
204
|
+
</isolationWindow>
|
205
|
+
<selectedIonList count="1">
|
206
|
+
<selectedIon>
|
207
|
+
<cvParam cvRef="MS" accession="MS:1000744" name="selected ion m/z" value="1045.84021" unitAccession="MS:1000040" unitName="m/z" unitCvRef="MS" />
|
208
|
+
<cvParam cvRef="MS" accession="MS:1000041" name="charge state" value="3" />
|
209
|
+
<cvParam cvRef="MS" accession="MS:1000042" name="peak intensity" value="17405.5" unitAccession="MS:1000132" unitName="percent of base peak" unitCvRef="MS" />
|
210
|
+
</selectedIon>
|
211
|
+
</selectedIonList>
|
212
|
+
<activation>
|
213
|
+
<cvParam cvRef="MS" accession="MS:1000509" name="activation energy" value="0" unitAccession="UO:0000266" unitName="electronvolt" unitCvRef="UO" />
|
214
|
+
<cvParam cvRef="MS" accession="MS:1000044" name="dissociation method" />
|
215
|
+
</activation>
|
216
|
+
</precursor>
|
217
|
+
</precursorList>
|
218
|
+
</spectrum>
|
219
|
+
</spectrumList>
|
220
|
+
</run>
|
221
|
+
</mzML>
|