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 +1 -1
- data/lib/ms/molecular_formula.rb +22 -1
- data/lib/ms/mzml/scan.rb +4 -0
- data/lib/ms/mzml/spectrum.rb +18 -0
- data/mspire.gemspec +3 -3
- data/spec/ms/mzml_spec.rb +6 -0
- metadata +66 -21
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.26
|
data/lib/ms/molecular_formula.rb
CHANGED
@@ -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
data/lib/ms/mzml/spectrum.rb
CHANGED
@@ -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.
|
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-
|
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.
|
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.
|
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
|
+
date: 2012-03-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
17
|
-
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
345
|
+
rubygems_version: 1.8.18
|
301
346
|
signing_key:
|
302
347
|
specification_version: 3
|
303
348
|
summary: mass spectrometry proteomics, lipidomics, and tools
|