mspire 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -37,19 +37,120 @@ Mspire is the *only* converter from mzml into imzml.
37
37
 
38
38
  ## Examples
39
39
 
40
- ### mzml
41
-
42
- require 'ms/mzml'
40
+ ```ruby
41
+ mzml_file = "yourfile.mzML"
42
+ ```
43
43
 
44
- MS::Mzml.open("somefile.mzml") do |mzml|
45
- spectrum = mzml[0] # the first spectrum ( same as mzml.spectrum(0) )
46
- spectrum = mzml["controllerType=0 controllerNumber=1 scan=2"] # query by id string
47
- mzml.spectrum_from_scan_num(23) # raises ScanNumbersNotFound or ScanNumbersNotUnique errors if problems
48
- end
44
+ ### mzml
49
45
 
50
- require 'ms/mass/aa'
46
+ See Mspire::Mzml, Mspire::CV::Paramable, Mspire::Mzml::Spectrum and other
47
+ objects associated with Mzml files.
48
+
49
+ #### reading
51
50
 
52
- MS::Mass::AA::MONO['A'] # or access by symbol
51
+ ```ruby
52
+ require 'mspire/mzml'
53
+
54
+ Mspire::Mzml.open(mzml_file) do |mzml|
55
+
56
+ # random access by index or id (even if file wasn't indexed)
57
+ spectrum = mzml[0]
58
+ spectrum = mzml["controllerType=0 controllerNumber=1 scan=2"]
59
+
60
+ spectrum.mzs
61
+ spectrum.intensities
62
+
63
+ # first 5 peaks
64
+ spectrum.peaks[0,5].each do |mz, intensity|
65
+ puts "#{mz} #{intensity}"
66
+ end
67
+
68
+ # true if key exists and no value, the value if present, or false
69
+ if spectrum.fetch_by_acc('MS:1000128')
70
+ puts "this is a profile spectrum!"
71
+ end
72
+
73
+ if spectrum.ms_level == 2
74
+ low_mz = spectrum.scan_list.first.scan_windows.first.fetch_by_acc("MS:1000501").to_i
75
+ puts "begin scan at #{low_mz} m/z"
76
+ end
77
+ end
78
+ ```
79
+
80
+ #### normalize spectra and write new mzML
81
+
82
+ See Mspire::Mzml for complete example building all objects from scratch.
83
+
84
+ ```ruby
85
+ require 'mspire/mzml'
86
+
87
+ Mspire::Mzml.open(mzml_file) do |mzml|
88
+
89
+ # MS:1000584 -> an mzML file
90
+ mzml.file_description.source_files << Mspire::Mzml::SourceFile[mzml_file].describe!('MS:1000584')
91
+ mspire = Mspire::Mzml::Software.new
92
+ mzml.software_list.push(mspire).uniq_by(&:id)
93
+ normalize_processing = Mspire::Mzml::DataProcessing.new("ms1_normalization") do |dp|
94
+ # 'MS:1001484' -> intensity normalization
95
+ dp.processing_methods << Mspire::Mzml::ProcessingMethod.new(mspire).describe!('MS:1001484')
96
+ end
97
+
98
+ mzml.data_processing_list << normalize_processing
99
+
100
+ spectra = mzml.map do |spectrum|
101
+ normalizer = 100.0 / spectrum.intensities.max
102
+ spectrum.intensities.map! {|i| i * normalizer }
103
+ spectrum
104
+ end
105
+ mzml.run.spectrum_list = Mspire::Mzml::SpectrumList.new(normalize_processing, spectra)
106
+ mzml.write(outfile)
107
+ end
108
+ ```
109
+ ### Masses
110
+
111
+ ```ruby
112
+ # very high precision NIST masses
113
+ aa_to_mass = Mspire::Mass::AA::MONO # a hash with residue masses
114
+ aa_to_mass['A'] # or access by symbol - Alanine
115
+
116
+ # elements
117
+ Mspire::Mass::MONO[:c] # carbon
118
+ Mspire::Mass::MONO[:e] # electron (includes other useful symbols)
119
+ ```
120
+
121
+ ### Isotopes and molecular formulas
122
+
123
+ ```ruby
124
+ require 'mspire/isotope'
125
+ isotopes = Mspire::Isotope::ISOTOPES # 288 isotopes
126
+ hydrogen_isotopes = isotopes.select {|iso| iso.element == :h }
127
+
128
+ c12 = Mspire::Isotope::BY_ELEMENT[:c].first
129
+ c12.atomic_number # also: mass_number atomic_mass relative_abundance average_mass
130
+ c12.mono # => true (this is the monoisotopic isotope)
131
+
132
+ require 'mspire/molecular_formula' # requires fftw gem
133
+ propane = Mspire::MolecularFormula['C3H8']
134
+ butane = propane + Mspire::MolecularFormula['CH2']
135
+ puts butane # => C4H10
136
+
137
+ require 'mspire/isotope/distribution' # requires fftw gem
138
+ puts butane.isotope_distribution # :total, :max, :first as arg to normalize
139
+ ```
140
+
141
+ ### Digestion
142
+
143
+ ```ruby
144
+ require 'mspire/digester'
145
+ trypsin = Mspire::Digester[:trypsin].
146
+ trypsin.digest("AACCKDDEERFFKPGG") # => ["AACCK", "DDEER", "FFKPGG"]
147
+ ```
148
+ ## TODO
149
+
150
+ * write the mzml index onto a file (along with correct SHA-1)
151
+ * implement spectrum unpack into an nmatrix or narray
152
+ * do a proper copy over of meta-data from mzml into imzml
153
+ * consider implementing params as a hash and formalizing more complete implementation agnostic params api
53
154
 
54
155
  ## Acronym
55
156
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.2
1
+ 0.8.3
@@ -5,4 +5,9 @@ module Enumerable
5
5
  return to_enum :index_by unless block_given?
6
6
  Hash[map { |elem| [yield(elem), elem] }]
7
7
  end
8
+
9
+ def uniq_by
10
+ h = {}
11
+ inject([]) {|a,x| h[yield(x)] ||= a << x}
12
+ end
8
13
  end
@@ -134,9 +134,14 @@ module Mspire
134
134
 
135
135
  def to_s(alphabetize=true)
136
136
  h = alphabetize ? self.sort : self
137
- h.flat_map {|k,v|
138
- [k.capitalize, v > 1 ? v : '']
139
- }.join
137
+ st = ''
138
+ h.each do |k,v|
139
+ if v > 0
140
+ st << k.to_s.capitalize
141
+ st << v.to_s if v > 1
142
+ end
143
+ end
144
+ st
140
145
  end
141
146
 
142
147
  def to_hash
@@ -1,5 +1,4 @@
1
1
 
2
- # TODO: trim down these require statements to only include upper level
3
2
  require 'mspire'
4
3
  require 'builder'
5
4
  require 'core_ext/enumerable'
@@ -19,6 +18,23 @@ module Mspire
19
18
  # spectrum.peaks do |mz,intensity|
20
19
  # puts "mz: #{mz} intensity: #{intensity}"
21
20
  # end
21
+ #
22
+ # spectrum.params # list all the params associated with an object
23
+ #
24
+ # # true if key exists and no value, the value if present, or false
25
+ # if spectrum.fetch_by_acc('MS:1000128')
26
+ # puts "this is a profile spectrum!"
27
+ # end
28
+ #
29
+ # if spectrum.ms_level == 2
30
+ # low_mz = spectrum.scan_list.first.scan_windows.first.to_i
31
+ # puts "begin scan at #{low_mz} m/z"
32
+ # end
33
+ # end
34
+ #
35
+ # mzml.each_chromatogram do |chrm|
36
+ # chrm.times
37
+ # chrm.intensities
22
38
  # end
23
39
  # end
24
40
  #
@@ -29,38 +45,68 @@ module Mspire
29
45
  #
30
46
  # Writing an mzml file from scratch:
31
47
  #
32
- # spec1 = Mspire::Mzml::Spectrum.new('scan=1') do |spec|
33
- # spec.describe_many! ['MS:1000127', ['MS:1000511', 1]]
34
- # spec.data_arrays = [[1,2,3], [4,5,6]]
35
- # spec.scan_list = Mspire::Mzml::ScanList.new do |sl|
36
- # scan = Mspire::Mzml::Scan.new do |scan|
37
- # # retention time of 40 seconds
38
- # scan.describe! ['MS:1000016', 40.0, 'UO:0000010']
39
- # end
40
- # sl << scan
41
- # end
42
- # end
43
- #
44
- # mzml = Mspire::Mzml.new do |mzml|
45
- # mzml.id = 'the_little_example'
46
- # mzml.cvs = Mspire::Mzml::CV::DEFAULT_CVS
47
- # mzml.file_description = Mspire::Mzml::FileDescription.new do |fd|
48
- # fd.file_content = Mspire::Mzml::FileContent.new
49
- # fd.source_files << Mspire::Mzml::SourceFile.new
50
- # end
51
- # default_instrument_config = Mspire::Mzml::InstrumentConfiguration.new("IC",[])
52
- # default_instrument_config.describe! 'MS:1000031'
53
- # mzml.instrument_configurations << default_instrument_config
54
- # software = Mspire::Mzml::Software.new
55
- # mzml.software_list << software
56
- # default_data_processing = Mspire::Mzml::DataProcessing.new("did_nothing")
57
- # mzml.data_processing_list << default_data_processing
58
- # mzml.run = Mspire::Mzml::Run.new("little_run", default_instrument_config) do |run|
59
- # spectrum_list = Mspire::Mzml::SpectrumList.new(default_data_processing)
60
- # spectrum_list.push(spec1)
61
- # run.spectrum_list = spectrum_list
62
- # end
63
- # end
48
+ # spec1 = Mspire::Mzml::Spectrum.new('scan=1') do |spec|
49
+ # # profile and ms_level 1
50
+ # spec.describe_many!(['MS:1000128', ['MS:1000511', 1]])
51
+ # spec.data_arrays = [
52
+ # Mspire::Mzml::DataArray[1,2,3].describe!('MS:1000514'),
53
+ # Mspire::Mzml::DataArray[4,5,6].describe!('MS:1000515')
54
+ # ]
55
+ # spec.scan_list = Mspire::Mzml::ScanList.new do |sl|
56
+ # scan = Mspire::Mzml::Scan.new do |scan|
57
+ # # retention time of 42 seconds
58
+ # scan.describe! 'MS:1000016', 40.0, 'UO:0000010'
59
+ # end
60
+ # sl << scan
61
+ # end
62
+ # end
63
+ #
64
+ # spec2 = Mspire::Mzml::Spectrum.new('scan=2') do |spec|
65
+ # # centroid, ms_level 2, MSn spectrum,
66
+ # spec.describe_many!(['MS:1000127', ['MS:1000511', 2], "MS:1000580"])
67
+ # spec.data_arrays = [
68
+ # Mspire::Mzml::DataArray[1,2,3.5].describe!('MS:1000514'),
69
+ # Mspire::Mzml::DataArray[5,6,5].describe!('MS:1000515')
70
+ # ]
71
+ # spec.scan_list = Mspire::Mzml::ScanList.new do |sl|
72
+ # scan = Mspire::Mzml::Scan.new do |scan|
73
+ # # retention time of 42 seconds
74
+ # scan.describe! 'MS:1000016', 45.0, 'UO:0000010'
75
+ # end
76
+ # sl << scan
77
+ # end
78
+ # precursor = Mspire::Mzml::Precursor.new( spec1.id )
79
+ # si = Mspire::Mzml::SelectedIon.new
80
+ # # the selected ion m/z:
81
+ # si.describe! "MS:1000744", 2.0
82
+ # # the selected ion charge state
83
+ # si.describe! "MS:1000041", 2
84
+ # # the selected ion intensity
85
+ # si.describe! "MS:1000042", 5
86
+ # precursor.selected_ions = [si]
87
+ # spec.precursors = [precursor]
88
+ # end
89
+ #
90
+ # mzml = Mspire::Mzml.new do |mzml|
91
+ # mzml.id = 'ms1_and_ms2'
92
+ # mzml.cvs = Mspire::Mzml::CV::DEFAULT_CVS
93
+ # mzml.file_description = Mspire::Mzml::FileDescription.new do |fd|
94
+ # fd.file_content = Mspire::Mzml::FileContent.new
95
+ # fd.source_files << Mspire::Mzml::SourceFile.new
96
+ # end
97
+ # default_instrument_config = Mspire::Mzml::InstrumentConfiguration.new("IC").describe!('MS:1000031')
98
+ # mzml.instrument_configurations << default_instrument_config
99
+ # software = Mspire::Mzml::Software.new
100
+ # mzml.software_list << software
101
+ # default_data_processing = Mspire::Mzml::DataProcessing.new("did_nothing")
102
+ # mzml.data_processing_list << default_data_processing
103
+ # mzml.run = Mspire::Mzml::Run.new("little_run", default_instrument_config) do |run|
104
+ # spectrum_list = Mspire::Mzml::SpectrumList.new(default_data_processing, [spec1, spec2])
105
+ # run.spectrum_list = spectrum_list
106
+ # end
107
+ # end
108
+ #
109
+ # mzml.write("writtenxml.mzML")
64
110
  class Mzml
65
111
  include Enumerable # each_spectrum
66
112
 
@@ -20,7 +20,7 @@ module Mspire
20
20
  # similar to an array but is really pulling objects by reading an io
21
21
  # object. Sets the spectrum_list attribute of array_like if it can be
22
22
  # set.
23
- def initialize(default_data_processing, array_like, id_to_index=nil)
23
+ def initialize(default_data_processing, array_like=[], id_to_index=nil)
24
24
  if array_like.respond_to?(:spectrum_list=)
25
25
  array_like.spectrum_list = self
26
26
  end
@@ -10,7 +10,7 @@ module Mspire
10
10
 
11
11
  attr_accessor :id, :version
12
12
 
13
- def initialize(id='mspire', version=Mspire::VERSION)
13
+ def initialize(id="mspire_#{Mspire::VERSION}", version=Mspire::VERSION)
14
14
  @id, @version = id, version
15
15
  params_init
16
16
  yield(self) if block_given?
@@ -8,8 +8,6 @@ module Mspire
8
8
  include Mspire::CV::Paramable
9
9
  extend Mspire::Mzml::List
10
10
 
11
- DEFAULT_SOURCEFILE_ID = 'sourcefile1'
12
-
13
11
  # (required) An identifier for this file.
14
12
  attr_accessor :id
15
13
  # (required) Name of the source file, without reference to location
@@ -18,9 +16,11 @@ module Mspire
18
16
  # (required) URI-formatted location where the file was retrieved.
19
17
  attr_accessor :location
20
18
 
21
- # expands the path and sets the name and location
19
+ # expands the path and sets the name and location. Sets the id to the
20
+ # basename.
22
21
  def self.[](path, opts={})
23
- self.new DEFAULT_SOURCEFILE_ID, *uri_basename_and_path(path)
22
+ (name, path) = uri_basename_and_path(path)
23
+ self.new(name, name, path)
24
24
  end
25
25
 
26
26
  # takes a filename (with a relative or expanded path) and returns the
@@ -33,6 +33,15 @@ describe Mspire::MolecularFormula do
33
33
  Mspire::MolecularFormula['Ni7SE3'].to_hash.should == {:ni=>7, :s=>1, :e=>3}
34
34
  end
35
35
 
36
+ describe 'correct to_s' do
37
+ subject {
38
+ Mspire::MolecularFormula.new({:c=>669, :h=>1129, :o=>185, :n=>215, :s=>4, :p=>0, :se=>0})
39
+ }
40
+ it 'to_s gives output' do
41
+ subject.to_s.should == "C669H1129N215O185S4"
42
+ end
43
+ end
44
+
36
45
  describe 'conversion' do
37
46
 
38
47
  subject {
@@ -62,22 +62,28 @@ describe Mspire::Mzml do
62
62
  @file = TESTFILES + "/mspire/mzml/j24z.idx_comp.3.mzML"
63
63
  end
64
64
 
65
- specify 'adding to source file, software, and data processing'
66
- #Mspire::Mzml.open(@file) do |mzml|
67
- # mzml.source
68
- #end
69
-
70
65
  specify 'normalize highest peak of each spectrum to 100' do
71
- # this is very bad form to not change data_processing etc, but it
72
- # demonstrates the minimal amount to normalize the spectra.
73
66
  outfile = TESTFILES + "/mspire/mzml/j24z.idx_comp.3.NORMALIZED.mzML"
67
+
74
68
  Mspire::Mzml.open(@file) do |mzml|
69
+
70
+ # MS:1000584 -> an mzML file
71
+ mzml.file_description.source_files << Mspire::Mzml::SourceFile[@file].describe!('MS:1000584')
72
+ mspire = Mspire::Mzml::Software.new
73
+ mzml.software_list.push(mspire).uniq_by(&:id)
74
+ normalize_processing = Mspire::Mzml::DataProcessing.new("ms1_normalization") do |dp|
75
+ # 'MS:1001484' -> intensity normalization
76
+ dp.processing_methods << Mspire::Mzml::ProcessingMethod.new(mspire).describe!('MS:1001484')
77
+ end
78
+
79
+ mzml.data_processing_list << normalize_processing
80
+
75
81
  spectra = mzml.map do |spectrum|
76
82
  normalizer = 100.0 / spectrum.intensities.max
77
83
  spectrum.intensities.map! {|i| i * normalizer }
78
84
  spectrum
79
85
  end
80
- mzml.run.spectrum_list = Mspire::Mzml::SpectrumList.new(mzml.run.spectrum_list.default_data_processing, spectra)
86
+ mzml.run.spectrum_list = Mspire::Mzml::SpectrumList.new(normalize_processing, spectra)
81
87
  mzml.write(outfile)
82
88
  end
83
89
  # this output was checked to be accurate with TOPPView
@@ -0,0 +1,117 @@
1
+ require 'spec_helper'
2
+
3
+ # we aren't testing for preciseness in these examples (that is done
4
+ # elsewhere), but we are verifying that it runs with no errors (i.e., the
5
+ # syntax and api is all current)
6
+
7
+ describe 'performing what is on the readme' do
8
+ describe 'mzml' do
9
+ let(:mzml_file) { TESTFILES + "/mspire/mzml/j24z.idx_comp.3.mzML" }
10
+ let(:outfile) { TESTFILES + "/mspire/mzml/j24z.idx_comp.3.NORMALIZED.mzML" }
11
+
12
+ specify "reading an mzml file" do
13
+
14
+ reply = capture_stdout do
15
+
16
+ require 'mspire/mzml'
17
+
18
+ Mspire::Mzml.open(mzml_file) do |mzml|
19
+
20
+ # random access by index or id (even if file wasn't indexed)
21
+ spectrum = mzml[0]
22
+ spectrum = mzml["controllerType=0 controllerNumber=1 scan=2"]
23
+
24
+ spectrum.mzs
25
+ spectrum.intensities
26
+
27
+ # first 5 peaks
28
+ spectrum.peaks[0,5].each do |mz, intensity|
29
+ puts "#{mz} #{intensity}"
30
+ end
31
+
32
+ # true if key exists and no value, the value if present, or false
33
+ if spectrum.fetch_by_acc('MS:1000128')
34
+ puts "this is a profile spectrum!"
35
+ end
36
+
37
+ if spectrum.ms_level == 2
38
+ low_mz = spectrum.scan_list.first.scan_windows.first.fetch_by_acc("MS:1000501").to_i
39
+ puts "begin scan at #{low_mz} m/z"
40
+ end
41
+ end
42
+
43
+ end
44
+ reply.each_line.map.to_a.size.should == 6
45
+ reply.include?('begin scan at 120').should be_true
46
+ end
47
+
48
+ specify "normalizing and writing an mzml file" do
49
+ require 'mspire/mzml'
50
+
51
+ Mspire::Mzml.open(mzml_file) do |mzml|
52
+
53
+ # MS:1000584 -> an mzML file
54
+ mzml.file_description.source_files << Mspire::Mzml::SourceFile[mzml_file].describe!('MS:1000584')
55
+ mspire = Mspire::Mzml::Software.new
56
+ mzml.software_list.push(mspire).uniq_by(&:id)
57
+ normalize_processing = Mspire::Mzml::DataProcessing.new("ms1_normalization") do |dp|
58
+ # 'MS:1001484' -> intensity normalization
59
+ dp.processing_methods << Mspire::Mzml::ProcessingMethod.new(mspire).describe!('MS:1001484')
60
+ end
61
+
62
+ mzml.data_processing_list << normalize_processing
63
+
64
+ spectra = mzml.map do |spectrum|
65
+ normalizer = 100.0 / spectrum.intensities.max
66
+ spectrum.intensities.map! {|i| i * normalizer }
67
+ spectrum
68
+ end
69
+ mzml.run.spectrum_list = Mspire::Mzml::SpectrumList.new(normalize_processing, spectra)
70
+ mzml.write(outfile)
71
+ end
72
+ file_check(outfile)
73
+ end
74
+
75
+ end
76
+
77
+ specify 'masses' do
78
+ require 'mspire/mass/aa'
79
+
80
+ # very high precision NIST masses
81
+ aa_to_mass = Mspire::Mass::AA::MONO # a hash with residue masses
82
+ aa_to_mass['A'] # or access by symbol - Alanine
83
+
84
+ # elements
85
+ Mspire::Mass::MONO[:c] # carbon
86
+ Mspire::Mass::MONO[:e] # electron (includes other useful symbols)
87
+ end
88
+
89
+ specify 'isotopes and molecular formulas' do
90
+ reply = capture_stdout do
91
+
92
+ require 'mspire/isotope'
93
+ isotopes = Mspire::Isotope::ISOTOPES # 288 isotopes
94
+ hydrogen_isotopes = isotopes.select {|iso| iso.element == :h }
95
+
96
+ c12 = Mspire::Isotope::BY_ELEMENT[:c].first
97
+ c12.atomic_number # also: mass_number atomic_mass relative_abundance average_mass
98
+ c12.mono # => true (this is the monoisotopic isotope)
99
+
100
+ require 'mspire/molecular_formula' # requires fftw gem
101
+ propane = Mspire::MolecularFormula['C3H8']
102
+ butane = propane + Mspire::MolecularFormula['CH2']
103
+ puts butane # => C4H10
104
+
105
+ require 'mspire/isotope/distribution' # requires fftw gem
106
+ puts butane.isotope_distribution # :total, :max, :first as arg to normalize
107
+ end
108
+ end
109
+
110
+ specify 'digestion' do
111
+ reply = capture_stdout do
112
+ require 'mspire/digester'
113
+ trypsin = Mspire::Digester[:trypsin]
114
+ p trypsin.digest("AACCKDDEERFFKPGG") # => ["AACCK", "DDEER", "FFKPGG"]
115
+ end
116
+ end
117
+ end
@@ -44,5 +44,21 @@ def file_check(filename, delete=true, &block)
44
44
  end
45
45
 
46
46
  def sanitize_mspire_version_xml(string)
47
- string.gsub(/"mspire" version="([\.\d]+)"/, %Q{"mspire" version="X.X.X"})
47
+ string.gsub(/"mspire(_[\d\.]+)?" version="([\.\d]+)"/, %Q{"mspire" version="X.X.X"})
48
48
  end
49
+
50
+ require 'stringio'
51
+
52
+ module Kernel
53
+
54
+ def capture_stdout
55
+ out = StringIO.new
56
+ $stdout = out
57
+ yield
58
+ out.string
59
+ ensure
60
+ $stdout = STDOUT
61
+ end
62
+
63
+ end
64
+
@@ -9,12 +9,15 @@
9
9
  <cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum"/>
10
10
  <cvParam cvRef="MS" accession="MS:1000580" name="MSn spectrum"/>
11
11
  </fileContent>
12
- <sourceFileList count="1">
12
+ <sourceFileList count="2">
13
13
  <sourceFile id="RAW1" name="j24.raw" location="file://.">
14
14
  <cvParam cvRef="MS" accession="MS:1000768" name="Thermo nativeID format"/>
15
15
  <cvParam cvRef="MS" accession="MS:1000563" name="Thermo RAW file"/>
16
16
  <cvParam cvRef="MS" accession="MS:1000569" name="SHA-1" value="6023d121fb6ca7f19fada3b6c5e4d5da09c95f12"/>
17
17
  </sourceFile>
18
+ <sourceFile id="j24z.idx_comp.3.mzML" name="j24z.idx_comp.3.mzML" location="file:///home/jtprince/dev/mspire/spec/testfiles/mspire/mzml">
19
+ <cvParam cvRef="MS" accession="MS:1000584" name="mzML file"/>
20
+ </sourceFile>
18
21
  </sourceFileList>
19
22
  </fileDescription>
20
23
  <referenceableParamGroupList count="1">
@@ -23,13 +26,15 @@
23
26
  <cvParam cvRef="MS" accession="MS:1000529" name="instrument serial number" value="SN1025B"/>
24
27
  </referenceableParamGroup>
25
28
  </referenceableParamGroupList>
26
- <softwareList count="2">
29
+ <softwareList count="3">
27
30
  <software id="Xcalibur" version="2.4 SP1">
28
31
  <cvParam cvRef="MS" accession="MS:1000532" name="Xcalibur"/>
29
32
  </software>
30
33
  <software id="pwiz" version="2.1.2086">
31
34
  <cvParam cvRef="MS" accession="MS:1000615" name="ProteoWizard"/>
32
35
  </software>
36
+ <software id="mspire_0.8.2" version="0.8.2">
37
+ </software>
33
38
  </softwareList>
34
39
  <instrumentConfigurationList count="2">
35
40
  <instrumentConfiguration id="IC1">
@@ -65,16 +70,21 @@
65
70
  <softwareRef ref="Xcalibur"/>
66
71
  </instrumentConfiguration>
67
72
  </instrumentConfigurationList>
68
- <dataProcessingList count="1">
73
+ <dataProcessingList count="2">
69
74
  <dataProcessing id="pwiz_Reader_Thermo_conversion">
70
75
  <processingMethod order="0" softwareRef="pwiz">
71
76
  <cvParam cvRef="MS" accession="MS:1000544" name="Conversion to mzML"/>
72
77
  </processingMethod>
73
78
  </dataProcessing>
79
+ <dataProcessing id="ms1_normalization">
80
+ <processingMethod order="0" softwareRef="mspire_0.8.2">
81
+ <cvParam cvRef="MS" accession="MS:1001484" name="intensity normalization"/>
82
+ </processingMethod>
83
+ </dataProcessing>
74
84
  </dataProcessingList>
75
85
  <run id="j24" defaultInstrumentConfigurationRef="IC1" defaultSourceFileRef="RAW1" startTimeStamp="2010-07-08T11:34:52Z">
76
- <spectrumList count="3" defaultDataProcessingRef="pwiz_Reader_Thermo_conversion">
77
- <spectrum index="0" id="controllerType=0 controllerNumber=1 scan=1" defaultArrayLength="20168">
86
+ <spectrumList count="3" defaultDataProcessingRef="ms1_normalization">
87
+ <spectrum index="0" id="controllerType=0 controllerNumber=1 scan=1" defaultArrayLength="20168" dataProcessingRef="pwiz_Reader_Thermo_conversion">
78
88
  <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="1"/>
79
89
  <cvParam cvRef="MS" accession="MS:1000579" name="MS1 spectrum"/>
80
90
  <cvParam cvRef="MS" accession="MS:1000130" name="positive scan"/>
@@ -113,7 +123,7 @@
113
123
  </binaryDataArray>
114
124
  </binaryDataArrayList>
115
125
  </spectrum>
116
- <spectrum index="1" id="controllerType=0 controllerNumber=1 scan=2" defaultArrayLength="315">
126
+ <spectrum index="1" id="controllerType=0 controllerNumber=1 scan=2" defaultArrayLength="315" dataProcessingRef="pwiz_Reader_Thermo_conversion">
117
127
  <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="2"/>
118
128
  <cvParam cvRef="MS" accession="MS:1000580" name="MSn spectrum"/>
119
129
  <cvParam cvRef="MS" accession="MS:1000130" name="positive scan"/>
@@ -173,7 +183,7 @@
173
183
  </binaryDataArray>
174
184
  </binaryDataArrayList>
175
185
  </spectrum>
176
- <spectrum index="2" id="controllerType=0 controllerNumber=1 scan=3" defaultArrayLength="634">
186
+ <spectrum index="2" id="controllerType=0 controllerNumber=1 scan=3" defaultArrayLength="634" dataProcessingRef="pwiz_Reader_Thermo_conversion">
177
187
  <cvParam cvRef="MS" accession="MS:1000511" name="ms level" value="2"/>
178
188
  <cvParam cvRef="MS" accession="MS:1000580" name="MSn spectrum"/>
179
189
  <cvParam cvRef="MS" accession="MS:1000130" name="positive scan"/>
@@ -14,7 +14,7 @@
14
14
  </sourceFileList>
15
15
  </fileDescription>
16
16
  <softwareList count="1">
17
- <software id="mspire" version="0.6.22">
17
+ <software id="mspire_0.6.22" version="0.6.22">
18
18
  </software>
19
19
  </softwareList>
20
20
  <instrumentConfigurationList count="1">
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mspire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-07-27 00:00:00.000000000 Z
13
+ date: 2012-09-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
@@ -342,6 +342,7 @@ files:
342
342
  - spec/mspire/peaklist_spec.rb
343
343
  - spec/mspire/plms1_spec.rb
344
344
  - spec/mspire/quant/qspec_spec.rb
345
+ - spec/mspire/readme_spec.rb
345
346
  - spec/mspire/spectrum_spec.rb
346
347
  - spec/mspire/user_param_spec.rb
347
348
  - spec/mspire_spec.rb
@@ -402,7 +403,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
402
403
  version: '0'
403
404
  requirements: []
404
405
  rubyforge_project:
405
- rubygems_version: 1.8.18
406
+ rubygems_version: 1.8.23
406
407
  signing_key:
407
408
  specification_version: 3
408
409
  summary: mass spectrometry proteomics, lipidomics, and tools