unipept 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bin/unipept +51 -23
- data/lib/unipept/formatters.rb +10 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a8c0e99c89c6bc8304ff54fb44c0f432021f2db
|
4
|
+
data.tar.gz: 29e5c50c53cc1246212d9bf1e184ac0760c90739
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0be78a434a0758a1f12d991511d13f106e2fd7646a338f95c7699b0f79132e28f60a0b1da843ab0bff3d113fce23ac8ef9586b4cf053b23a3633036fd6ab3646
|
7
|
+
data.tar.gz: 205a9c2c8b6c2594bd26464f4f45201940fa5dd041ffc8f620aa08a3425c491bbe56c67cf8c61f5a90e8cd5e3138bb868f304c9b4b3e59ac74eb3589bc181dda
|
data/Rakefile
CHANGED
@@ -24,7 +24,7 @@ Jeweler::Tasks.new do |gem|
|
|
24
24
|
gem.authors = ["Toon Willems"]
|
25
25
|
# dependencies defined in Gemfile
|
26
26
|
gem.add_dependency 'faraday', '~> 0.9'
|
27
|
-
gem.add_dependency 'cri', '~> 2.
|
27
|
+
gem.add_dependency 'cri', '~> 2.6'
|
28
28
|
gem.add_dependency 'ruby-progressbar', '~> 1.4'
|
29
29
|
end
|
30
30
|
Jeweler::RubygemsDotOrgTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/bin/unipept
CHANGED
@@ -12,6 +12,8 @@ require_relative '../lib/unipept'
|
|
12
12
|
|
13
13
|
class ApiRunner < Cri::CommandRunner
|
14
14
|
|
15
|
+
attr_accessor :progress
|
16
|
+
|
15
17
|
def initialize(args, opts, cmd)
|
16
18
|
super
|
17
19
|
host = Unipept::Configuration.new['host']
|
@@ -19,9 +21,14 @@ class ApiRunner < Cri::CommandRunner
|
|
19
21
|
puts "WARNING: no host has been set, you can set the host with `unipept config host http://localhost:3000/`"
|
20
22
|
exit 1
|
21
23
|
end
|
24
|
+
if !host.start_with? "http://"
|
25
|
+
host = "http://#{host}"
|
26
|
+
end
|
27
|
+
|
22
28
|
@url = "#{host}/api/v1/#{mapping[cmd.name]}.json"
|
23
29
|
end
|
24
30
|
|
31
|
+
|
25
32
|
def mapping
|
26
33
|
{'pept2taxa' => 'single', 'pept2lca' => 'lca'}
|
27
34
|
end
|
@@ -41,55 +48,78 @@ class ApiRunner < Cri::CommandRunner
|
|
41
48
|
end
|
42
49
|
|
43
50
|
def url_options(sub_part)
|
51
|
+
filter = options[:select] ? options[:select] : []
|
52
|
+
if filter.empty?
|
53
|
+
names = true
|
54
|
+
else
|
55
|
+
names = filter.any? {|f| /.*name.*/.match f}
|
56
|
+
end
|
44
57
|
{:sequences => sub_part,
|
45
58
|
:equate_il => options[:equate],
|
46
|
-
:full_lineage => options[:lineage]
|
59
|
+
:full_lineage => options[:lineage],
|
60
|
+
:names => names,
|
61
|
+
}
|
47
62
|
end
|
48
63
|
|
49
64
|
def run
|
50
65
|
formatter = Unipept::Formatter.new_for_format(options[:format])
|
51
66
|
peptides = read_input
|
52
67
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
progress = ProgressBar.create(total: peptides.size, output:
|
68
|
+
filter_list = options[:select] ? options[:select] : []
|
69
|
+
filter_list = filter_list.map {|f| glob_to_regex(f) }
|
70
|
+
output = STDOUT.tty? ? STDOUT : STDERR
|
71
|
+
self.progress = ProgressBar.create(total: peptides.size, output: output)
|
57
72
|
|
73
|
+
printed_header = false
|
58
74
|
result = []
|
59
|
-
peptides.each_slice(self.batch_size) do |sub_division|
|
60
75
|
|
76
|
+
peptides.each_slice(self.batch_size) do |sub_division|
|
61
77
|
begin
|
62
78
|
sub_result = JSON[Faraday.post(@url, url_options(sub_division)).body]
|
63
79
|
rescue
|
64
|
-
puts "API endpoint gave an error, exiting."
|
80
|
+
STDERR.puts "API endpoint gave an error, exiting."
|
65
81
|
exit 1
|
66
82
|
end
|
67
83
|
|
68
84
|
sub_result = [sub_result] if not sub_result.kind_of? Array
|
69
85
|
|
70
|
-
sub_result.map! {|r| r.select! {|k,v|
|
86
|
+
sub_result.map! {|r| r.select! {|k,v| filter_list.any? {|f| f.match k } } } if ! filter_list.empty?
|
71
87
|
|
72
88
|
result << sub_result
|
73
89
|
|
90
|
+
if ! printed_header
|
91
|
+
write_to_output formatter.header(sub_result)
|
92
|
+
printed_header = true
|
93
|
+
end
|
94
|
+
|
95
|
+
write_to_output formatter.format(sub_result)
|
74
96
|
progress.progress += sub_division.size
|
75
97
|
end
|
76
98
|
|
77
99
|
begin
|
78
100
|
download_xml(result)
|
79
101
|
rescue
|
80
|
-
puts "Something went wrong while downloading xml information! please check the output"
|
102
|
+
STDERR.puts "Something went wrong while downloading xml information! please check the output"
|
81
103
|
end
|
82
104
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
105
|
+
end
|
106
|
+
|
107
|
+
def write_to_output(string)
|
108
|
+
if options[:output]
|
109
|
+
File.open(options[:output], 'a') do |f|
|
110
|
+
f.write string
|
111
|
+
end
|
112
|
+
else
|
113
|
+
if STDOUT.tty?
|
114
|
+
progress.log string
|
115
|
+
else
|
116
|
+
puts string
|
117
|
+
end
|
87
118
|
end
|
88
|
-
|
89
|
-
puts result
|
90
|
-
end
|
119
|
+
|
91
120
|
end
|
92
121
|
|
122
|
+
|
93
123
|
def download_xml(result)
|
94
124
|
if options[:xml]
|
95
125
|
File.open(options[:xml] + ".xml", "wb") do |f|
|
@@ -117,11 +147,9 @@ class Taxa2lca < ApiRunner
|
|
117
147
|
end
|
118
148
|
|
119
149
|
def batch_size
|
120
|
-
|
150
|
+
Float::INFINITY
|
121
151
|
end
|
122
152
|
|
123
|
-
|
124
|
-
|
125
153
|
end
|
126
154
|
|
127
155
|
class Pept2pro < ApiRunner
|
@@ -177,7 +205,7 @@ root_cmd.define_command('pept2taxa') do
|
|
177
205
|
description 'Search Unipept for the given peptide and return taxons'
|
178
206
|
|
179
207
|
flag :e, :equate, "equate I and L"
|
180
|
-
option :s, :select, "select the attributes", :argument => :required
|
208
|
+
option :s, :select, "select the attributes", :argument => :required, :multiple => true
|
181
209
|
option :l, :lineage, "Show full lineage"
|
182
210
|
option :x, :xml, "Download taxonomy from NCBI as xml (specify output filename)", :argument => :required
|
183
211
|
|
@@ -191,7 +219,7 @@ root_cmd.define_command('pept2lca') do
|
|
191
219
|
description 'Search Unipept for the given peptide and return the lowest common ancestor'
|
192
220
|
|
193
221
|
flag :e, :equate, "equate I and L"
|
194
|
-
option :s, :select, "select the attributes", :argument => :required
|
222
|
+
option :s, :select, "select the attributes", :argument => :required, :multiple => true
|
195
223
|
option :l, :lineage, "Show full lineage"
|
196
224
|
|
197
225
|
runner ApiRunner
|
@@ -203,7 +231,7 @@ root_cmd.define_command('taxa2lca') do
|
|
203
231
|
summary 'Give lowest common ancestor for taxon ids'
|
204
232
|
description 'Search Unipept for the given taxon ids and return the lowest common ancestor'
|
205
233
|
|
206
|
-
option :s, :select, "select the attributes", :argument => :required
|
234
|
+
option :s, :select, "select the attributes", :argument => :required, :multiple => true
|
207
235
|
option :l, :lineage, "Show full lineage"
|
208
236
|
|
209
237
|
runner Taxa2lca
|
@@ -216,7 +244,7 @@ root_cmd.define_command('pept2pro') do
|
|
216
244
|
description 'Search Unipept for the given peptides and return the lowest common ancestor'
|
217
245
|
|
218
246
|
flag :e, :equate, "equate I and L"
|
219
|
-
option :s, :select, "select the attributes", :argument => :required
|
247
|
+
option :s, :select, "select the attributes", :argument => :required, :multiple => true
|
220
248
|
option :x, :xml, "download uniprot record in specified directory", :argument => :required
|
221
249
|
|
222
250
|
runner Pept2pro
|
data/lib/unipept/formatters.rb
CHANGED
@@ -22,7 +22,11 @@ module Unipept
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.default
|
25
|
-
'
|
25
|
+
'csv'
|
26
|
+
end
|
27
|
+
|
28
|
+
def header(sample_data)
|
29
|
+
""
|
26
30
|
end
|
27
31
|
|
28
32
|
# JSON formatted data goes in, something other comes out
|
@@ -45,14 +49,18 @@ module Unipept
|
|
45
49
|
|
46
50
|
register :csv
|
47
51
|
|
48
|
-
def
|
52
|
+
def header(data)
|
49
53
|
CSV.generate do |csv|
|
50
54
|
first = data.first
|
51
55
|
if first.kind_of? Array
|
52
56
|
first = first.first
|
53
57
|
end
|
54
58
|
csv << first.keys.map(&:to_s)
|
59
|
+
end
|
60
|
+
end
|
55
61
|
|
62
|
+
def format(data)
|
63
|
+
CSV.generate do |csv|
|
56
64
|
data.each do |o|
|
57
65
|
if o.kind_of? Array
|
58
66
|
o.each {|h| csv << h.values }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unipept
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toon Willems
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: shoulda
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '2.
|
103
|
+
version: '2.6'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '2.
|
110
|
+
version: '2.6'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: ruby-progressbar
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|