mspire 0.7.9 → 0.7.10
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/mspire/isotope/aa.rb +21 -5
- data/lib/mspire/mass/aa.rb +5 -2
- data/lib/mspire/mass.rb +1 -0
- data/lib/mspire/molecular_formula.rb +1 -1
- data/script/download_uniprotkb_db.rb +146 -0
- data/script/quant_compare_direct_injections.rb +40 -14
- data/spec/mspire/isotope/aa_spec.rb +2 -2
- metadata +81 -25
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.10
|
data/lib/mspire/isotope/aa.rb
CHANGED
@@ -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
|
-
|
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
|
-
#
|
34
|
-
|
35
|
-
|
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
|
data/lib/mspire/mass/aa.rb
CHANGED
@@ -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::
|
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
|
-
|
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
|
-
|
108
|
+
putsv "gathered #{peaklist.size} peaks!"
|
84
109
|
|
85
|
-
|
110
|
+
putsv "sorting all peaks"
|
86
111
|
peaklist.sort!
|
87
112
|
|
88
|
-
|
89
|
-
|
90
|
-
share_method = :share
|
113
|
+
putsv "merging peaks"
|
114
|
+
share_method = :greedy_y
|
115
|
+
#share_method = :share
|
116
|
+
|
91
117
|
|
92
|
-
|
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.
|
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
|
-
|
105
|
-
|
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::
|
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::
|
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.
|
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-
|
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:
|
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: bio
|
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.4.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.4.2
|
81
111
|
- !ruby/object:Gem::Dependency
|
82
112
|
name: trollop
|
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: 1.16.2
|
89
119
|
type: :runtime
|
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: 1.16.2
|
92
127
|
- !ruby/object:Gem::Dependency
|
93
128
|
name: uuid
|
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: 2.3.5
|
100
135
|
type: :runtime
|
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: 2.3.5
|
103
143
|
- !ruby/object:Gem::Dependency
|
104
144
|
name: fftw3
|
105
|
-
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
392
|
+
rubygems_version: 1.8.18
|
337
393
|
signing_key:
|
338
394
|
specification_version: 3
|
339
395
|
summary: mass spectrometry proteomics, lipidomics, and tools
|