rbbt-util 5.21.61 → 5.21.62

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c51f54b68b4ba9c23c5004077c51668fdbcdbe7
4
- data.tar.gz: f9a1f2c86ddada5465ee07cd39548f7a36d3e46f
3
+ metadata.gz: 54b3148a09833544d1369d94aadeab1ff688f37b
4
+ data.tar.gz: a5d4a58b69dac7ec247ba3afba3404a56d426343
5
5
  SHA512:
6
- metadata.gz: e55dcd5d515aed93ee78062f8951b56c8f2f9e2c7f05314e015e712118d519f7f46e4a16ba23d7c4f2331420cfb75f05c9ee98457e659095948f4508c23e87a0
7
- data.tar.gz: e7a8948047115f39a4468da548d453b11c4b83de3458dfe45de4ad3c5e0048797e9842b2fb32603a8c1ab3bc03c111680de7a6d9072595b2b12eb644b94eeaa3
6
+ metadata.gz: f0c6e5fc9e90070866cd405f5dba447efe585a234770e70774a41156cb3f001132e2a87eeca43211d42bcbf717650b1145506a73df1ff0c23259f322c8f55b26
7
+ data.tar.gz: d71ed9a23bdba6b91257377d131971afe2693615779bed96ee10afe9b561598fbaeb2346f3680c1691c4b7b97dfb0de67c739ef624c1d5f0116c5498ed83c763
@@ -12,7 +12,7 @@ Rbbt.etc.entities.read.split("\n").each do |name|
12
12
  include Entity::REST
13
13
  end
14
14
  rescue
15
- Log.warn "Could extend REST entity: #{ name }"
15
+ Log.warn "Could not extend REST entity: #{ name }"
16
16
  end
17
17
  end if Rbbt.etc.entities.exists?
18
18
 
@@ -2,24 +2,49 @@ require 'rbbt/resource/util'
2
2
  require 'yaml'
3
3
 
4
4
  module Path
5
- attr_accessor :resource, :pkgdir, :search_paths, :original
5
+ attr_accessor :resource, :pkgdir, :original, :search_paths, :search_order
6
6
 
7
- def self.setup(string, pkgdir = nil, resource = nil, search_paths = nil)
7
+ def self.setup(string, pkgdir = nil, resource = nil, search_paths = nil, search_order = nil)
8
8
  return string if string.nil?
9
9
  string = string.dup if string.frozen?
10
10
  string.extend Path
11
11
  string.pkgdir = pkgdir || 'rbbt'
12
12
  string.resource = resource
13
13
  string.search_paths = search_paths
14
+ string.search_order = search_order
14
15
  string
15
16
  end
16
17
 
18
+ def search_order
19
+ @search_order ||= STANDARD_SEARCH.dup.uniq
20
+ end
21
+
22
+ def search_paths
23
+ @search_paths ||= SEARCH_PATHS.dup
24
+ end
25
+
26
+ def add_search_path(name, dir)
27
+ search_paths[name.to_sym] = dir
28
+ end
29
+
30
+ def prepend_search_path(name, dir)
31
+ add_search_path(name, dir)
32
+ search_order.unshift(name.to_sym)
33
+ end
34
+
35
+ def append_search_path(name, dir)
36
+ add_search_path(name, dir)
37
+ search_order.push(name.to_sym)
38
+ end
39
+
17
40
  def sub(*args)
18
41
  self.annotate super(*args)
19
42
  end
20
43
 
21
44
  def annotate(name)
22
- Path.setup name.to_s, @pkgdir, @resource, @search_paths
45
+ name = name.to_s
46
+ name = Path.setup name, @pkgdir, @resource, @search_paths, @search_order
47
+ name
23
48
  end
24
49
 
25
50
  def join(name)
@@ -100,10 +125,17 @@ module Path
100
125
  key_elems = [where, caller_lib, rsearch_paths, paths]
101
126
  key = Misc.digest(key_elems.inspect)
102
127
  self.sub!('~/', Etc.getpwuid.dir + '/') if self.include? "~"
128
+
129
+ return @path[key] if @path[key]
130
+
131
+ if located?
132
+ @path[key] = self
133
+ return self
134
+ end
135
+
103
136
  @path[key] ||= begin
104
137
  paths = [paths, rsearch_paths, self.search_paths, SEARCH_PATHS].reverse.compact.inject({}){|acc,h| acc.merge! h; acc }
105
138
  where = paths[:default] if where == :default
106
- return self if located?
107
139
  if self.match(/(.*?)\/(.*)/)
108
140
  toplevel, subpath = self.match(/(.*?)\/(.*)/).values_at 1, 2
109
141
  else
@@ -111,25 +143,40 @@ module Path
111
143
  end
112
144
 
113
145
  path = nil
114
- res = if where.nil?
115
- STANDARD_SEARCH.each do |w|
146
+ search_order = self.search_order || []
147
+ res = nil
148
+ if where.nil?
149
+
150
+ (STANDARD_SEARCH - search_order).each do |w|
116
151
  w = w.to_sym
152
+ break if res
117
153
  next unless paths.include? w
118
154
  path = find(w, caller_lib, paths)
119
- return path if File.exist? path
155
+ res = path if File.exist? path
120
156
  end
121
- (SEARCH_PATHS.keys - STANDARD_SEARCH).each do |w|
157
+
158
+ search_order.each do |w|
122
159
  w = w.to_sym
160
+ next if res
123
161
  next unless paths.include? w
124
162
  path = find(w, caller_lib, paths)
125
- return path if File.exist? path
126
- end
163
+ res = path if File.exist? path
164
+ end if res.nil?
165
+
166
+ (paths.keys - STANDARD_SEARCH - search_order).each do |w|
167
+ w = w.to_sym
168
+ next if res
169
+ next unless paths.include? w
170
+ path = find(w, caller_lib, paths)
171
+ res = path if File.exist? path
172
+ end if res.nil?
127
173
 
128
174
  if paths.include? :default
129
- find((paths[:default] || :user), caller_lib, paths)
175
+ res = find((paths[:default] || :user), caller_lib, paths)
130
176
  else
131
177
  raise "Path '#{ path }' not found, and no default specified in search paths: #{paths.inspect}"
132
- end
178
+ end if res.nil?
179
+
133
180
  else
134
181
  where = where.to_sym
135
182
  raise "Did not recognize the 'where' tag: #{where}. Options: #{paths.keys}" unless paths.include? where
@@ -155,16 +202,19 @@ module Path
155
202
  path = path + '.bgz' if File.exist? path + '.bgz'
156
203
 
157
204
  self.annotate path
205
+
206
+ res = path
158
207
  end
159
208
 
160
209
  res.original = self
161
210
 
162
211
  res
163
212
  end
213
+ @path[key]
164
214
  end
165
215
 
166
216
  def find_all(caller_lib = nil, search_paths = nil)
167
- search_paths ||= self.search_paths || SEARCH_PATHS
217
+ search_paths ||= @search_paths || SEARCH_PATHS
168
218
  search_paths = search_paths.dup
169
219
 
170
220
  search_paths.keys.
@@ -173,12 +223,12 @@ module Path
173
223
  end
174
224
 
175
225
  def glob_all(caller_lib = nil, search_paths = nil)
176
- search_paths ||= self.search_paths || SEARCH_PATHS
226
+ search_paths ||= @search_paths || SEARCH_PATHS
177
227
  search_paths = search_paths.dup
178
228
 
179
229
  search_paths.keys.
180
230
  collect{|where| Dir.glob(find(where, Path.caller_lib_dir, search_paths))}.
181
- compact.flatten.uniq.collect{|path| Path.setup(path, self.resource, self.pkgdir)}
231
+ compact.flatten.collect{|file| File.expand_path(file)}.uniq.collect{|path| Path.setup(path, self.resource, self.pkgdir)}
182
232
  end
183
233
  #{{{ Methods
184
234
 
@@ -313,8 +363,14 @@ module Path
313
363
  end
314
364
 
315
365
  def set_extension(new_extension = nil)
316
- new_path = self.sub(/\.[^\.\/]+$/, "." << new_extension.to_s)
317
- Path.setup new_path, @pkgdir, @resource
366
+ new_path = self + "." + new_extension.to_s
367
+ self.annotate(new_path)
368
+ end
369
+
370
+ def replace_extension(new_extension = nil)
371
+ new_path = self.sub(/\.[^\.\/]{2,4}$/,'')
372
+ new_path = new_path + "." + new_extension.to_s
373
+ self.annotate(new_path)
318
374
  end
319
375
 
320
376
  def doc_file(relative_to = 'lib')
@@ -37,9 +37,13 @@ module Log
37
37
  max_history ||= case
38
38
  when @ticks > 20
39
39
  count = @ticks - @last_count
40
- times = @max / count
41
- num = times / 20
42
- num = 2 if num < 2
40
+ if @max
41
+ times = @max / count
42
+ num = times / 20
43
+ num = 2 if num < 2
44
+ else
45
+ num = 10
46
+ end
43
47
  count * num
44
48
  else
45
49
  20
@@ -110,8 +110,7 @@ module Misc
110
110
  options[:format] = :sentence
111
111
  end
112
112
 
113
- values = []
114
- values = value.split('_')
113
+ values = value.to_s.split('_')
115
114
  values.each_index do |index|
116
115
  # lower case each item in array
117
116
  # Miguel Vazquez edit: Except for acronyms
data/share/config.ru CHANGED
@@ -29,6 +29,8 @@ $app_dir = FileUtils.pwd
29
29
  $app_name = app_name = File.basename($app_dir)
30
30
  $app = app = eval "class #{app_name} < Sinatra::Base; self end"
31
31
 
32
+ Sinatra::RbbtRESTMain.add_resource_path(Rbbt.www.views.find(:lib), true)
33
+
32
34
  #{{{ PRE
33
35
  load_file Rbbt.etc['app.d/pre.rb'].find
34
36
 
@@ -69,6 +71,9 @@ load_file Rbbt.etc['app.d/preload.rb'].find_all
69
71
  load_file Rbbt.lib['sinatra.rb'].find_all
70
72
 
71
73
  #{{{ RUN
74
+
75
+ Sinatra::RbbtRESTMain.add_resource_path($app_dir.www.views.find, true)
76
+
72
77
  $title = app_name
73
78
  require 'rack'
74
79
  use Rack::Deflater
@@ -13,9 +13,10 @@ Report the status of the system
13
13
 
14
14
  $ rbbt system status <workflow> <task>
15
15
 
16
- -a--all Print all jobs, not only uncompleted
17
16
  -h--help Print this help
18
17
  -q--quick Quick check
18
+ -a--all Print all jobs, not only uncompleted
19
+ -i--inputs* List of inputs to print
19
20
  EOF
20
21
  rbbt_usage and exit 0 if options[:help]
21
22
 
@@ -27,6 +28,8 @@ task = task.split "," if task
27
28
 
28
29
  all = options.delete :all
29
30
 
31
+ inputs = (options[:inputs] || "").split(",")
32
+
30
33
  def pid_msg(pid)
31
34
  color = if pid and Misc.pid_exists? pid
32
35
  :green
@@ -130,8 +133,10 @@ workflows.sort.each do |workflow,tasks|
130
133
  puts "* " << Log.color(:magenta, workflow) << "#" << Log.color(:yellow, task) << ": " << Log.color(:blue, jobs.length.to_s)
131
134
 
132
135
  files_txt = jobs.collect do |file, i|
136
+ str = file.dup
133
137
  if options[:quick] and i[:done]
134
138
  status = 'done'
139
+ str << " #{ status_msg status }"
135
140
  else
136
141
  info = begin
137
142
  Open.open(i[:info_file]) do |f|
@@ -152,9 +157,22 @@ workflows.sort.each do |workflow,tasks|
152
157
  status << Log.color(:red, " (dead)")
153
158
  end
154
159
  end
160
+ str << " #{ status_msg status }"
161
+
162
+ if inputs and inputs.any? and info[:inputs]
163
+ job_inputs = info[:inputs]
164
+ IndiferentHash.setup(job_inputs)
165
+
166
+ iii inputs
167
+ inputs.each do |input|
168
+ value = job_inputs[input]
169
+ iii [input, value]
170
+ next if value.nil?
171
+ value_str = Misc.fingerprint(value)
172
+ str << " #{input}=#{value_str}"
173
+ end
174
+ end
155
175
  end
156
- str = file.dup
157
- str << " #{ status_msg status }"
158
176
  str << "; #{pid_msg pid}" unless status == "done"
159
177
  str
160
178
  end
@@ -63,7 +63,18 @@ Misc.in_dir(workflow_dir) do
63
63
  Log.info "Installing: " + workflow
64
64
  if repo.nil?
65
65
  repo_base_url = Rbbt.etc.workflow_repo.exists? ? Rbbt.etc.workflow_repo.read.strip : 'https://github.com/Rbbt-Workflows/'
66
- repo = File.join(repo_base_url, Misc.snake_case(workflow) + '.git')
66
+ begin
67
+ repo = File.join(repo_base_url, workflow + '.git')
68
+ CMD.cmd("wget '#{repo}' -O /dev/null").read
69
+ rescue
70
+ Log.debug "Workflow repo does not exist, trying snake_case: #{ repo }"
71
+ begin
72
+ repo = File.join(repo_base_url, Misc.snake_case(workflow) + '.git')
73
+ CMD.cmd("wget '#{repo}' -O /dev/null").read
74
+ rescue
75
+ raise "Workflow repo does not exist: #{ repo }"
76
+ end
77
+ end
67
78
  end
68
79
  Log.warn "Cloning #{ repo }"
69
80
  Misc.insist do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.21.61
4
+ version: 5.21.62
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-28 00:00:00.000000000 Z
11
+ date: 2017-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -505,83 +505,83 @@ signing_key:
505
505
  specification_version: 4
506
506
  summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
507
507
  test_files:
508
- - test/rbbt/test_workflow.rb
508
+ - test/test_helper.rb
509
509
  - test/rbbt/resource/test_path.rb
510
- - test/rbbt/util/test_cmd.rb
511
- - test/rbbt/util/simpleopt/test_setup.rb
512
- - test/rbbt/util/simpleopt/test_get.rb
513
- - test/rbbt/util/simpleopt/test_parse.rb
514
- - test/rbbt/util/test_chain_methods.rb
515
- - test/rbbt/util/test_simpleDSL.rb
510
+ - test/rbbt/association/test_item.rb
511
+ - test/rbbt/association/test_database.rb
512
+ - test/rbbt/association/test_open.rb
513
+ - test/rbbt/association/test_index.rb
514
+ - test/rbbt/association/test_util.rb
515
+ - test/rbbt/util/test_concurrency.rb
516
516
  - test/rbbt/util/test_log.rb
517
+ - test/rbbt/util/test_chain_methods.rb
518
+ - test/rbbt/util/test_simpleopt.rb
519
+ - test/rbbt/util/simpleopt/test_parse.rb
520
+ - test/rbbt/util/simpleopt/test_get.rb
521
+ - test/rbbt/util/simpleopt/test_setup.rb
522
+ - test/rbbt/util/test_cmd.rb
523
+ - test/rbbt/util/test_semaphore.rb
524
+ - test/rbbt/util/concurrency/test_threads.rb
525
+ - test/rbbt/util/concurrency/processes/test_socket.rb
526
+ - test/rbbt/util/concurrency/test_processes.rb
527
+ - test/rbbt/util/test_tmpfile.rb
517
528
  - test/rbbt/util/test_open.rb
529
+ - test/rbbt/util/test_filecache.rb
530
+ - test/rbbt/util/R/test_eval.rb
531
+ - test/rbbt/util/R/test_model.rb
532
+ - test/rbbt/util/test_simpleDSL.rb
533
+ - test/rbbt/util/log/test_progress.rb
534
+ - test/rbbt/util/test_colorize.rb
535
+ - test/rbbt/util/test_R.rb
518
536
  - test/rbbt/util/misc/test_lock.rb
519
- - test/rbbt/util/misc/test_multipart_payload.rb
520
- - test/rbbt/util/misc/test_bgzf.rb
521
537
  - test/rbbt/util/misc/test_pipes.rb
538
+ - test/rbbt/util/misc/test_bgzf.rb
522
539
  - test/rbbt/util/misc/test_omics.rb
523
- - test/rbbt/util/test_concurrency.rb
524
- - test/rbbt/util/test_R.rb
525
- - test/rbbt/util/log/test_progress.rb
526
- - test/rbbt/util/test_colorize.rb
527
- - test/rbbt/util/test_simpleopt.rb
540
+ - test/rbbt/util/misc/test_multipart_payload.rb
528
541
  - test/rbbt/util/test_excel2tsv.rb
529
- - test/rbbt/util/test_filecache.rb
530
- - test/rbbt/util/concurrency/test_processes.rb
531
- - test/rbbt/util/concurrency/test_threads.rb
532
- - test/rbbt/util/concurrency/processes/test_socket.rb
533
- - test/rbbt/util/test_semaphore.rb
534
542
  - test/rbbt/util/test_misc.rb
535
- - test/rbbt/util/test_tmpfile.rb
536
- - test/rbbt/util/R/test_model.rb
537
- - test/rbbt/util/R/test_eval.rb
538
- - test/rbbt/test_packed_index.rb
539
- - test/rbbt/entity/test_identifiers.rb
540
- - test/rbbt/test_association.rb
541
- - test/rbbt/knowledge_base/test_traverse.rb
542
- - test/rbbt/knowledge_base/test_registry.rb
543
- - test/rbbt/knowledge_base/test_entity.rb
544
- - test/rbbt/knowledge_base/test_enrichment.rb
545
- - test/rbbt/knowledge_base/test_syndicate.rb
546
- - test/rbbt/knowledge_base/test_query.rb
547
- - test/rbbt/test_resource.rb
548
543
  - test/rbbt/test_entity.rb
549
- - test/rbbt/test_knowledge_base.rb
550
- - test/rbbt/annotations/test_util.rb
551
- - test/rbbt/association/test_index.rb
552
- - test/rbbt/association/test_item.rb
553
- - test/rbbt/association/test_open.rb
554
- - test/rbbt/association/test_util.rb
555
- - test/rbbt/association/test_database.rb
556
- - test/rbbt/test_tsv.rb
557
544
  - test/rbbt/workflow/step/test_dependencies.rb
558
- - test/rbbt/workflow/test_task.rb
559
- - test/rbbt/workflow/test_step.rb
560
545
  - test/rbbt/workflow/test_doc.rb
561
- - test/rbbt/test_monitor.rb
562
- - test/rbbt/test_persist.rb
563
- - test/rbbt/test_annotations.rb
564
- - test/rbbt/persist/test_tsv.rb
565
- - test/rbbt/persist/tsv/test_lmdb.rb
566
- - test/rbbt/persist/tsv/test_kyotocabinet.rb
567
- - test/rbbt/persist/tsv/test_sharder.rb
568
- - test/rbbt/persist/tsv/test_cdb.rb
569
- - test/rbbt/persist/tsv/test_tokyocabinet.rb
570
- - test/rbbt/persist/tsv/test_leveldb.rb
571
- - test/rbbt/tsv/test_field_index.rb
546
+ - test/rbbt/workflow/test_step.rb
547
+ - test/rbbt/workflow/test_task.rb
548
+ - test/rbbt/test_association.rb
549
+ - test/rbbt/test_knowledge_base.rb
550
+ - test/rbbt/tsv/parallel/test_traverse.rb
551
+ - test/rbbt/tsv/parallel/test_through.rb
572
552
  - test/rbbt/tsv/test_parallel.rb
573
- - test/rbbt/tsv/test_index.rb
574
- - test/rbbt/tsv/test_matrix.rb
575
- - test/rbbt/tsv/test_change_id.rb
576
- - test/rbbt/tsv/test_parser.rb
577
- - test/rbbt/tsv/test_stream.rb
578
- - test/rbbt/tsv/test_util.rb
579
553
  - test/rbbt/tsv/test_excel.rb
580
554
  - test/rbbt/tsv/test_accessor.rb
555
+ - test/rbbt/tsv/test_change_id.rb
556
+ - test/rbbt/tsv/test_stream.rb
581
557
  - test/rbbt/tsv/test_filter.rb
558
+ - test/rbbt/tsv/test_matrix.rb
582
559
  - test/rbbt/tsv/test_attach.rb
583
560
  - test/rbbt/tsv/test_manipulate.rb
584
- - test/rbbt/tsv/parallel/test_through.rb
585
- - test/rbbt/tsv/parallel/test_traverse.rb
561
+ - test/rbbt/tsv/test_field_index.rb
562
+ - test/rbbt/tsv/test_index.rb
563
+ - test/rbbt/tsv/test_util.rb
564
+ - test/rbbt/tsv/test_parser.rb
565
+ - test/rbbt/test_packed_index.rb
566
+ - test/rbbt/test_persist.rb
586
567
  - test/rbbt/test_fix_width_table.rb
587
- - test/test_helper.rb
568
+ - test/rbbt/knowledge_base/test_traverse.rb
569
+ - test/rbbt/knowledge_base/test_entity.rb
570
+ - test/rbbt/knowledge_base/test_query.rb
571
+ - test/rbbt/knowledge_base/test_enrichment.rb
572
+ - test/rbbt/knowledge_base/test_syndicate.rb
573
+ - test/rbbt/knowledge_base/test_registry.rb
574
+ - test/rbbt/entity/test_identifiers.rb
575
+ - test/rbbt/test_monitor.rb
576
+ - test/rbbt/test_workflow.rb
577
+ - test/rbbt/test_annotations.rb
578
+ - test/rbbt/annotations/test_util.rb
579
+ - test/rbbt/test_resource.rb
580
+ - test/rbbt/persist/tsv/test_tokyocabinet.rb
581
+ - test/rbbt/persist/tsv/test_kyotocabinet.rb
582
+ - test/rbbt/persist/tsv/test_lmdb.rb
583
+ - test/rbbt/persist/tsv/test_leveldb.rb
584
+ - test/rbbt/persist/tsv/test_cdb.rb
585
+ - test/rbbt/persist/tsv/test_sharder.rb
586
+ - test/rbbt/persist/test_tsv.rb
587
+ - test/rbbt/test_tsv.rb