mspire 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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