mspire 0.6.25 → 0.6.26

Sign up to get free protection for your applications and to get access to all the features.
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