mspire 0.8.7 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/Gemfile +0 -2
- data/README.md +2 -2
- data/lib/mspire/isotope.rb +2 -2
- data/lib/mspire/isotope/aa.rb +22 -22
- data/lib/mspire/isotope/distribution.rb +1 -1
- data/lib/mspire/isotope/nist_isotope_info.yml +288 -288
- data/lib/mspire/mass.rb +29 -37
- data/lib/mspire/mass/aa.rb +13 -9
- data/lib/mspire/mass/all.rb +37 -0
- data/lib/mspire/mass/common.rb +34 -0
- data/lib/mspire/mass/element.rb +30 -0
- data/lib/mspire/mass/subatomic.rb +27 -0
- data/lib/mspire/mass/util.rb +10 -0
- data/lib/mspire/molecular_formula.rb +10 -8
- data/lib/mspire/version.rb +1 -1
- data/mspire.gemspec +46 -0
- data/spec/mspire/ident/pepxml_spec.rb +2 -2
- data/spec/mspire/isotope/aa_spec.rb +3 -3
- data/spec/mspire/isotope_spec.rb +6 -6
- data/spec/mspire/mass/aa_spec.rb +18 -0
- data/spec/mspire/mass/all_spec.rb +33 -0
- data/spec/mspire/mass/common_spec.rb +17 -0
- data/spec/mspire/mass/element_spec.rb +17 -0
- data/spec/mspire/mass/subatomic_spec.rb +13 -0
- data/spec/mspire/mass_spec.rb +6 -35
- data/spec/mspire/molecular_formula_spec.rb +19 -19
- data/spec/mspire/readme_spec.rb +3 -4
- data/spec/spec_helper.rb +0 -3
- metadata +18 -2
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'mspire/mass/all'
|
3
|
+
|
4
|
+
describe Mspire::Mass::All do
|
5
|
+
it 'accesses elements by lower case and amino acids by upper case' do
|
6
|
+
{
|
7
|
+
'c' => 12.0, # carbon
|
8
|
+
'C' => 103.00918, # cysteine
|
9
|
+
'br' => 78.9183361, # bromine
|
10
|
+
'd' => 2.014101779, # deuterium
|
11
|
+
'D' => 115.0269430, # aspartic acid
|
12
|
+
'h+' => 1.00727646677, # proton
|
13
|
+
'h' => 1.007825035, # hydrogen
|
14
|
+
'h2o' => 18.0105647, # water
|
15
|
+
'oh' => 17.002739665, # oh
|
16
|
+
'e' => 0.0005486, # electron
|
17
|
+
}.each do |el, mass|
|
18
|
+
Mspire::Mass::All::MONO[el].should_not be_nil
|
19
|
+
Mspire::Mass::All::MONO[el].should == Mspire::Mass::All::MONO[el.to_sym]
|
20
|
+
Mspire::Mass::All::MONO[el].should be_within(0.00001).of(mass)
|
21
|
+
end
|
22
|
+
|
23
|
+
{ h: 1.00794, he: 4.002602, ni: 58.6934, H: 137.13928 }.each do |el, mass|
|
24
|
+
Mspire::Mass::All::AVG[el].should_not be_nil
|
25
|
+
Mspire::Mass::All::AVG[el].should == Mspire::Mass::All::AVG[el.to_sym]
|
26
|
+
Mspire::Mass::All::AVG[el].should be_within(0.00001).of(mass)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'mono may be accessed directly' do
|
31
|
+
Mspire::Mass::All[:c].should == 12.0
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'mspire/mass/common'
|
4
|
+
|
5
|
+
describe Mspire::Mass::Common do
|
6
|
+
it 'provides string and symbol access to common mass spec masses' do
|
7
|
+
mono = Mspire::Mass::Common::MONO
|
8
|
+
|
9
|
+
mono['OH'].should be_within(0.0000001).of( 17.002739651629998 )
|
10
|
+
mono[:OH].should == mono['OH']
|
11
|
+
Mspire::Mass::Common[:OH].should == mono[:OH]
|
12
|
+
|
13
|
+
avg = Mspire::Mass::Common::AVG
|
14
|
+
avg['OH'].should == 17.00734
|
15
|
+
avg[:OH].should == avg['OH']
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'mspire/mass/element'
|
4
|
+
|
5
|
+
describe Mspire::Mass::Element do
|
6
|
+
it 'provides string and symbol access to element masses' do
|
7
|
+
mono = Mspire::Mass::Element::MONO
|
8
|
+
|
9
|
+
mono['Se'].should == 79.9165213
|
10
|
+
mono[:Se].should == mono['Se']
|
11
|
+
Mspire::Mass::Element[:Se].should == mono[:Se]
|
12
|
+
|
13
|
+
avg = Mspire::Mass::Element::AVG
|
14
|
+
avg['Se'].should == 78.96
|
15
|
+
avg[:Se].should == avg['Se']
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'mspire/mass/subatomic'
|
4
|
+
|
5
|
+
describe Mspire::Mass::Subatomic do
|
6
|
+
it 'provides string and symbol access to element masses' do
|
7
|
+
mono = Mspire::Mass::Subatomic::MONO
|
8
|
+
|
9
|
+
mono['neutron'].should == 1.0086649156
|
10
|
+
mono[:neutron].should == mono['neutron']
|
11
|
+
Mspire::Mass::Subatomic[:neutron].should == mono[:neutron]
|
12
|
+
end
|
13
|
+
end
|
data/spec/mspire/mass_spec.rb
CHANGED
@@ -2,41 +2,12 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
require 'mspire/mass'
|
4
4
|
|
5
|
-
describe
|
6
|
-
it '
|
7
|
-
|
8
|
-
|
9
|
-
'br' => 78.9183361, # +
|
10
|
-
'd' => 2.014101779, # +
|
11
|
-
'f' => 18.99840322, # +
|
12
|
-
'n' => 14.003074, # +
|
13
|
-
'o' => 15.99491463, # +
|
14
|
-
'na' => 22.9897677, # +
|
15
|
-
'p' => 30.973762, # +
|
16
|
-
's' => 31.9720707, # +
|
17
|
-
'li' => 7.016003, # +
|
18
|
-
'cl' => 34.96885272, # +
|
19
|
-
'k' => 38.9637074, # +
|
20
|
-
'si' => 27.9769265325,
|
21
|
-
'i' => 126.904473, # +
|
22
|
-
'h+' => 1.00727646677,
|
23
|
-
'h' => 1.007825035, # +
|
24
|
-
'h2o' => 18.0105647,
|
25
|
-
'oh' => 17.002739665,
|
26
|
-
'e' => 0.0005486,
|
27
|
-
'se' => 79.9165196
|
28
|
-
}.each do |el, mass|
|
29
|
-
Mspire::Mass::MONO[el].should_not be_nil
|
30
|
-
Mspire::Mass::MONO[el].should == Mspire::Mass::MONO[el.to_sym]
|
31
|
-
Mspire::Mass::MONO[el].should be_within(0.00001).of(mass)
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
{ h: 1.00794, he: 4.002602, ni: 58.6934 }.each do |el, mass|
|
36
|
-
Mspire::Mass::AVG[el].should_not be_nil
|
37
|
-
Mspire::Mass::AVG[el].should == Mspire::Mass::AVG[el.to_sym]
|
38
|
-
Mspire::Mass::AVG[el].should be_within(0.00001).of(mass)
|
39
|
-
end
|
5
|
+
describe Mspire::Mass do
|
6
|
+
it 'calculates formula masses' do
|
7
|
+
Mspire::Mass.formula('CHCl3').should be_within(0.00001).of(117.91439)
|
8
|
+
end
|
40
9
|
|
10
|
+
it 'calculates peptide/protein (AA) masses' do
|
11
|
+
Mspire::Mass.aa('ADALL').should be_within(0.00001).of(501.27986)
|
41
12
|
end
|
42
13
|
end
|
@@ -8,34 +8,34 @@ describe Mspire::MolecularFormula do
|
|
8
8
|
describe 'initialization' do
|
9
9
|
|
10
10
|
it 'is initialized with Hash' do
|
11
|
-
data = {
|
11
|
+
data = {H: 22, C: 12, N: 1, O: 3, S: 2}
|
12
12
|
mf = Mspire::MolecularFormula.new(data)
|
13
|
-
mf.to_hash.should == {:
|
13
|
+
mf.to_hash.should == {:H=>22, :C=>12, :N=>1, :O=>3, :S=>2}
|
14
14
|
mf.to_hash.should == data
|
15
15
|
end
|
16
16
|
|
17
17
|
it 'can be initialized with charge, too' do
|
18
18
|
mf = Mspire::MolecularFormula["H22BeC12N1O3S2Li2", 2]
|
19
|
-
mf.to_hash.should == {:
|
19
|
+
mf.to_hash.should == {:H=>22, :Be=>1, :C=>12, :N=>1, :O=>3, :S=>2, :Li=>2}
|
20
20
|
mf.charge.should == 2
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'from_string or ::[] to make from a capitalized string formula' do
|
24
|
-
Mspire::MolecularFormula.from_string("H22BeC12N1O3S2Li2").to_hash.should == {:
|
24
|
+
Mspire::MolecularFormula.from_string("H22BeC12N1O3S2Li2").to_hash.should == {:H=>22, :Be=>1, :C=>12, :N=>1, :O=>3, :S=>2, :Li=>2}
|
25
25
|
|
26
26
|
mf = Mspire::MolecularFormula['Ni7Se3', 1]
|
27
27
|
mf.charge.should == 1
|
28
|
-
mf.to_hash.should == {:
|
28
|
+
mf.to_hash.should == {:Ni=>7, :Se=>3}
|
29
29
|
|
30
30
|
# there is no such thing as the E element, so this is going to get the
|
31
31
|
# user in trouble. However, this is the proper interpretation of the
|
32
32
|
# formula.
|
33
|
-
Mspire::MolecularFormula['Ni7SE3'].to_hash.should == {:
|
33
|
+
Mspire::MolecularFormula['Ni7SE3'].to_hash.should == {:Ni=>7, :S=>1, :E=>3}
|
34
34
|
end
|
35
35
|
|
36
36
|
describe 'correct to_s' do
|
37
37
|
subject {
|
38
|
-
Mspire::MolecularFormula.new({:
|
38
|
+
Mspire::MolecularFormula.new({:C=>669, :H=>1129, :O=>185, :N=>215, :S=>4, :P=>0, :Se=>0})
|
39
39
|
}
|
40
40
|
it 'to_s gives output' do
|
41
41
|
subject.to_s.should == "C669H1129N215O185S4"
|
@@ -45,7 +45,7 @@ describe Mspire::MolecularFormula do
|
|
45
45
|
describe 'conversion' do
|
46
46
|
|
47
47
|
subject {
|
48
|
-
data = {
|
48
|
+
data = {H: 22, C: 12, N: 1, O: 3, S: 2, Be: 1}
|
49
49
|
Mspire::MolecularFormula.new(data)
|
50
50
|
}
|
51
51
|
|
@@ -54,13 +54,13 @@ describe Mspire::MolecularFormula do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
it 'can be converted to a hash' do
|
57
|
-
subject.to_hash.should == {
|
57
|
+
subject.to_hash.should == {H: 22, C: 12, N: 1, O: 3, S: 2, Be: 1}
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
61
|
describe 'equality' do
|
62
62
|
subject {
|
63
|
-
data = {
|
63
|
+
data = {H: 22, C: 12, N: 1, O: 3, S: 2, Be: 1}
|
64
64
|
Mspire::MolecularFormula.new(data)
|
65
65
|
}
|
66
66
|
it 'is only equal if the charge is equal' do
|
@@ -73,43 +73,43 @@ describe Mspire::MolecularFormula do
|
|
73
73
|
|
74
74
|
describe 'arithmetic' do
|
75
75
|
subject {
|
76
|
-
data = {
|
76
|
+
data = {H: 22, C: 12, N: 1, O: 3, S: 2, Be: 1}
|
77
77
|
Mspire::MolecularFormula.new(data, 2)
|
78
78
|
}
|
79
79
|
it 'can do non-destructive arithmetic' do
|
80
80
|
orig = subject.dup
|
81
81
|
reply = subject + MF["H2C3P2", 2]
|
82
|
-
reply.to_hash.should == {
|
82
|
+
reply.to_hash.should == {H: 24, C: 15, N: 1, O: 3, S: 2, Be: 1, P: 2}
|
83
83
|
reply.charge.should == 4
|
84
84
|
subject.should == orig
|
85
85
|
|
86
86
|
reply = subject - MF["H2C3P2", 2]
|
87
|
-
reply.to_hash.should == {
|
87
|
+
reply.to_hash.should == {H: 20, C: 9, N: 1, O: 3, S: 2, Be: 1, P: -2}
|
88
88
|
reply.charge.should == 0
|
89
89
|
subject.should == orig
|
90
90
|
|
91
91
|
by2 = subject * 2
|
92
|
-
by2.to_hash.should == {
|
92
|
+
by2.to_hash.should == {H: 44, C: 24, N: 2, O: 6, S: 4, Be: 2}
|
93
93
|
by2.charge.should == 4
|
94
94
|
subject.should == orig
|
95
95
|
|
96
96
|
reply = by2 / 2
|
97
|
-
reply.to_hash.should == {
|
97
|
+
reply.to_hash.should == {H: 22, C: 12, N: 1, O: 3, S: 2, Be: 1}
|
98
98
|
reply.charge.should == 2
|
99
99
|
subject.should == orig
|
100
100
|
end
|
101
101
|
|
102
102
|
it 'can do destructive arithmetic' do
|
103
103
|
orig = subject.dup
|
104
|
-
subject.sub!(MF["H2C3"]).to_hash.should == {
|
104
|
+
subject.sub!(MF["H2C3"]).to_hash.should == {H: 20, C: 9, N: 1, O: 3, S: 2, Be: 1}
|
105
105
|
subject.should_not == orig
|
106
|
-
subject.add!(MF["H2C3"]).to_hash.should == {
|
106
|
+
subject.add!(MF["H2C3"]).to_hash.should == {H: 22, C: 12, N: 1, O: 3, S: 2, Be: 1}
|
107
107
|
subject.should == orig
|
108
108
|
|
109
109
|
by2 = subject.mul!(2)
|
110
110
|
subject.should_not == orig
|
111
|
-
by2.to_hash.should == {
|
112
|
-
by2.div!(2).to_hash.should == {
|
111
|
+
by2.to_hash.should == {H: 44, C: 24, N: 2, O: 6, S: 4, Be: 2}
|
112
|
+
by2.div!(2).to_hash.should == {H: 22, C: 12, N: 1, O: 3, S: 2, Be: 1}
|
113
113
|
by2.to_hash.should == orig
|
114
114
|
end
|
115
115
|
|
data/spec/mspire/readme_spec.rb
CHANGED
@@ -83,9 +83,8 @@ describe 'performing what is on the readme' do
|
|
83
83
|
aa_to_mass = Mspire::Mass::AA::MONO # a hash with residue masses
|
84
84
|
aa_to_mass['A'] # or access by symbol - Alanine
|
85
85
|
|
86
|
-
#
|
87
|
-
Mspire::Mass::MONO[:
|
88
|
-
Mspire::Mass::MONO[:e] # electron (includes other useful symbols)
|
86
|
+
Mspire::Mass::Element::MONO[:C] # carbon
|
87
|
+
Mspire::Mass::Subatomic::MONO[:electron] # electron
|
89
88
|
end
|
90
89
|
|
91
90
|
specify 'isotopes and molecular formulas' do
|
@@ -95,7 +94,7 @@ describe 'performing what is on the readme' do
|
|
95
94
|
isotopes = Mspire::Isotope::ISOTOPES # 288 isotopes
|
96
95
|
hydrogen_isotopes = isotopes.select {|iso| iso.element == :h }
|
97
96
|
|
98
|
-
c12 = Mspire::Isotope::BY_ELEMENT[:
|
97
|
+
c12 = Mspire::Isotope::BY_ELEMENT[:C].first
|
99
98
|
c12.atomic_number # also: mass_number atomic_mass relative_abundance average_mass
|
100
99
|
c12.mono # => true (this is the monoisotopic isotope)
|
101
100
|
|
data/spec/spec_helper.rb
CHANGED
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.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John T. Prince
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -272,6 +272,11 @@ files:
|
|
272
272
|
- lib/mspire/mascot.rb
|
273
273
|
- lib/mspire/mass.rb
|
274
274
|
- lib/mspire/mass/aa.rb
|
275
|
+
- lib/mspire/mass/all.rb
|
276
|
+
- lib/mspire/mass/common.rb
|
277
|
+
- lib/mspire/mass/element.rb
|
278
|
+
- lib/mspire/mass/subatomic.rb
|
279
|
+
- lib/mspire/mass/util.rb
|
275
280
|
- lib/mspire/molecular_formula.rb
|
276
281
|
- lib/mspire/mzml.rb
|
277
282
|
- lib/mspire/mzml/activation.rb
|
@@ -331,6 +336,7 @@ files:
|
|
331
336
|
- lib/obo/unit.rb
|
332
337
|
- lib/openany.rb
|
333
338
|
- lib/write_file_or_string.rb
|
339
|
+
- mspire.gemspec
|
334
340
|
- obo/ims.obo
|
335
341
|
- obo/mod.obo
|
336
342
|
- obo/ms.obo
|
@@ -365,6 +371,11 @@ files:
|
|
365
371
|
- spec/mspire/isotope/aa_spec.rb
|
366
372
|
- spec/mspire/isotope/distribution_spec.rb
|
367
373
|
- spec/mspire/isotope_spec.rb
|
374
|
+
- spec/mspire/mass/aa_spec.rb
|
375
|
+
- spec/mspire/mass/all_spec.rb
|
376
|
+
- spec/mspire/mass/common_spec.rb
|
377
|
+
- spec/mspire/mass/element_spec.rb
|
378
|
+
- spec/mspire/mass/subatomic_spec.rb
|
368
379
|
- spec/mspire/mass_spec.rb
|
369
380
|
- spec/mspire/molecular_formula_spec.rb
|
370
381
|
- spec/mspire/mzml/cv_spec.rb
|
@@ -466,6 +477,11 @@ test_files:
|
|
466
477
|
- spec/mspire/isotope/aa_spec.rb
|
467
478
|
- spec/mspire/isotope/distribution_spec.rb
|
468
479
|
- spec/mspire/isotope_spec.rb
|
480
|
+
- spec/mspire/mass/aa_spec.rb
|
481
|
+
- spec/mspire/mass/all_spec.rb
|
482
|
+
- spec/mspire/mass/common_spec.rb
|
483
|
+
- spec/mspire/mass/element_spec.rb
|
484
|
+
- spec/mspire/mass/subatomic_spec.rb
|
469
485
|
- spec/mspire/mass_spec.rb
|
470
486
|
- spec/mspire/molecular_formula_spec.rb
|
471
487
|
- spec/mspire/mzml/cv_spec.rb
|