mspire 0.6.25 → 0.6.26

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.25
1
+ 0.6.26
@@ -1,13 +1,19 @@
1
1
  require 'ms/isotope'
2
+ require 'ms/isotope/aa'
3
+ require 'ms/mass'
2
4
 
3
5
  module MS
4
6
  class MolecularFormula < Hash
5
7
 
8
+ # integer desribing the charge state
9
+ # mass calculations will add/remove electron mass from this
10
+ attr_accessor :charge
6
11
  # takes a string or a hash:
7
12
  #
8
13
  # "H22C12N1O3S2BeLi2" # <= order doesn't matter
9
14
  # {h: 22, c: 12, n: 1, o: 3, s: 2} # case and string/sym doesn't matter
10
- def initialize(arg)
15
+ def initialize(arg, charge=0)
16
+ @charge = charge
11
17
  if arg.is_a?(String)
12
18
  arg.scan(/([A-Z][a-z]?)(\d*)/).each do |k,v|
13
19
  self[k.downcase.to_sym] = (v == '' ? 1 : v.to_i)
@@ -17,5 +23,20 @@ module MS
17
23
  end
18
24
  end
19
25
 
26
+ def self.from_aaseq(aaseq)
27
+ hash = aaseq.each_char.inject({}) do |hash,aa|
28
+ hash.merge(MS::Isotope::AA::ATOM_COUNTS[aa]) {|h,o,n| (o ? o : 0) +n }
29
+ end
30
+ hash[:h] += 2
31
+ hash[:o] += 1
32
+ self.new(hash)
33
+ end
34
+
35
+ # gives the monoisotopic mass adjusted by the current charge
36
+ def mass
37
+ mss = inject(0.0) {|sum,(el,cnt)| sum + (MS::Mass::MONO[el]*cnt) }
38
+ mss - (MS::Mass::ELECTRON * charge)
39
+ end
40
+
20
41
  end
21
42
  end
data/lib/ms/mzml/scan.rb CHANGED
@@ -24,6 +24,10 @@ module MS
24
24
  block.call(self) if block
25
25
  end
26
26
 
27
+ # takes a nokogiri node
28
+ #def self.from_xml(xml)
29
+ #end
30
+
27
31
  def to_xml(builder)
28
32
  atts = {}
29
33
  if @from_external_source_file
@@ -64,6 +64,10 @@ module MS
64
64
  # currently being described, ordered.
65
65
  attr_accessor :products
66
66
 
67
+ attr_accessor :retention_time
68
+ # when properly implemented, this will access the first scan and the
69
+ # 'scan start time' cv element.
70
+
67
71
  # takes a Nokogiri node and sets relevant properties
68
72
  def self.from_xml(xml)
69
73
  spec = MS::Mzml::Spectrum.new(xml[:id])
@@ -77,8 +81,21 @@ module MS
77
81
  spec.centroided = !params.key?("MS:1000128") # profile spectrum
78
82
  # centroid -> "MS:1000127"
79
83
 
84
+ # this is a quick hack to get retention time, implement fully as shown
85
+ # below!
86
+ cv_param = xml.xpath("./scanList/scan/cvParam[@accession='MS:1000016']").first
87
+ retention_time = cv_param && cv_param['value'].to_f
88
+
89
+ # this is roughly how the scan list stuff should be implemented:
90
+ =begin
91
+ sl_obj = MS::Mzml::ScanList.new
92
+
80
93
  # TODO: need to slot in all the other info in reasonable ways
81
94
  # TODO: need to make sure we deal with referencable params
95
+ scan_list = xml.xpath('.scanList/scan').each do |scan_n|
96
+ sl_obj << MS::Mzml::Scan.from_xml(scan_n)
97
+ end
98
+ =end
82
99
 
83
100
  data_arrays = xml.xpath('./binaryDataArrayList/binaryDataArray').map do |binary_data_array_n|
84
101
  accessions = binary_data_array_n.xpath('./cvParam').map {|node| node['accession'] }
@@ -89,6 +106,7 @@ module MS
89
106
  # just has no mzs or intensities
90
107
  data_arrays = [MS::Mzml::DataArray.new, MS::Mzml::DataArray.new] if data_arrays.size == 0
91
108
  spec.data_arrays = data_arrays
109
+ spec.retention_time = retention_time
92
110
  spec
93
111
  end
94
112
 
data/mspire.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "mspire"
8
- s.version = "0.6.25"
8
+ s.version = "0.6.26"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["John T. Prince", "Simon Chiang"]
12
- s.date = "2012-03-13"
12
+ s.date = "2012-03-15"
13
13
  s.description = "mass spectrometry proteomics, lipidomics, and tools, a rewrite of mspire, merging of ms-* gems"
14
14
  s.email = "jtprince@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -177,7 +177,7 @@ Gem::Specification.new do |s|
177
177
  s.homepage = "http://github.com/princelab/mspire"
178
178
  s.licenses = ["MIT"]
179
179
  s.require_paths = ["lib"]
180
- s.rubygems_version = "1.8.15"
180
+ s.rubygems_version = "1.8.18"
181
181
  s.summary = "mass spectrometry proteomics, lipidomics, and tools"
182
182
 
183
183
  if s.respond_to? :specification_version then
data/spec/ms/mzml_spec.rb CHANGED
@@ -38,6 +38,12 @@ describe MS::Mzml do
38
38
  spectrum.should be_a(MS::Mzml::Spectrum)
39
39
  end
40
40
 
41
+ it 'each spectrum knows its retention_time' do
42
+ spec = @mzml[1]
43
+ rt = @mzml[1].retention_time
44
+ rt.should == 33.035128333333333
45
+ end
46
+
41
47
  it 'goes through spectrum with #each or #each_spectrum' do
42
48
  mz_sizes = [20168, 315, 634]
43
49
  centroided = [false, true, true]
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.6.25
4
+ version: 0.6.26
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-03-13 00:00:00.000000000 Z
13
+ date: 2012-03-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
17
- requirement: &13676060 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,15 @@ dependencies:
22
22
  version: '1.5'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *13676060
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '1.5'
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: bsearch
28
- requirement: &13674700 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ! '>='
@@ -33,10 +38,15 @@ dependencies:
33
38
  version: 1.5.0
34
39
  type: :runtime
35
40
  prerelease: false
36
- version_requirements: *13674700
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 1.5.0
37
47
  - !ruby/object:Gem::Dependency
38
48
  name: andand
39
- requirement: &13673200 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
52
  - - ! '>='
@@ -44,10 +54,15 @@ dependencies:
44
54
  version: 1.3.1
45
55
  type: :runtime
46
56
  prerelease: false
47
- version_requirements: *13673200
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: 1.3.1
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: obo
50
- requirement: &13672440 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
51
66
  none: false
52
67
  requirements:
53
68
  - - ! '>='
@@ -55,10 +70,15 @@ dependencies:
55
70
  version: 0.1.0
56
71
  type: :runtime
57
72
  prerelease: false
58
- version_requirements: *13672440
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: 0.1.0
59
79
  - !ruby/object:Gem::Dependency
60
80
  name: builder
61
- requirement: &13671860 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
62
82
  none: false
63
83
  requirements:
64
84
  - - ! '>='
@@ -66,10 +86,15 @@ dependencies:
66
86
  version: 3.0.0
67
87
  type: :runtime
68
88
  prerelease: false
69
- version_requirements: *13671860
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 3.0.0
70
95
  - !ruby/object:Gem::Dependency
71
96
  name: trollop
72
- requirement: &13687020 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
73
98
  none: false
74
99
  requirements:
75
100
  - - ! '>='
@@ -77,10 +102,15 @@ dependencies:
77
102
  version: 1.16.2
78
103
  type: :runtime
79
104
  prerelease: false
80
- version_requirements: *13687020
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.16.2
81
111
  - !ruby/object:Gem::Dependency
82
112
  name: rspec
83
- requirement: &13685880 !ruby/object:Gem::Requirement
113
+ requirement: !ruby/object:Gem::Requirement
84
114
  none: false
85
115
  requirements:
86
116
  - - ~>
@@ -88,10 +118,15 @@ dependencies:
88
118
  version: '2.6'
89
119
  type: :development
90
120
  prerelease: false
91
- version_requirements: *13685880
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: '2.6'
92
127
  - !ruby/object:Gem::Dependency
93
128
  name: jeweler
94
- requirement: &13684660 !ruby/object:Gem::Requirement
129
+ requirement: !ruby/object:Gem::Requirement
95
130
  none: false
96
131
  requirements:
97
132
  - - ~>
@@ -99,10 +134,15 @@ dependencies:
99
134
  version: 1.5.2
100
135
  type: :development
101
136
  prerelease: false
102
- version_requirements: *13684660
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ~>
141
+ - !ruby/object:Gem::Version
142
+ version: 1.5.2
103
143
  - !ruby/object:Gem::Dependency
104
144
  name: rcov
105
- requirement: &13683500 !ruby/object:Gem::Requirement
145
+ requirement: !ruby/object:Gem::Requirement
106
146
  none: false
107
147
  requirements:
108
148
  - - ! '>='
@@ -110,7 +150,12 @@ dependencies:
110
150
  version: '0'
111
151
  type: :development
112
152
  prerelease: false
113
- version_requirements: *13683500
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
114
159
  description: mass spectrometry proteomics, lipidomics, and tools, a rewrite of mspire,
115
160
  merging of ms-* gems
116
161
  email: jtprince@gmail.com
@@ -297,7 +342,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
297
342
  version: '0'
298
343
  requirements: []
299
344
  rubyforge_project:
300
- rubygems_version: 1.8.15
345
+ rubygems_version: 1.8.18
301
346
  signing_key:
302
347
  specification_version: 3
303
348
  summary: mass spectrometry proteomics, lipidomics, and tools