mspire 0.7.9 → 0.7.10

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.9
1
+ 0.7.10
@@ -1,10 +1,17 @@
1
+ require 'mspire/molecular_formula'
2
+
3
+ module Mspire
4
+ class MolecularFormula < Hash
5
+ end
6
+ end
7
+
1
8
 
2
9
  module Mspire
3
10
  class Isotope
4
11
  module AA
5
12
  # These represent counts for the individual residues (i.e., no extra H
6
13
  # and OH on the ends)
7
- ATOM_COUNTS_STR = {
14
+ aa_to_el_hash = {
8
15
  'A' => { :c =>3, :h =>5 , :o =>1 , :n =>1 , :s =>0 , :p =>0, :se =>0 },
9
16
  'R' => { :c =>6, :h =>12 , :o =>1 , :n =>4 , :s =>0 , :p =>0, :se =>0 },
10
17
  'N' => { :c =>4, :h =>6 , :o =>2 , :n =>2 , :s =>0 , :p =>0, :se =>0 },
@@ -28,11 +35,20 @@ module Mspire
28
35
  'U' => { :c =>3, :h =>5 , :o =>1 , :n =>1 , :s =>0 , :p =>0, :se =>1 },
29
36
  'O' => { :c =>12, :h =>19 , :o =>2 , :n =>3 , :s =>0 , :p =>0, :se =>0 }
30
37
  }
31
- ATOM_COUNTS_SYM = Hash[ATOM_COUNTS_STR.map {|k,v| [k.to_sym, v] }]
32
38
 
33
- # string and symbol access of amino acid (atoms are all lower case
34
- # symbols)
35
- ATOM_COUNTS = ATOM_COUNTS_SYM.merge ATOM_COUNTS_STR
39
+ #
40
+ FORMULAS_STR = Hash[
41
+ aa_to_el_hash.map {|k,v| [k, Mspire::MolecularFormula.new(v)] }
42
+ ]
43
+
44
+ FORMULAS_SYM = Hash[FORMULAS_STR.map {|k,v| [k.to_sym, v] }]
45
+
46
+ # string and symbol access of amino acid residues (amino acids are
47
+ # accessed upper case and atoms are all lower case symbols)
48
+ FORMULAS = FORMULAS_SYM.merge FORMULAS_STR
49
+
50
+ # an alias for FORMULAS
51
+ ATOM_COUNTS = FORMULAS
36
52
  end
37
53
  end
38
54
  end
@@ -3,6 +3,7 @@ require 'mspire/mass'
3
3
  module Mspire
4
4
  module Mass
5
5
  module AA
6
+
6
7
  # amino_acids keys as strings, average masses
7
8
  AVG_STRING = {
8
9
  "*"=>118.88603,
@@ -32,6 +33,7 @@ module Mspire
32
33
  "Y"=>163.17326,
33
34
  "Z"=>128.6231
34
35
  }
36
+
35
37
  # amino_acids keys as strings, monoisotopic masses
36
38
  MONO_STRING = {
37
39
  "*"=>118.805716,
@@ -69,10 +71,11 @@ module Mspire
69
71
  AVG_SYM = Hash[AVG_STRING.map {|aa,mass| [aa.to_sym, mass] } ]
70
72
 
71
73
  # Monoisotopic amino acid masses keyed as symbols and also strings (all
72
- # upper case). Also includes Mspire::Mass::MONO for things like protons ('h+')
74
+ # upper case). Also includes Mspire::Mass::MONO for things like protons ('h+' and 'h2o')
73
75
  MONO = MONO_SYM.merge(MONO_STRING).merge(Mspire::Mass::MONO)
76
+
74
77
  # Average amino acid masses keyed as symbols and also strings (all
75
- # uppder case). Also includes Mspire::Mass::AVG for things like protons ('h+')
78
+ # uppder case). Also includes Mspire::Mass::AVG for things like protons ('h+' and 'h2o')
76
79
  AVG = AVG_SYM.merge(AVG_STRING).merge(Mspire::Mass::AVG)
77
80
  end
78
81
  end
data/lib/mspire/mass.rb CHANGED
@@ -16,6 +16,7 @@ module Mspire
16
16
  'e' => 0.0005486, # www.mikeblaber.org/oldwine/chm1045/notes/Atoms/.../Atoms03.htm
17
17
  'neutron' => 1.0086649156,
18
18
  }
19
+
19
20
  Mspire::Isotope::BY_ELEMENT.each do |el, isotopes|
20
21
  MONO_STR[el.to_s] = isotopes.find {|iso| iso.mono }.atomic_mass
21
22
  end
@@ -25,7 +25,7 @@ module Mspire
25
25
 
26
26
  def self.from_aaseq(aaseq)
27
27
  hash = aaseq.each_char.inject({}) do |hash,aa|
28
- hash.merge(Mspire::Isotope::AA::ATOM_COUNTS[aa]) {|h,o,n| (o ? o : 0) +n }
28
+ hash.merge(Mspire::Isotope::AA::FORMULAS[aa]) {|h,o,n| (o ? o : 0) +n }
29
29
  end
30
30
  hash[:h] += 2
31
31
  hash[:o] += 1
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'open-uri'
5
+ require 'cgi'
6
+
7
+ # see http://www.uniprot.org/faq/28
8
+
9
+ # here are some example human files (tax ID = 9606)
10
+ # CANONICAL SEQUENCES:
11
+ # http://www.uniprot.org/uniprot/?query=taxonomy:9606&force=yes&format=fasta
12
+ # URL SAFE:
13
+ # http://www.uniprot.org/uniprot/?query=taxonomy%3a9606&force=yes&format=fasta
14
+
15
+ # CANONICAL + VARIANTS:
16
+ # http://www.uniprot.org/uniprot/?query=taxonomy:9606&force=yes&format=fasta&include=yes
17
+ # URL SAFE: http://www.uniprot.org/uniprot/?query=taxonomy%3a9606&force=yes&format=fasta&include=yes
18
+
19
+
20
+ FORMATS = %w(fasta gff xls tab txt xml rdf list)
21
+ # list is just a list of accession numbers
22
+
23
+ # include includes sequence variants (otherwise canonical)
24
+ args = { :format => FORMATS.first, :force => 'yes', :include => 'yes', :compress => 'yes' }
25
+ # force just makes the file a download (matters for browsers)
26
+
27
+ # queries are in this format:
28
+ # query=organism:9606+AND+organelle:mitochondrion
29
+
30
+ #[OC] taxonomy
31
+ #[OG] organelle
32
+
33
+ TAXONOMY_BROWSER_URL = "http://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/index.cgi"
34
+
35
+ =begin
36
+ Y is a mnemonic species identification code of at most 5 alphanumeric
37
+ characters representing the biological source of the protein. This
38
+ code is generally made of the first three letters of the genus and
39
+ the first two letters of the species. Examples: PSEPU is for
40
+ Pseudomonas putida and NAJNI is for Naja nivea.
41
+
42
+ However, for species commonly encountered in the data bank, self-
43
+ explanatory codes are used. There are 16 of those codes. They are:
44
+ BOVIN for Bovine, CHICK for Chicken, ECOLI for Escherichia coli,
45
+ HORSE for Horse, HUMAN for Human, MAIZE for Maize (Zea mays) , MOUSE
46
+ for Mouse, PEA for Garden pea (Pisum sativum), PIG for Pig, RABIT
47
+ for Rabbit, RAT for Rat, SHEEP for Sheep, SOYBN for Soybean (Glycine
48
+ max), TOBAC for Common tobacco (Nicotina tabacum), WHEAT for Wheat
49
+ (Triticum aestivum), YEAST for Baker's yeast (Saccharomyces
50
+ cerevisiae).
51
+
52
+ BOVIN
53
+ CHICK
54
+ ECOLI
55
+ HORSE
56
+ HUMAN
57
+ MAIZE
58
+ MOUSE
59
+ PEA
60
+ PIG
61
+ RABIT
62
+ RAT
63
+ SHEEP
64
+ SOYBN
65
+ TOBAC
66
+ WHEAT
67
+ YEAST
68
+
69
+ =end
70
+
71
+ TAXONOMY_IDS =
72
+ { :human => [9606, 'Homo sapiens'],
73
+ :mouse => [10090, 'Mus musculus'],
74
+ :yeast => [4932, 'Saccharomyces cerevisiae'],
75
+ :ecoli => [562, 'Escherichia coli'],
76
+ :caeel => [6239, 'Caenorhabditis elegans'],
77
+ :drome => [7227, 'Drosophila melanogaster'],
78
+ :grpln => [33090, 'Viridiplantae'],
79
+ }
80
+
81
+ def list_taxonomies
82
+ puts " Key ID Genus/Species"
83
+ puts " ===== ===== ============="
84
+ puts( TAXONOMY_IDS.map {|k,v| " %s %6d %s" % [k,*v] }.join("\n") )
85
+ puts ""
86
+ puts "See #{TAXONOMY_BROWSER_URL}"
87
+ true
88
+ end
89
+
90
+ opts = OptionParser.new do |op|
91
+ op.banner = "usage: #{File.basename(__FILE__)} <5-Letter-Species-Name|taxID>"
92
+ op.separator ""
93
+ op.separator " requires 5-letter key (Swiss-Prot Mnemonic) (-l to see list)"
94
+ op.separator " (note that outside the core ~12, these are just made up)"
95
+ op.separator " or the actual NCBI taxonomy ID"
96
+ op.separator " [add your key to TAXONOMY_IDS if you want]"
97
+ op.separator ""
98
+ op.on("-l", "--list-species", "lists available species and exits") { list_taxonomies && exit }
99
+ op.on("-c", "--canonical", "don't include sequence variants") { args[:include] = 'no' }
100
+ op.on("--no-compress", "don't compress the file") { args[:compress] = 'no' }
101
+ op.on("-f", "--format <string>", "Format type. One of (1st is default):", " #{FORMATS.join(' ')}") do |v|
102
+ raise ArgumentError, "format needs to be one of: #{FORMATS.join(' ')}" unless FORMATS.include?(v)
103
+ args[:format] = v
104
+ end
105
+ op.on("-v", "--verbose", "talk about it") { $VERBOSE = true }
106
+ end
107
+
108
+ opts.parse!
109
+
110
+ if ARGV.size == 0
111
+ puts opts
112
+ exit
113
+ end
114
+
115
+ mnemonic = ARGV.shift
116
+ # use the taxonomy id if exists, otherwise use the tax ID itself
117
+ tax_id =
118
+ if val = TAXONOMY_IDS[mnemonic.to_sym]
119
+ val.first
120
+ else
121
+ mnemonic
122
+ end
123
+ args[:query] = "taxonomy:#{tax_id}"
124
+
125
+ base_url = "http://www.uniprot.org/uniprot/?"
126
+ query_string = args.map {|k,v| [k,CGI.escape(v)].join('=') }.join("&")
127
+
128
+ url = base_url + query_string
129
+
130
+ prefix = "uni"
131
+ variants = (args[:include] == 'yes') ? 'var' : 'can'
132
+ short_date = Time.now.strftime("%y%m%d")
133
+ decoytype = "fwd"
134
+ postfix = ".fasta"
135
+
136
+ filename = [prefix, mnemonic, variants, short_date, decoytype].join("_") << postfix
137
+ (filename << ".gz") if args[:compress] == 'yes'
138
+ puts "reading from url : #{url}"
139
+ puts "writing to file : #{filename}"
140
+ File.open(filename,'w') do |out|
141
+ open(url) do |io|
142
+ out.print( io.read )
143
+ end
144
+ end
145
+
146
+
@@ -5,11 +5,21 @@ require 'mspire/mzml'
5
5
  require 'mspire/peak_list'
6
6
  require 'mspire/peak'
7
7
 
8
+ def putsv(*args)
9
+ if $VERBOSE
10
+ puts(*args)
11
+ end
12
+ end
13
+
8
14
  DEFAULT_OUTFILE = "quant_compare.tsv"
9
15
 
10
16
  DEFAULTS = {
11
17
  :bin_width => Mspire::PeakList::DEFAULT_MERGE[:bin_width],
12
18
  :bin_unit => Mspire::PeakList::DEFAULT_MERGE[:bin_unit],
19
+ :split => Mspire::PeakList::DEFAULT_MERGE[:split],
20
+ :round_mz => 6,
21
+ :round_intensity => 6,
22
+ :mz_prefix => "mz"
13
23
  }
14
24
 
15
25
  parser = Trollop::Parser.new do
@@ -19,11 +29,18 @@ parser = Trollop::Parser.new do
19
29
  opt :outfile, "write results to this file", :default => DEFAULT_OUTFILE
20
30
  opt :bin_width, "width of the bins for merging", :default => DEFAULTS[:bin_width]
21
31
  opt :bin_unit, "units for binning (ppm or amu)", :default => DEFAULTS[:bin_unit].to_s
32
+ opt :split, "share|greedy_y|zero method used to distinguish peaks", :default => DEFAULTS[:split].to_s
22
33
  opt :sample_ids, "a yml file pointing basename to id", :type => :string
34
+ opt :mz_prefix, "use this prefix for mz values", :default => DEFAULTS[:mz_prefix]
35
+ opt :round_mz, "round the final m/z values to this place", :default => DEFAULTS[:round_mz]
36
+ opt :round_intensity, "round the final int values to this place", :default => DEFAULTS[:round_intensity]
37
+ opt :verbose, "talk about it"
23
38
  end
24
39
 
25
40
  opts = parser.parse(ARGV)
26
41
  opts[:bin_unit] = opts[:bin_unit].to_sym
42
+ opts[:split] = opts[:split].to_sym
43
+ $VERBOSE = opts.delete(:verbose)
27
44
 
28
45
  if ARGV.size == 0
29
46
  parser.educate
@@ -36,6 +53,14 @@ class TracedPeak < Array
36
53
  # the intensity or y value
37
54
  alias_method :y, :last
38
55
 
56
+ def x=(val)
57
+ self[0] = val
58
+ end
59
+
60
+ def y=(val)
61
+ self[2] = val
62
+ end
63
+
39
64
  def initialize(data, sample_id)
40
65
  self[0] = data.first
41
66
  self[1] = sample_id
@@ -63,7 +88,7 @@ index_to_sample_id = {}
63
88
  sample_ids = files.each_with_index.map do |filename,index|
64
89
  basename = filename.chomp(File.extname(filename))
65
90
  sample_id = basename_to_sample_id ? basename_to_sample_id[basename] : basename
66
- puts "processing: #{filename}"
91
+ putsv "processing: #{filename}"
67
92
  Mspire::Mzml.open(filename) do |mzml|
68
93
  mzml.each_with_index do |spec,i|
69
94
  if spec.ms_level == 1
@@ -80,31 +105,32 @@ sample_ids = files.each_with_index.map do |filename,index|
80
105
  sample_id
81
106
  end
82
107
 
83
- puts "gathered #{peaklist.size} peaks!"
108
+ putsv "gathered #{peaklist.size} peaks!"
84
109
 
85
- puts "sorting all peaks"
110
+ putsv "sorting all peaks"
86
111
  peaklist.sort!
87
112
 
88
- puts "merging peaks"
89
- #share_method = :greedy_y
90
- share_method = :share
113
+ putsv "merging peaks"
114
+ share_method = :greedy_y
115
+ #share_method = :share
116
+
91
117
 
92
- $VERBOSE = true
93
- data = Mspire::PeakList.merge([peaklist], opts.merge( {:only_data => true, :split => share_method} ))
94
- p data.size
95
- p data.first.size
118
+ peaks, data = Mspire::PeakList.merge([peaklist], opts.merge( {:split => share_method, :return_data => true} ))
96
119
 
97
120
  File.open(opts[:outfile],'w') do |out|
98
121
 
99
122
  header = ["mzs", *sample_ids]
100
123
  out.puts header.join("\t")
101
124
 
102
- data.each do |bucket_of_peaks|
125
+ data.zip(peaks) do |bucket_of_peaks, meta_peak|
126
+
103
127
  signal_by_sample_index = Hash.new {|h,k| h[k] = 0.0 }
104
- mz = weighted_mz
105
- row = [mz.round(6), *sample_ids.each_with_index.map {|id,index| signal_by_sample_index[index] }]
128
+ bucket_of_peaks.each do |peak|
129
+ signal_by_sample_index[peak.sample_id] += peak.y
130
+ end
131
+
132
+ row = [opts[:mz_prefix] + meta_peak.x.round(opts[:round_mz]).to_s, *sample_ids.each_with_index.map {|id,index| signal_by_sample_index[index].round(opts[:round_intensity]) }]
106
133
  out.puts row.join("\t")
107
134
  end
108
135
  end
109
136
 
110
-
@@ -8,12 +8,12 @@ describe 'accessing an amino acid atom count' do
8
8
  end
9
9
 
10
10
  it 'residue can be accessed with a symbol' do
11
- hash = Mspire::Isotope::AA::ATOM_COUNTS[:A]
11
+ hash = Mspire::Isotope::AA::FORMULAS[:A]
12
12
  [:c, :h, :o, :n, :s].each {|key| hash[key].should == @alanine[key] }
13
13
  end
14
14
 
15
15
  it 'residue can be accessed with a string' do
16
- hash = Mspire::Isotope::AA::ATOM_COUNTS['A']
16
+ hash = Mspire::Isotope::AA::FORMULAS['A']
17
17
  [:c, :h, :o, :n, :s].each {|key| hash[key].should == @alanine[key] }
18
18
  end
19
19
 
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.7.9
4
+ version: 0.7.10
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-04-14 00:00:00.000000000 Z
13
+ date: 2012-04-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
17
- requirement: &23083440 !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: *23083440
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: &23080720 !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: *23080720
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: &23078680 !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: *23078680
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: &23076600 !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: *23076600
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: &23074560 !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: *23074560
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: bio
72
- requirement: &23073060 !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.4.2
78
103
  type: :runtime
79
104
  prerelease: false
80
- version_requirements: *23073060
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.4.2
81
111
  - !ruby/object:Gem::Dependency
82
112
  name: trollop
83
- requirement: &23071860 !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: 1.16.2
89
119
  type: :runtime
90
120
  prerelease: false
91
- version_requirements: *23071860
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ~>
125
+ - !ruby/object:Gem::Version
126
+ version: 1.16.2
92
127
  - !ruby/object:Gem::Dependency
93
128
  name: uuid
94
- requirement: &23070700 !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: 2.3.5
100
135
  type: :runtime
101
136
  prerelease: false
102
- version_requirements: *23070700
137
+ version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: 2.3.5
103
143
  - !ruby/object:Gem::Dependency
104
144
  name: fftw3
105
- requirement: &23068400 !ruby/object:Gem::Requirement
145
+ requirement: !ruby/object:Gem::Requirement
106
146
  none: false
107
147
  requirements:
108
148
  - - ~>
@@ -110,10 +150,15 @@ dependencies:
110
150
  version: '0.3'
111
151
  type: :development
112
152
  prerelease: false
113
- version_requirements: *23068400
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ version: '0.3'
114
159
  - !ruby/object:Gem::Dependency
115
160
  name: rspec
116
- requirement: &23066100 !ruby/object:Gem::Requirement
161
+ requirement: !ruby/object:Gem::Requirement
117
162
  none: false
118
163
  requirements:
119
164
  - - ~>
@@ -121,10 +166,15 @@ dependencies:
121
166
  version: '2.6'
122
167
  type: :development
123
168
  prerelease: false
124
- version_requirements: *23066100
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: '2.6'
125
175
  - !ruby/object:Gem::Dependency
126
176
  name: jeweler
127
- requirement: &23063900 !ruby/object:Gem::Requirement
177
+ requirement: !ruby/object:Gem::Requirement
128
178
  none: false
129
179
  requirements:
130
180
  - - ~>
@@ -132,7 +182,12 @@ dependencies:
132
182
  version: 1.5.2
133
183
  type: :development
134
184
  prerelease: false
135
- version_requirements: *23063900
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ~>
189
+ - !ruby/object:Gem::Version
190
+ version: 1.5.2
136
191
  description: mass spectrometry proteomics, lipidomics, and tools, a rewrite of mspire,
137
192
  merging of ms-* gems
138
193
  email: jtprince@gmail.com
@@ -244,6 +299,7 @@ files:
244
299
  - obo/ims.obo
245
300
  - obo/ms.obo
246
301
  - obo/unit.obo
302
+ - script/download_uniprotkb_db.rb
247
303
  - script/mzml_read_binary.rb
248
304
  - script/quant_compare_direct_injections.rb
249
305
  - spec/cv/param_spec.rb
@@ -333,7 +389,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
333
389
  version: '0'
334
390
  requirements: []
335
391
  rubyforge_project:
336
- rubygems_version: 1.8.15
392
+ rubygems_version: 1.8.18
337
393
  signing_key:
338
394
  specification_version: 3
339
395
  summary: mass spectrometry proteomics, lipidomics, and tools