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 +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
|