mspire-lipidomics 0.1.5 → 0.1.8
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 +1 -1
- data/VERSION +1 -1
- data/bin/lipidomic-search.rb +4 -0
- data/lib/mspire/lipid/ion.rb +19 -5
- data/lib/mspire/lipid/modification.rb +7 -5
- data/lib/mspire/lipid_maps.rb +1 -1
- data/mspire-lipidomics.gemspec +6 -6
- data/script/find_nearest_lipid.rb +22 -18
- data/spec/mspire/lipid/ion_spec.rb +20 -9
- data/spec/mspire/lipid/modification_spec.rb +36 -20
- data/spec/mspire/lipid/search_spec.rb +3 -0
- metadata +7 -7
data/Rakefile
CHANGED
|
@@ -13,7 +13,7 @@ Jeweler::Tasks.new do |gem|
|
|
|
13
13
|
gem.description = %Q{does lipidomics}
|
|
14
14
|
gem.email = "jtprince@gmail.com"
|
|
15
15
|
gem.authors = ["John T. Prince"]
|
|
16
|
-
gem.add_dependency "mspire", "
|
|
16
|
+
gem.add_dependency "mspire", "~> 0.7.17"
|
|
17
17
|
gem.add_development_dependency "rubabel", ">= 0.1.0"
|
|
18
18
|
gem.add_development_dependency "rspec", "~> 2.3.0"
|
|
19
19
|
gem.add_development_dependency "jeweler", "~> 1.6.4"
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.8
|
data/bin/lipidomic-search.rb
CHANGED
data/lib/mspire/lipid/ion.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'mspire/lipid/ion/fragment'
|
|
2
|
+
require 'mspire/molecular_formula'
|
|
2
3
|
|
|
3
4
|
module Mspire
|
|
4
5
|
class Lipid
|
|
@@ -20,20 +21,27 @@ module Mspire
|
|
|
20
21
|
def charge
|
|
21
22
|
z = 0
|
|
22
23
|
@modifications.each do |mod|
|
|
23
|
-
z
|
|
24
|
+
z += mod.charge
|
|
24
25
|
end
|
|
25
26
|
z
|
|
26
27
|
end
|
|
27
28
|
|
|
29
|
+
# a MolecularFormula object
|
|
28
30
|
def formula
|
|
29
|
-
|
|
31
|
+
_formula = @lipid.formula
|
|
32
|
+
_formula = Mspire::MolecularFormula.from_any(_formula) unless _formula.is_a?(Mspire::MolecularFormula)
|
|
30
33
|
modifications.each do |mod|
|
|
31
|
-
|
|
34
|
+
if mod.gain?
|
|
35
|
+
_formula += mod.formula
|
|
36
|
+
else
|
|
37
|
+
_formula -= mod.formula
|
|
38
|
+
end
|
|
32
39
|
end
|
|
33
|
-
|
|
40
|
+
_formula
|
|
34
41
|
end
|
|
35
42
|
|
|
36
|
-
|
|
43
|
+
# value is cached
|
|
44
|
+
def mz_signed
|
|
37
45
|
return @mz if @mz
|
|
38
46
|
mass = @lipid.mass
|
|
39
47
|
charge = 0
|
|
@@ -48,6 +56,12 @@ module Mspire
|
|
|
48
56
|
end
|
|
49
57
|
end
|
|
50
58
|
|
|
59
|
+
# the unsigned m/z value
|
|
60
|
+
def mz
|
|
61
|
+
_mz_signed = mz_signed
|
|
62
|
+
_mz_signed >= 0 ? _mz_signed : -_mz_signed
|
|
63
|
+
end
|
|
64
|
+
|
|
51
65
|
def inspect
|
|
52
66
|
"<|| Ion mz=#{mz} #{lipid.inspect} + #{modifications.map(&:inspect).join(', ')} ||>"
|
|
53
67
|
end
|
|
@@ -59,7 +59,7 @@ module Mspire
|
|
|
59
59
|
|
|
60
60
|
# as a symbol
|
|
61
61
|
attr_accessor :name
|
|
62
|
-
#
|
|
62
|
+
# a MolecularFormula object
|
|
63
63
|
attr_accessor :formula
|
|
64
64
|
# negative indicates a loss
|
|
65
65
|
attr_accessor :massdiff
|
|
@@ -73,7 +73,7 @@ module Mspire
|
|
|
73
73
|
#
|
|
74
74
|
# attributes:
|
|
75
75
|
# :formula = the chemical formula, lipidmaps style ("C2H4BrO") or
|
|
76
|
-
# any valid argument to MolecularFormula.
|
|
76
|
+
# any valid argument to MolecularFormula.from_any
|
|
77
77
|
# :massdiff = +/-Float
|
|
78
78
|
# :charge = +/- Integer
|
|
79
79
|
#
|
|
@@ -89,7 +89,7 @@ module Mspire
|
|
|
89
89
|
@name = name
|
|
90
90
|
@formula =
|
|
91
91
|
if ( form_string = (opts[:formula] || FORMULAS[name]) )
|
|
92
|
-
Mspire::MolecularFormula.
|
|
92
|
+
Mspire::MolecularFormula.from_any( form_string )
|
|
93
93
|
end
|
|
94
94
|
@massdiff = opts[:massdiff] || MASSDIFFS[name]
|
|
95
95
|
@charge = opts[:charge] || CHARGE[name]
|
|
@@ -102,10 +102,12 @@ module Mspire
|
|
|
102
102
|
end
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
-
def
|
|
105
|
+
def charged_formula_string
|
|
106
106
|
@formula.to_s + @charge.abs.times.map { (@charge > 0) ? '+' : '-' }.join
|
|
107
107
|
end
|
|
108
108
|
|
|
109
|
+
alias_method :to_s, :charged_formula_string
|
|
110
|
+
|
|
109
111
|
def gain?
|
|
110
112
|
massdiff > 0
|
|
111
113
|
end
|
|
@@ -115,7 +117,7 @@ module Mspire
|
|
|
115
117
|
end
|
|
116
118
|
|
|
117
119
|
def inspect
|
|
118
|
-
"<Mod: #{
|
|
120
|
+
"<Mod: #{to_s}>"
|
|
119
121
|
end
|
|
120
122
|
|
|
121
123
|
end
|
data/lib/mspire/lipid_maps.rb
CHANGED
|
@@ -69,7 +69,7 @@ module Mspire
|
|
|
69
69
|
if opts.values_at(:molecular_formula_objects, :rubabel_molecules).any? || (opts[:high_res_mass] && lm_ft == :programmatic)
|
|
70
70
|
lipids.each do |lipid|
|
|
71
71
|
if opts[:molecular_formula_objects]
|
|
72
|
-
lipid.formula = Mspire::MolecularFormula.
|
|
72
|
+
lipid.formula = Mspire::MolecularFormula.from_string(lipid.formula)
|
|
73
73
|
end
|
|
74
74
|
if lm_ft == :programmatic && opts[:high_res_mass]
|
|
75
75
|
lipid.mass = Mspire::Mass.formula_to_exact_mass(lipid.formula)
|
data/mspire-lipidomics.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "mspire-lipidomics"
|
|
8
|
-
s.version = "0.1.
|
|
8
|
+
s.version = "0.1.8"
|
|
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"]
|
|
12
|
-
s.date = "2012-
|
|
12
|
+
s.date = "2012-07-10"
|
|
13
13
|
s.description = "does lipidomics"
|
|
14
14
|
s.email = "jtprince@gmail.com"
|
|
15
15
|
s.executables = ["lipidomic-search.rb"]
|
|
@@ -56,27 +56,27 @@ Gem::Specification.new do |s|
|
|
|
56
56
|
s.homepage = "http://github.com/princelab/mspire-lipidomics"
|
|
57
57
|
s.licenses = ["MIT"]
|
|
58
58
|
s.require_paths = ["lib"]
|
|
59
|
-
s.rubygems_version = "1.8.
|
|
59
|
+
s.rubygems_version = "1.8.24"
|
|
60
60
|
s.summary = "mass spectrometry based lipidomics - especially shotgun lipidomics"
|
|
61
61
|
|
|
62
62
|
if s.respond_to? :specification_version then
|
|
63
63
|
s.specification_version = 3
|
|
64
64
|
|
|
65
65
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
66
|
-
s.add_runtime_dependency(%q<mspire>, ["
|
|
66
|
+
s.add_runtime_dependency(%q<mspire>, ["~> 0.7.17"])
|
|
67
67
|
s.add_development_dependency(%q<rubabel>, [">= 0.1.0"])
|
|
68
68
|
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
|
69
69
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
70
70
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
|
71
71
|
else
|
|
72
|
-
s.add_dependency(%q<mspire>, ["
|
|
72
|
+
s.add_dependency(%q<mspire>, ["~> 0.7.17"])
|
|
73
73
|
s.add_dependency(%q<rubabel>, [">= 0.1.0"])
|
|
74
74
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
|
75
75
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
76
76
|
s.add_dependency(%q<rcov>, [">= 0"])
|
|
77
77
|
end
|
|
78
78
|
else
|
|
79
|
-
s.add_dependency(%q<mspire>, ["
|
|
79
|
+
s.add_dependency(%q<mspire>, ["~> 0.7.17"])
|
|
80
80
|
s.add_dependency(%q<rubabel>, [">= 0.1.0"])
|
|
81
81
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
|
82
82
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
@@ -14,11 +14,11 @@ parser = Trollop::Parser.new do
|
|
|
14
14
|
opt :top_n, "how many closest ions to print", :default => 3
|
|
15
15
|
banner ""
|
|
16
16
|
text "modifications: (at least 1 charged mod is required)"
|
|
17
|
-
opt :lithium, "search for lithium adducts"
|
|
18
|
-
opt :ammonium, "search for ammonium adducts"
|
|
19
|
-
opt :proton_gain, "search for proton
|
|
20
|
-
opt :proton_loss, "search for proton
|
|
21
|
-
opt :water_loss, "if used, *all* mods are also considered with water
|
|
17
|
+
opt :lithium, "search for i down to 1 lithium adducts", :default => 0
|
|
18
|
+
opt :ammonium, "search for i down to 1 ammonium adducts", :default => 0
|
|
19
|
+
opt :proton_gain, "search for i down to 1 proton additions", :default => 0
|
|
20
|
+
opt :proton_loss, "search for i down to 1 proton losses", :default => 0
|
|
21
|
+
opt :water_loss, "if used, *all* mods are also considered with i down to 0 water losses", :default => 0
|
|
22
22
|
opt :textfile, "a text file with m/z values, one per line", :type => String
|
|
23
23
|
opt :lower_bound, "use lower bound searching (requires m/z's to be in sorted order)"
|
|
24
24
|
opt :sort, "sorts the m/z's"
|
|
@@ -33,7 +33,7 @@ end
|
|
|
33
33
|
|
|
34
34
|
CHARGED_MODS = [:lithium, :ammonium, :proton_gain, :proton_loss]
|
|
35
35
|
|
|
36
|
-
unless CHARGED_MODS.any? {|key| opts[key] }
|
|
36
|
+
unless CHARGED_MODS.any? {|key| opts[key] > 0 }
|
|
37
37
|
puts "*" * 78
|
|
38
38
|
puts "ArgumentError: need at least one charged mod!"
|
|
39
39
|
puts "*" * 78
|
|
@@ -44,9 +44,11 @@ end
|
|
|
44
44
|
(lipidmaps, *actual_mzs) = ARGV
|
|
45
45
|
|
|
46
46
|
if f=opts[:textfile]
|
|
47
|
-
actual_mzs = IO.readlines(f).map(&:chomp)
|
|
47
|
+
actual_mzs = IO.readlines(f).map(&:chomp)
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
+
actual_mzs.map!(&:to_f)
|
|
51
|
+
|
|
50
52
|
unless actual_mzs.size > 0
|
|
51
53
|
STDERR.puts "NO m/z values given!!!"
|
|
52
54
|
parser.educate
|
|
@@ -55,14 +57,14 @@ end
|
|
|
55
57
|
|
|
56
58
|
$VERBOSE = opts[:verbose]
|
|
57
59
|
|
|
58
|
-
|
|
60
|
+
LipidMod = Mspire::Lipid::Modification
|
|
59
61
|
|
|
60
62
|
mods = {
|
|
61
|
-
proton_gain:
|
|
62
|
-
water_loss:
|
|
63
|
-
lithium:
|
|
64
|
-
ammonium:
|
|
65
|
-
proton_loss:
|
|
63
|
+
proton_gain: LipidMod.new(:proton),
|
|
64
|
+
water_loss: LipidMod.new(:water, :loss => true),
|
|
65
|
+
lithium: LipidMod.new(:lithium),
|
|
66
|
+
ammonium: LipidMod.new(:ammonium),
|
|
67
|
+
proton_loss: LipidMod.new(:proton, :loss => true)
|
|
66
68
|
}
|
|
67
69
|
|
|
68
70
|
lipids = Mspire::LipidMaps.parse_file(lipidmaps)
|
|
@@ -70,10 +72,12 @@ lipids = Mspire::LipidMaps.parse_file(lipidmaps)
|
|
|
70
72
|
ions = []
|
|
71
73
|
lipids.each do |lipid|
|
|
72
74
|
CHARGED_MODS.each do |key|
|
|
73
|
-
if opts[key]
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
if opts[key] > 0
|
|
76
|
+
opts[key].downto(1) do |num_charge_mod|
|
|
77
|
+
mods_to_use = [mods[key]] * num_charge_mod
|
|
78
|
+
opts[:water_loss].downto(0) do |i|
|
|
79
|
+
ions << Mspire::Lipid::Ion.new(lipid, mods_to_use + ([mods[:water_loss]]*i))
|
|
80
|
+
end
|
|
77
81
|
end
|
|
78
82
|
end
|
|
79
83
|
end
|
|
@@ -110,7 +114,7 @@ actual_mzs.each do |exp_mz|
|
|
|
110
114
|
rank = i + 1
|
|
111
115
|
ppm = ((exp_mz - ion.mz) / ion.mz) * 1e6
|
|
112
116
|
lipid = ion.lipid
|
|
113
|
-
row.push( rank, ppm, ppm.abs, lipid.category, lipid.lm_id, lipid.common_name, ion.modifications.map(&:
|
|
117
|
+
row.push( rank, ppm, ppm.abs, lipid.category, lipid.lm_id, lipid.common_name, ion.modifications.map(&:charged_formula_string).join(", ") )
|
|
114
118
|
end
|
|
115
119
|
puts row.join("\t")
|
|
116
120
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
require 'mspire/lipid'
|
|
5
4
|
require 'mspire/lipid/modification'
|
|
6
5
|
require 'mspire/lipid/ion'
|
|
@@ -15,17 +14,29 @@ end
|
|
|
15
14
|
describe Mspire::Lipid::Ion do
|
|
16
15
|
|
|
17
16
|
before do
|
|
18
|
-
lipid = Mspire::Lipid.new
|
|
19
|
-
lipid.mass = 300.2
|
|
17
|
+
lipid = Mspire::Lipid.new("LMGP02010009", "PE(16:0/18:1(9Z))", "1-hexadecanoyl-2-(9Z-octadecenoyl)-sn-glycero-3-phosphoethanolamine", 'C39H76NO8P', 717.5308, 'Glycerophospholipids [GP]', 'Glycerophosphoethanolamines [GP02]', 'Diacylglycerophosphoethanolamines [GP0201]', '7850611', 'FHQVHHIBKUMWTI-OTMQOFQLSA-N')
|
|
20
18
|
proton = Mspire::Lipid::Modification.new(:proton)
|
|
19
|
+
proton_loss = Mspire::Lipid::Modification.new(:proton, :loss => true)
|
|
21
20
|
h2o_loss = Mspire::Lipid::Modification.new(:water, :loss => true)
|
|
22
|
-
@
|
|
23
|
-
@
|
|
21
|
+
@plus1_less_h20 = Mspire::Lipid::Ion.new(lipid, [proton, h2o_loss])
|
|
22
|
+
@plus2_less_h20 = Mspire::Lipid::Ion.new(lipid, [proton, proton, h2o_loss])
|
|
23
|
+
@minus1_less_h20 = Mspire::Lipid::Ion.new(lipid, [proton_loss, h2o_loss])
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
it 'calculates the correct m/z' do
|
|
27
|
-
@
|
|
28
|
-
@
|
|
27
|
+
@plus1_less_h20.mz.should be_within(1e-5).of(700.52751178307)
|
|
28
|
+
@plus2_less_h20.mz.should be_within(1e-5).of(350.76739412492003)
|
|
29
|
+
@minus1_less_h20.mz.should be_within(1e-5).of(698.5129588842301)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'calculates the correct formula' do
|
|
33
|
+
@plus1_less_h20.formula.to_s.should == "C39H75NO7P"
|
|
34
|
+
@plus1_less_h20.charge.should == 1
|
|
35
|
+
|
|
36
|
+
@plus2_less_h20.formula.to_s.should == "C39H76NO7P"
|
|
37
|
+
@plus2_less_h20.charge.should == 2
|
|
38
|
+
@minus1_less_h20.formula.to_s.should == "C39H73NO7P"
|
|
39
|
+
@minus1_less_h20.charge.should == -1
|
|
29
40
|
end
|
|
30
41
|
|
|
31
42
|
describe 'predicting ms/ms fragments' do
|
|
@@ -43,7 +54,8 @@ describe Mspire::Lipid::Ion do
|
|
|
43
54
|
mzs.sort.should == frags.sort
|
|
44
55
|
end
|
|
45
56
|
|
|
46
|
-
|
|
57
|
+
# WORKING THIS GUY OUT!!!!!!
|
|
58
|
+
xit '11-methyl-9S-hydroxy-13E-hexadecenoic acid' do
|
|
47
59
|
lipid = Mspire::Lipid.new(nil, 'Made Up', '11-methyl-9S-hydroxy-13E-hexadecenoic acid', 'C17H32O3', 284.23514488492003, 'Fatty Acyls [FA]', 'Fatty Acids and Conjugates [FA01]', 'Branched fatty acids [FA0102]')
|
|
48
60
|
ion = Mspire::Lipid::Ion.new(lipid, [MSS::PROTON_LOSS])
|
|
49
61
|
|
|
@@ -69,7 +81,6 @@ describe Mspire::Lipid::Ion do
|
|
|
69
81
|
frags << frag1 - (MSS::H2O + MSS::CO2)
|
|
70
82
|
|
|
71
83
|
mzs = ion.predict_fragment_mzs
|
|
72
|
-
p mzs
|
|
73
84
|
#mzs.sort.should == frags.sort
|
|
74
85
|
end
|
|
75
86
|
|
|
@@ -1,30 +1,46 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
require 'mspire/lipid/modification'
|
|
4
|
+
require 'mspire/lipid'
|
|
5
|
+
require 'mspire/lipid/ion'
|
|
4
6
|
|
|
5
7
|
describe Mspire::Lipid::Modification do
|
|
6
8
|
Mod = Mspire::Lipid::Modification
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
10
|
+
describe 'creates common mods easily' do
|
|
11
|
+
|
|
12
|
+
it 'water loss' do
|
|
13
|
+
water_loss = Mod.new(:water, :loss => true)
|
|
14
|
+
water_loss.loss?.should be_true
|
|
15
|
+
water_loss.massdiff.<(0).should be_true
|
|
16
|
+
water_loss.charge.should == 0
|
|
17
|
+
water_loss.charged_formula_string.should == 'H2O'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'proton gain' do
|
|
21
|
+
prot = Mod.new(:proton)
|
|
22
|
+
prot.gain?.should be_true
|
|
23
|
+
prot.massdiff.>(0).should be_true
|
|
24
|
+
prot.charge.should == 1
|
|
25
|
+
prot.charged_formula_string.should == 'H+'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'proton loss' do
|
|
29
|
+
prot_loss = Mod.new(:proton, :loss => true)
|
|
30
|
+
prot_loss.gain?.should be_false
|
|
31
|
+
prot_loss.loss?.should be_true
|
|
32
|
+
prot_loss.massdiff.<(0).should be_true
|
|
33
|
+
prot_loss.charge.should == -1
|
|
34
|
+
prot_loss.charged_formula_string.should == 'H-'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it 'ammonium gain' do
|
|
38
|
+
ammon = Mod.new(:ammonium)
|
|
39
|
+
ammon.gain?.should be_true
|
|
40
|
+
ammon.massdiff.>(0).should be_true
|
|
41
|
+
ammon.charge.should == 1
|
|
42
|
+
ammon.charged_formula_string.should == 'H4N+'
|
|
43
|
+
end
|
|
28
44
|
end
|
|
29
45
|
|
|
30
46
|
it 'can create custom mods' do
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mspire-lipidomics
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.8
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,24 +9,24 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2012-
|
|
12
|
+
date: 2012-07-10 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: mspire
|
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
|
-
- -
|
|
19
|
+
- - ~>
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: 0.7.
|
|
21
|
+
version: 0.7.17
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
25
|
none: false
|
|
26
26
|
requirements:
|
|
27
|
-
- -
|
|
27
|
+
- - ~>
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: 0.7.
|
|
29
|
+
version: 0.7.17
|
|
30
30
|
- !ruby/object:Gem::Dependency
|
|
31
31
|
name: rubabel
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -155,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
155
155
|
version: '0'
|
|
156
156
|
requirements: []
|
|
157
157
|
rubyforge_project:
|
|
158
|
-
rubygems_version: 1.8.
|
|
158
|
+
rubygems_version: 1.8.24
|
|
159
159
|
signing_key:
|
|
160
160
|
specification_version: 3
|
|
161
161
|
summary: mass spectrometry based lipidomics - especially shotgun lipidomics
|