rbbt-util 5.21.61 → 5.21.62

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