mspire 0.6.1 → 0.6.2

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/Rakefile CHANGED
@@ -13,10 +13,11 @@ Jeweler::Tasks.new do |gem|
13
13
  gem.email = "jtprince@gmail.com"
14
14
  gem.authors = ["John T. Prince", "Simon Chiang"]
15
15
  gem.add_dependency "nokogiri", "~> 1.5"
16
+ gem.add_dependency "bsearch", ">= 1.5.0"
17
+ gem.add_dependency "obo", ">= 0.1.0"
16
18
  gem.add_development_dependency "rspec", "~> 2.6"
17
19
  gem.add_development_dependency "jeweler", "~> 1.5.2"
18
20
  gem.add_development_dependency "rcov", ">= 0"
19
- gem.add_development_dependency "obo", ">= 0.1.0"
20
21
  end
21
22
  Jeweler::RubygemsDotOrgTasks.new
22
23
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.1
1
+ 0.6.2
data/lib/ms/mass.rb CHANGED
@@ -16,6 +16,7 @@ module MS
16
16
  end.reduce(:+)
17
17
  end
18
18
 
19
+ ELECTRON = 0.0005486 # www.mikeblaber.org/oldwine/chm1045/notes/Atoms/.../Atoms03.htm
19
20
  H_PLUS = 1.00727646677
20
21
  # + http://www.unimod.org/masses.html
21
22
  MONO_STR = {
@@ -37,6 +38,7 @@ module MS
37
38
  'h' => 1.007825035, # +
38
39
  'h2o' => 18.0105647,
39
40
  'oh' => 17.002739665,
41
+ 'e' => 0.0005486,
40
42
  }
41
43
  AVG_STR = {
42
44
  'h+' => 1.007276, # using Mascot_H_plus mass (is this right for AVG??)
data/lib/ms/mzml.rb CHANGED
@@ -113,6 +113,9 @@ module MS
113
113
  base64 = binary_data_array_n.xpath('./binary').text
114
114
  MS::Mzml.unpack_binary(base64, accessions)
115
115
  end
116
+ # if there is no spectrum, we will still return a spectrum object, it
117
+ # just has no mzs or intensities
118
+ data_arrays = [[], []] if data_arrays.size == 0
116
119
  MS::Spectrum.new(data_arrays)
117
120
  end
118
121
 
data/lib/ms/spectrum.rb CHANGED
@@ -1,171 +1,134 @@
1
- module MS
2
- class Spectrum
3
- include Enumerable
4
-
5
- # The underlying data store.
6
- attr_reader :data
7
-
8
- # data takes an array: [mzs, intensities]
9
- # @return [MS::Spectrum]
10
- # @param [Array] data two element array of mzs and intensities
11
- def initialize(data)
12
- @data = data
13
- end
14
-
15
- def self.from_peaks(ar_of_doublets)
16
- _mzs = []
17
- _ints = []
18
- ar_of_doublets.each do |mz, int|
19
- _mzs << mz
20
- _ints << int
21
- end
22
- self.new([_mzs, _ints])
23
- end
24
-
25
- # found by querying the size of the data store. This should almost always
26
- # be 2 (m/z and intensities)
27
- def size
28
- @data.size
29
- end
30
-
31
- def ==(other)
32
- mzs == other.mzs && intensities == other.intensities
33
- end
34
-
35
- # An array of the mz data.
36
- def mzs
37
- @data[0]
38
- end
39
-
40
- # An array of the intensities data, corresponding to mzs.
41
- def intensities
42
- @data[1]
43
- end
44
-
45
- def mzs_and_intensities
46
- [@data[0], @data[1]]
47
- end
48
-
49
- # retrieve an m/z and intensity doublet at that index
50
- def [](array_index)
51
- [mzs[array_index], intensities[array_index]]
52
- end
53
-
54
- # yields(mz, inten) across the spectrum, or array of doublets if no block
55
- def peaks(&block)
56
- (m, i) = mzs_and_intensities
57
- m.zip(i, &block)
58
- end
59
-
60
- alias_method :each, :peaks
61
- alias_method :each_peak, :peaks
62
-
63
- # if the mzs and intensities are the same then the spectra are considered
64
- # equal
65
- def ==(other)
66
- mzs == other.mzs && intensities == other.intensities
67
- end
68
-
69
- # returns a new spectrum whose intensities have been normalized by the tic
70
- def normalize
71
- tic = self.intensities.inject(0.0) {|sum,int| sum += int }
72
- MS::Spectrum.new([self.mzs, self.intensities.map {|v| v / tic }])
73
- end
74
-
75
- ## uses index function and returns the intensity at that value
76
- #def intensity_at_mz(mz)
77
- #if x = index(mz)
78
- #intensities[x]
79
- #else
80
- #nil
81
- #end
82
- #end
83
-
84
- ## index mz, tolerance = :nearest(1), Float, :nearest_within_integer
85
-
86
- ## returns the index of the first value matching that m/z. the argument m/z
87
- ## may be less precise than the actual m/z (rounding to the same precision
88
- ## given) but must be at least integer precision (after rounding)
89
- ## implemented as binary search (bsearch from the web)
90
- #def index(mz)
91
- #mz_ar = mzs
92
- #return_val = nil
93
- #ind = mz_ar.bsearch_lower_boundary{|x| x <=> mz }
94
- #if mz_ar[ind] == mz
95
- #return_val = ind
96
- #else
97
- ## do a rounding game to see which one is it, or nil
98
- ## find all the values rounding to the same integer in the locale
99
- ## test each one fully in turn
100
- #mz = mz.to_f
101
- #mz_size = mz_ar.size
102
- #if ((ind < mz_size) and equal_after_rounding?(mz_ar[ind], mz))
103
- #return_val = ind
104
- #else # run the loop
105
- #up = ind
106
- #loop do
107
- #up += 1
108
- #if up >= mz_size
109
- #break
110
- #end
111
- #mz_up = mz_ar[up]
112
- #if (mz_up.ceil - mz.ceil >= 2)
113
- #break
114
- #else
115
- #if equal_after_rounding?(mz_up, mz)
116
- #return_val = up
117
- #return return_val
118
- #end
119
- #end
120
- #end
121
- #dn= ind
122
- #loop do
123
- #dn -= 1
124
- #if dn < 0
125
- #break
126
- #end
127
- #mz_dn = mz_ar[dn]
128
- #if (mz.floor - mz_dn.floor >= 2)
129
- #break
130
- #else
131
- #if equal_after_rounding?(mz_dn, mz)
132
- #return_val = dn
133
- #return return_val
134
- #end
135
- #end
136
- #end
137
- #end
138
- #end
139
- #return_val
140
- #end
141
-
142
- ## less_precise should be a float
143
- ## precise should be a float
144
- #def equal_after_rounding?(precise, less_precise) # :nodoc:
145
- ## determine the precision of less_precise
146
- #exp10 = precision_as_neg_int(less_precise)
147
- ##puts "EXP10: #{exp10}"
148
- #answ = ((precise*exp10).round == (less_precise*exp10).round)
149
- ##puts "TESTING FOR EQUAL: #{precise} #{less_precise}"
150
- ##puts answ
151
- #(precise*exp10).round == (less_precise*exp10).round
152
- #end
153
-
154
- ## returns 1 for ones place, 10 for tenths, 100 for hundredths
155
- ## to a precision exceeding 1e-6
156
- #def precision_as_neg_int(float) # :nodoc:
157
- #neg_exp10 = 1
158
- #loop do
159
- #over = float * neg_exp10
160
- #rounded = over.round
161
- #if (over - rounded).abs <= 1e-6
162
- #break
163
- #end
164
- #neg_exp10 *= 10
165
- #end
166
- #neg_exp10
167
- #end
168
-
169
-
170
- end
171
- end
1
+ require 'bsearch'
2
+
3
+ module MS
4
+ class Spectrum
5
+ include Enumerable
6
+
7
+ # The underlying data store. methods are implemented so that data[0] is
8
+ # the m/z's and data[1] is intensities
9
+ attr_reader :data
10
+
11
+ # data takes an array: [mzs, intensities]
12
+ # @return [MS::Spectrum]
13
+ # @param [Array] data two element array of mzs and intensities
14
+ def initialize(data)
15
+ @data = data
16
+ end
17
+
18
+ def self.from_peaks(ar_of_doublets)
19
+ _mzs = []
20
+ _ints = []
21
+ ar_of_doublets.each do |mz, int|
22
+ _mzs << mz
23
+ _ints << int
24
+ end
25
+ self.new([_mzs, _ints])
26
+ end
27
+
28
+ # found by querying the size of the data store. This should almost always
29
+ # be 2 (m/z and intensities)
30
+ def size
31
+ @data.size
32
+ end
33
+
34
+ def ==(other)
35
+ mzs == other.mzs && intensities == other.intensities
36
+ end
37
+
38
+ # An array of the mz data.
39
+ def mzs
40
+ @data[0]
41
+ end
42
+
43
+ # An array of the intensities data, corresponding to mzs.
44
+ def intensities
45
+ @data[1]
46
+ end
47
+
48
+ def mzs_and_intensities
49
+ [@data[0], @data[1]]
50
+ end
51
+
52
+ # retrieve an m/z and intensity doublet at that index
53
+ def [](array_index)
54
+ [@data[0][array_index], @data[1][array_index]]
55
+ end
56
+
57
+ # yields(mz, inten) across the spectrum, or array of doublets if no block
58
+ def peaks(&block)
59
+ @data[0].zip(@data[1], &block)
60
+ end
61
+
62
+ alias_method :each, :peaks
63
+ alias_method :each_peak, :peaks
64
+
65
+ # if the mzs and intensities are the same then the spectra are considered
66
+ # equal
67
+ def ==(other)
68
+ mzs == other.mzs && intensities == other.intensities
69
+ end
70
+
71
+ # returns a new spectrum whose intensities have been normalized by the tic
72
+ # of another given value
73
+ def normalize(norm_by=:tic)
74
+ norm_by = tic if norm_by == :tic
75
+ MS::Spectrum.new([self.mzs, self.intensities.map {|v| v / norm_by }])
76
+ end
77
+
78
+ def tic
79
+ self.intensities.reduce(:+)
80
+ end
81
+
82
+ # ensures that the m/z values are monotonically ascending (some
83
+ # instruments are bad about this)
84
+ # returns self
85
+ def sort!
86
+ _peaks = peaks.to_a
87
+ _peaks.sort!
88
+ _peaks.each_with_index {|(mz,int), i| @data[0][i] = mz ; @data[1][i] = int }
89
+ self
90
+ end
91
+
92
+ # returns the m/z that is closest to the value, favoring the lower m/z in
93
+ # the case of a tie. Uses a binary search.
94
+ def find_nearest(val)
95
+ mzs[find_nearest_index(val)]
96
+ end
97
+
98
+ # same as find_nearest but returns the index of the peak
99
+ def find_nearest_index(val)
100
+ find_all_nearest_index(val).first
101
+ end
102
+
103
+ def find_all_nearest_index(val)
104
+ _mzs = mzs
105
+ index = _mzs.bsearch_lower_boundary {|v| v <=> val }
106
+ if index == _mzs.size
107
+ [_mzs.size-1]
108
+ else
109
+ # if the previous m/z diff is smaller, use it
110
+ if index == 0
111
+ [index]
112
+ else
113
+ case (val - _mzs[index-1]).abs <=> (_mzs[index] - val).abs
114
+ when -1
115
+ [index-1]
116
+ when 0
117
+ [index-1, index]
118
+ when 1
119
+ [index]
120
+ end
121
+ end
122
+ end
123
+ end
124
+
125
+ def find_all_nearest(val)
126
+ find_all_nearest_index(val).map {|i| mzs[i] }
127
+ end
128
+
129
+ end
130
+ end
131
+
132
+
133
+
134
+
@@ -10,12 +10,11 @@ require 'ms/ident/pepxml/search_hit'
10
10
  require 'ms/ident/pepxml/search_hit/modification_info'
11
11
 
12
12
  describe "creating an MS::Ident::Pepxml" do
13
- include MS::Ident
14
13
 
15
14
  it "can be creating in a nested fashion reflecting internal structure" do
16
15
  tags_that_should_be_present = %w(msms_pipeline_analysis msms_run_summary sample_enzyme search_summary spectrum_query search_result search_hit modification_info mod_aminoacid_mass search_score)
17
16
 
18
- pepxml = Pepxml.new do |msms_pipeline_analysis|
17
+ pepxml = MS::Ident::Pepxml.new do |msms_pipeline_analysis|
19
18
  msms_pipeline_analysis.merge!(:summary_xml => "020.xml") do |msms_run_summary|
20
19
  # prep the sample enzyme and search_summary
21
20
  msms_run_summary.merge!(
@@ -39,16 +38,16 @@ describe "creating an MS::Ident::Pepxml" do
39
38
  :max_num_internal_cleavages => 2,
40
39
  :min_number_termini => 2
41
40
  )
42
- modifications << Pepxml::AminoacidModification.new(
41
+ modifications << MS::Ident::Pepxml::AminoacidModification.new(
43
42
  :aminoacid => 'M', :massdiff => 15.9994, :mass => MS::Mass::AA::MONO['M']+15.9994,
44
43
  :variable => 'Y', :symbol => '*')
45
44
  # invented, for example, a protein terminating mod
46
- modifications << Pepxml::TerminalModification.new(
45
+ modifications << MS::Ident::Pepxml::TerminalModification.new(
47
46
  :terminus => 'c', :massdiff => 23.3333, :mass => MS::Mass::MONO['oh'] + 23.3333,
48
47
  :variable => 'Y', :symbol => '[', :protein_terminus => 'c',
49
48
  :description => 'leave protein_terminus off if not protein mod'
50
49
  )
51
- modifications << Pepxml::TerminalModification.new(
50
+ modifications << MS::Ident::Pepxml::TerminalModification.new(
52
51
  :terminus => 'c', :massdiff => 25.42322, :mass => MS::Mass::MONO['h+'] + 25.42322,
53
52
  :variable => 'N', :symbol => ']', :description => 'example: c term mod'
54
53
  )
@@ -58,18 +57,18 @@ describe "creating an MS::Ident::Pepxml" do
58
57
  :enzyme_info => 'Trypsin(KR/P) 1 1 KR P', # etc....
59
58
  )
60
59
  end
61
- spectrum_query1 = Pepxml::SpectrumQuery.new(
60
+ spectrum_query1 = MS::Ident::Pepxml::SpectrumQuery.new(
62
61
  :spectrum => '020.3.3.1', :start_scan => 3, :end_scan => 3,
63
62
  :precursor_neutral_mass => 1120.93743421875, :assumed_charge => 1
64
63
  ) do |search_results|
65
- search_result1 = Pepxml::SearchResult.new do |search_hits|
64
+ search_result1 = MS::Ident::Pepxml::SearchResult.new do |search_hits|
66
65
  modpositions = [[1, 243.1559], [6, 167.0581], [7,181.085]].map do |pair|
67
- Pepxml::SearchHit::ModificationInfo::ModAminoacidMass.new(*pair)
66
+ MS::Ident::Pepxml::SearchHit::ModificationInfo::ModAminoacidMass.new(*pair)
68
67
  end
69
68
  # order(modified_peptide, mod_aminoacid_masses, :mod_nterm_mass, :mod_cterm_mass)
70
69
  # or can be set by hash
71
- mod_info = Pepxml::SearchHit::ModificationInfo.new('Y#RLGGS#T#K', modpositions)
72
- search_hit1 = Pepxml::SearchHit.new(
70
+ mod_info = MS::Ident::Pepxml::SearchHit::ModificationInfo.new('Y#RLGGS#T#K', modpositions)
71
+ search_hit1 = MS::Ident::Pepxml::SearchHit.new(
73
72
  :hit_rank=>1, :peptide=>'YRLGGSTK', :peptide_prev_aa => "R", :peptide_next_aa => "K",
74
73
  :protein => "gi|16130113|ref|NP_416680.1|", :num_tot_proteins => 1, :num_matched_ions => 5,
75
74
  :tot_num_ions => 35, :calc_neutral_pep_mass => 1120.93163442, :massdiff => 0.00579979875010395,
@@ -22,12 +22,12 @@ describe 'converting mzml to plms1' do
22
22
  plms1.times.should == times
23
23
  plms1.scan_numbers.should == scan_nums
24
24
  plms1.spectra.each do |spec|
25
- p spec.size
26
- p spec.class
27
- p spec.mzs
28
- p spec.intensities
25
+ spec.size.should == 2
26
+ spec.class.should == MS::Spectrum
27
+ spec.mzs.should == []
28
+ spec.intensities.should == []
29
29
  end
30
- plms1.write("tmp.tmp.bin")
30
+ #plms1.write("tmp.tmp.bin")
31
31
  end
32
32
 
33
33
  end
@@ -47,13 +47,14 @@ describe 'converting mzml to plms1' do
47
47
  #times =[6604.58, 6605.5, 6605.91, 6606.48, 6606.98, 6607.53, 6607.93, 6608.49, 6608.92, 6609.49, 6609.94, 6610.53]
48
48
  plms1 = @mzml.to_plms1
49
49
  plms1.spectra.respond_to?(:each).should be_true
50
- p plms1.times
51
- p plms1.scan_numbers
52
- plms1.spectra.each do |spec|
53
- p spec.size
54
- p spec.class
55
- p spec.mzs.size
56
- p spec.intensities.size
50
+ plms1.times.should == [1981.5726, 1982.1077, 1982.4020999999998]
51
+ plms1.scan_numbers.should == [1, 2, 3]
52
+ sizes = [20168, 315, 634]
53
+ plms1.spectra.zip(sizes).each do |spec,exp_size|
54
+ spec.class.should == MS::Spectrum
55
+ spec.size.should == 2
56
+ spec.mzs.size.should == exp_size
57
+ spec.intensities.size.should == exp_size
57
58
  end
58
59
  #plms1.write("tmp.tmp.bin")
59
60
  end
@@ -5,17 +5,17 @@ require 'csv'
5
5
 
6
6
  describe 'running qspec' do
7
7
  before do
8
- @file = TESTFILES + '/ms/quant/max_quant_output.txt'
9
- rows = IO.readlines(@file).map {|line| line.chomp.split("\t") }
10
- p rows.map(&:size)
11
- abort 'here'
12
- #columns = IO.readlines(@file).map {|line| line.split("\t") }.transpose
13
- headers = columns.map(&:first)
14
- p headers
8
+ #@file = TESTFILES + '/ms/quant/max_quant_output.txt'
9
+ #rows = IO.readlines(@file).map {|line| line.chomp.split("\t") }
10
+ #p rows.map(&:size)
11
+ #abort 'here'
12
+ ##columns = IO.readlines(@file).map {|line| line.split("\t") }.transpose
13
+ #headers = columns.map(&:first)
14
+ #p headers
15
15
  end
16
16
 
17
17
  describe 'on spectral count data' do
18
- it 'works' do
18
+ xit 'works' do
19
19
  1.should == 1
20
20
  end
21
21
  end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ require 'ms/spectrum'
4
+
5
+ describe MS::Spectrum do
6
+
7
+ describe 'useful utilities' do
8
+ subject { MS::Spectrum.new [ [10.1, 10.5, 10.7, 11.5], [1, 2, 3, 4] ] }
9
+ it 'finds the nearest m/z or index' do
10
+
11
+ queries = {
12
+ 10.4 => 1,
13
+ 10.5 => 1,
14
+ 10.6 => 1,
15
+ 10.61 => 2,
16
+ -100.0 => 0,
17
+ 200.0 => 3,
18
+ }
19
+ queries.each {|mz, exp_i| subject.find_nearest_index(mz).should == exp_i }
20
+
21
+ all = Hash[ queries.map {|k,v| [k,[v]] } ]
22
+ all[10.6] = [1,2]
23
+ all.each {|mz, exp_mz| subject.find_all_nearest_index(mz).should == exp_mz }
24
+
25
+ queries = {
26
+ 10.4 => 10.5,
27
+ 10.5 => 10.5,
28
+ 10.6 => 10.5,
29
+ 10.61 => 10.7,
30
+ -100.0 => 10.1,
31
+ 200.0 => 11.5,
32
+ }
33
+ queries.each {|mz, exp_mz| subject.find_nearest(mz).should == exp_mz }
34
+
35
+ all = Hash[ queries.map {|k,v| [k,[v]] } ]
36
+ all[10.6] = [10.5, 10.7]
37
+ all.each {|mz, exp_mz| subject.find_all_nearest(mz).should == exp_mz }
38
+ end
39
+
40
+ it 'can sort itself by m/z' do
41
+ spec = MS::Spectrum.new [[10.5, 10.1, 11.5, 10.7], [2, 1, 4, 3]]
42
+ spec.sort!
43
+ spec.mzs.should == subject.mzs
44
+ spec.intensities.should == subject.intensities
45
+ end
46
+ end
47
+
48
+ end
data/spec/spec_helper.rb CHANGED
@@ -13,8 +13,8 @@ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
13
13
  RSpec.configure do |config|
14
14
  config.color_enabled = true
15
15
  config.tty = true
16
- #config.formatter = :documentation # :progress, :html, :textmate
17
- config.formatter = :progress # :progress, :html, :textmate
16
+ config.formatter = :documentation # :progress, :html, :textmate
17
+ #config.formatter = :progress # :progress, :html, :textmate
18
18
  end
19
19
 
20
20
 
metadata CHANGED
@@ -1,83 +1,92 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mspire
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.2
4
5
  prerelease:
5
- version: 0.6.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - John T. Prince
9
9
  - Simon Chiang
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
-
14
- date: 2012-01-25 00:00:00 Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
13
+ date: 2012-02-02 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
17
16
  name: nokogiri
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &8784820 !ruby/object:Gem::Requirement
20
18
  none: false
21
- requirements:
19
+ requirements:
22
20
  - - ~>
23
- - !ruby/object:Gem::Version
24
- version: "1.5"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.5'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *8784820
26
+ - !ruby/object:Gem::Dependency
27
+ name: bsearch
28
+ requirement: &8782400 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.5.0
25
34
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: rspec
29
35
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
36
+ version_requirements: *8782400
37
+ - !ruby/object:Gem::Dependency
38
+ name: obo
39
+ requirement: &8781260 !ruby/object:Gem::Requirement
31
40
  none: false
32
- requirements:
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 0.1.0
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *8781260
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ requirement: &8780220 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
33
53
  - - ~>
34
- - !ruby/object:Gem::Version
35
- version: "2.6"
54
+ - !ruby/object:Gem::Version
55
+ version: '2.6'
36
56
  type: :development
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: jeweler
40
57
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
58
+ version_requirements: *8780220
59
+ - !ruby/object:Gem::Dependency
60
+ name: jeweler
61
+ requirement: &8795440 !ruby/object:Gem::Requirement
42
62
  none: false
43
- requirements:
63
+ requirements:
44
64
  - - ~>
45
- - !ruby/object:Gem::Version
65
+ - !ruby/object:Gem::Version
46
66
  version: 1.5.2
47
67
  type: :development
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: rcov
51
68
  prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
69
+ version_requirements: *8795440
70
+ - !ruby/object:Gem::Dependency
71
+ name: rcov
72
+ requirement: &8792600 !ruby/object:Gem::Requirement
53
73
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  type: :development
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: obo
62
79
  prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: 0.1.0
69
- type: :development
70
- version_requirements: *id005
71
- description: mass spectrometry proteomics, lipidomics, and tools, a rewrite of mspire, merging of ms-* gems
80
+ version_requirements: *8792600
81
+ description: mass spectrometry proteomics, lipidomics, and tools, a rewrite of mspire,
82
+ merging of ms-* gems
72
83
  email: jtprince@gmail.com
73
84
  executables: []
74
-
75
85
  extensions: []
76
-
77
- extra_rdoc_files:
86
+ extra_rdoc_files:
78
87
  - LICENSE
79
88
  - README.rdoc
80
- files:
89
+ files:
81
90
  - LICENSE
82
91
  - README.rdoc
83
92
  - Rakefile
@@ -147,6 +156,7 @@ files:
147
156
  - spec/ms/mzml_spec.rb
148
157
  - spec/ms/plms1_spec.rb
149
158
  - spec/ms/quant/qspec_spec.rb
159
+ - spec/ms/spectrum_spec.rb
150
160
  - spec/msplat_spec.rb
151
161
  - spec/obo_spec.rb
152
162
  - spec/spec_helper.rb
@@ -175,31 +185,28 @@ files:
175
185
  - spec/testfiles/ms/quant/unlog_transform.rb
176
186
  - spec/testfiles/plms1/output.key
177
187
  homepage: http://github.com/princelab/mspire
178
- licenses:
188
+ licenses:
179
189
  - MIT
180
190
  post_install_message:
181
191
  rdoc_options: []
182
-
183
- require_paths:
192
+ require_paths:
184
193
  - lib
185
- required_ruby_version: !ruby/object:Gem::Requirement
194
+ required_ruby_version: !ruby/object:Gem::Requirement
186
195
  none: false
187
- requirements:
188
- - - ">="
189
- - !ruby/object:Gem::Version
190
- version: "0"
191
- required_rubygems_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ required_rubygems_version: !ruby/object:Gem::Requirement
192
201
  none: false
193
- requirements:
194
- - - ">="
195
- - !ruby/object:Gem::Version
196
- version: "0"
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
197
206
  requirements: []
198
-
199
207
  rubyforge_project:
200
- rubygems_version: 1.8.10
208
+ rubygems_version: 1.8.15
201
209
  signing_key:
202
210
  specification_version: 3
203
211
  summary: mass spectrometry proteomics, lipidomics, and tools
204
212
  test_files: []
205
-