rbbt-util 5.28.9 → 5.28.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rbbt/entity.rb +1 -1
  3. data/lib/rbbt/fix_width_table.rb +5 -4
  4. data/lib/rbbt/persist.rb +1 -1
  5. data/lib/rbbt/persist/tsv/adapter.rb +0 -1
  6. data/lib/rbbt/persist/tsv/fix_width_table.rb +5 -3
  7. data/lib/rbbt/tsv/dumper.rb +6 -2
  8. data/lib/rbbt/util/cmd.rb +1 -0
  9. data/lib/rbbt/util/misc/bgzf.rb +1 -1
  10. data/lib/rbbt/util/named_array.rb +1 -1
  11. data/lib/rbbt/util/open.rb +17 -16
  12. data/lib/rbbt/workflow/definition.rb +2 -1
  13. data/lib/rbbt/workflow/integration/ansible.rb +53 -0
  14. data/lib/rbbt/workflow/integration/ansible/workflow.rb +60 -0
  15. data/lib/rbbt/workflow/step.rb +5 -0
  16. data/lib/rbbt/workflow/step/accessor.rb +1 -1
  17. data/lib/rbbt/workflow/util/archive.rb +2 -0
  18. data/lib/rbbt/workflow/util/orchestrator.rb +22 -9
  19. data/share/rbbt_commands/ansible +55 -0
  20. data/share/rbbt_commands/purge_job +0 -1
  21. data/share/rbbt_commands/workflow/forget_deps +9 -0
  22. data/test/rbbt/association/test_index.rb +6 -6
  23. data/test/rbbt/knowledge_base/test_query.rb +3 -3
  24. data/test/rbbt/knowledge_base/test_registry.rb +1 -1
  25. data/test/rbbt/persist/tsv/test_cdb.rb +0 -7
  26. data/test/rbbt/persist/tsv/test_kyotocabinet.rb +2 -8
  27. data/test/rbbt/persist/tsv/test_leveldb.rb +0 -6
  28. data/test/rbbt/persist/tsv/test_lmdb.rb +0 -6
  29. data/test/rbbt/persist/tsv/test_tokyocabinet.rb +15 -14
  30. data/test/rbbt/test_entity.rb +0 -1
  31. data/test/rbbt/test_knowledge_base.rb +3 -4
  32. data/test/rbbt/test_persist.rb +10 -6
  33. data/test/rbbt/test_workflow.rb +17 -16
  34. data/test/rbbt/tsv/test_accessor.rb +11 -0
  35. data/test/rbbt/tsv/test_attach.rb +0 -2
  36. data/test/rbbt/tsv/test_index.rb +6 -7
  37. data/test/rbbt/tsv/test_manipulate.rb +2 -3
  38. data/test/rbbt/util/R/test_model.rb +2 -1
  39. data/test/rbbt/util/R/test_plot.rb +0 -2
  40. data/test/rbbt/util/concurrency/test_processes.rb +1 -1
  41. data/test/rbbt/util/misc/test_bgzf.rb +11 -7
  42. data/test/rbbt/util/misc/test_lock.rb +0 -1
  43. data/test/rbbt/util/misc/test_multipart_payload.rb +1 -1
  44. data/test/rbbt/util/misc/test_pipes.rb +0 -5
  45. data/test/rbbt/util/test_R.rb +1 -0
  46. data/test/rbbt/util/test_log.rb +4 -6
  47. data/test/rbbt/util/test_misc.rb +0 -2
  48. data/test/rbbt/util/test_open.rb +0 -1
  49. data/test/rbbt/util/test_python.rb +17 -1
  50. data/test/rbbt/workflow/test_remote_workflow.rb +1 -1
  51. data/test/rbbt/workflow/test_step.rb +8 -3
  52. data/test/rbbt/workflow/util/test_orchestrator.rb +50 -0
  53. metadata +5 -4
  54. data/test/rbbt/workflow/remote/test_client.rb +0 -56
@@ -630,10 +630,8 @@ E B
630
630
  tsv1 = Rbbt.tmp.test.test1.data.tsv :double, :sep => /\s+/
631
631
  tsv2 = Rbbt.tmp.test.test2.data.tsv :double, :sep => /\s+/
632
632
 
633
- Log.severity = 0
634
633
  tsv1.attach tsv2, :fields => ["ValueE"] #, :persist_input => true
635
634
  Log.tsv tsv1
636
- ppp tsv1
637
635
 
638
636
  end
639
637
  end
@@ -29,7 +29,7 @@ row2 A B Id3
29
29
 
30
30
  TmpFile.with_file(content) do |filename|
31
31
  tsv = TSV.open(File.open(filename), :sep => /\s+/, :key_field => "OtherID", :persistence => false)
32
- index = tsv.index(:case_insensitive => true, :persistence => true)
32
+ index = tsv.index(:persistence => true)
33
33
  assert index["row1"].include? "Id1"
34
34
  assert_equal "OtherID", index.fields.first
35
35
  end
@@ -45,9 +45,8 @@ row2 A B Id3
45
45
 
46
46
  TmpFile.with_file(content) do |filename|
47
47
  tsv = TSV.open(File.open(filename), :sep => /\s+/, :key_field => "OtherID", :persistence => false)
48
- Log.tsv tsv
49
- index = tsv.index(:case_insensitive => true, :persistence => false, :fields => ["Id"], :target => "ValueA")
50
- Log.tsv index
48
+ index = tsv.index(:persistence => false, :fields => ["Id"], :target => "ValueA")
49
+ assert_equal "A", index["row2"]
51
50
  end
52
51
 
53
52
  end
@@ -243,7 +242,7 @@ g: ____
243
242
  EOF
244
243
  TmpFile.with_file(data) do |datafile|
245
244
  load_segment_data(datafile)
246
- TmpFile.with_file(load_segment_data(datafile)) do |tsvfile|
245
+ TmpFile.with_file(load_segment_data(datafile).to_s) do |tsvfile|
247
246
  f = TSV.range_index(tsvfile, "Start", "End", :persistence => true)
248
247
 
249
248
  #assert_equal %w(), f[0].sort
@@ -286,8 +285,8 @@ f: ___
286
285
  g: ____
287
286
  EOF
288
287
  TmpFile.with_file(data) do |datafile|
289
- TmpFile.with_file(load_segment_data(datafile)) do |tsvfile|
290
- f = TSV.range_index(tsvfile, "Start", "End", :filters => [["field:Start", "3"]])
288
+ TmpFile.with_file(load_segment_data(datafile).to_s) do |tsvfile|
289
+ f = TSV.range_index(tsvfile, "Start", "End", :filters => [["field:Start", "3"]], :persist_update => true)
291
290
 
292
291
  assert_equal %w(), f[0].sort
293
292
  assert_equal %w(), f[1].sort
@@ -284,7 +284,7 @@ row3 a C Id4
284
284
 
285
285
  def test_reorder_flat
286
286
  content =<<-EOF
287
- #Id ValueA
287
+ #Id ValueA
288
288
  row1 a aa aaa
289
289
  row2 A
290
290
  row3 a
@@ -292,9 +292,8 @@ row3 a
292
292
 
293
293
  TmpFile.with_file(content) do |filename|
294
294
  tsv = TSV.open(File.open(filename), :sep => /\s+/, :type => :flat)
295
-
296
- assert_equal ["row1", "row3"].sort, tsv.reorder("ValueA")["a"]
297
295
 
296
+ assert_equal ["row1", "row3"].sort, tsv.reorder("ValueA")["a"]
298
297
  end
299
298
  end
300
299
 
@@ -1,4 +1,5 @@
1
1
  require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
+ require 'rbbt/util/R'
2
3
  require 'rbbt/util/R/model'
3
4
 
4
5
  class TestRModel < Test::Unit::TestCase
@@ -49,7 +50,7 @@ data = rbbt.model.inpute(data, CI ~ Dose, method=drm, classes='numeric', fct=LL.
49
50
  assert_equal result.size, result.column("CI").values.flatten.reject{|p| p.nil? or p.empty? or p == "NA"}.length
50
51
  end
51
52
 
52
- def test_ab_surv_corr
53
+ def __test_ab_surv_corr
53
54
  require 'rbbt/workflow'
54
55
  Workflow.require_workflow "Miller"
55
56
 
@@ -5,7 +5,6 @@ require 'rbbt/util/R/plot'
5
5
  class TestRPlot < Test::Unit::TestCase
6
6
  def __test_ggplotgif
7
7
 
8
- Log.severity = 0
9
8
  x = R.eval_a 'rnorm(100, 0, 1)'
10
9
  data = TSV.setup(x, "Num~#:type=:single#:cast=:to_f")
11
10
 
@@ -22,7 +21,6 @@ ggplot(data) + geom_density(bw=frame.value, aes(x=Val))
22
21
 
23
22
  def test_gif
24
23
 
25
- Log.severity = 0
26
24
  x = R.eval_a 'rnorm(100, 0, 1)'
27
25
  data = TSV.setup(x, "Num~#:type=:single#:cast=:to_f")
28
26
 
@@ -7,7 +7,7 @@ require 'rbbt/util/concurrency/processes'
7
7
  class TestConcurrencyProcess < Test::Unit::TestCase
8
8
 
9
9
  def setup
10
- Log.severity = 0
10
+ #Log.severity = 0
11
11
  end
12
12
 
13
13
  def test_process_throttle
@@ -2,12 +2,14 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_he
2
2
  require 'rbbt/util/misc/bgzf'
3
3
 
4
4
  class TestBgzf < Test::Unit::TestCase
5
- def test_Bgzf
5
+ def _test_Bgzf
6
6
  content = "1234567890" * 1000000
7
7
  TmpFile.with_file(content) do |file|
8
8
  compressed = file + '.gz'
9
9
  `bgzip #{file} -c > #{compressed}`
10
10
  stream = Bgzf.setup File.open(compressed)
11
+ assert_equal "1234", stream.read(4)
12
+ assert_equal "56", stream.read(2)
11
13
  stream.seek 500003
12
14
  assert_equal "4567", stream.read(4)
13
15
  assert_equal "89", stream.read(2)
@@ -20,23 +22,25 @@ class TestBgzf < Test::Unit::TestCase
20
22
  Misc.benchmark do
21
23
  tsv = TSV.open(Open.open(file))
22
24
  end
23
- compressed = file + '.bgz'
24
25
 
25
- `bgzip #{file} -c > #{compressed}`
26
- stream = Bgzf.setup File.open(compressed)
26
+ `gzip #{file}`
27
+ stream = Open.open(file + '.gz')
27
28
  Misc.benchmark do
28
29
  tsv = TSV.open(stream)
29
30
  end
30
31
 
31
- `gzip #{file}`
32
- stream = Open.open(file + '.gz')
32
+ `gunzip #{file}.gz`
33
+ compressed = file + '.bgz'
34
+ `bgzip #{file} -c > #{compressed}`
35
+ stream = Bgzf.setup File.open(compressed)
33
36
  Misc.benchmark do
34
37
  tsv = TSV.open(stream)
35
38
  end
39
+
36
40
  end
37
41
  end
38
42
 
39
- def test_bgzip
43
+ def _test_bgzip
40
44
  assert File.exist?(Bgzf.bgzip_cmd)
41
45
  assert 'bgzip', File.basename(Bgzf.bgzip_cmd)
42
46
  end
@@ -48,7 +48,6 @@ if __FILE__ == $0
48
48
  TmpFile.with_file do |dir|
49
49
  Structure.workdir = dir
50
50
  Path.setup dir
51
- Log.severity = 4
52
51
  TSV.traverse (0..size).to_a, :cpus => cpus, :type => :array, :bar => true do |i|
53
52
  begin
54
53
  v = rand(num).to_s
@@ -185,7 +185,7 @@ END
185
185
  inputs[:input2] = "Input2"
186
186
  num = 50
187
187
  cpus = 1
188
- Log.severity = 0
188
+
189
189
  Misc.bootstrap((0..num-1).to_a, cpus) do |n|
190
190
  puts mutipart
191
191
  TmpFile.with_file(mutipart, false) do |tmpfile|
@@ -131,7 +131,6 @@ row2 AA BB CC
131
131
  row3 AAA BBB CCC
132
132
  row1 A B C
133
133
  EOF
134
- Log.severity = 0
135
134
 
136
135
  text = text * 10000
137
136
  TmpFile.with_file(text) do |tmp|
@@ -159,7 +158,6 @@ row2 AA BB CC
159
158
  row3 AAA BBB CCC
160
159
  row1 A B C
161
160
  EOF
162
- Log.severity = 0
163
161
 
164
162
  text = text * 10000
165
163
  num = 5
@@ -200,7 +198,6 @@ line3
200
198
  line1
201
199
  EOF
202
200
 
203
- Log.severity = 0
204
201
  TmpFile.with_file(text1) do |file1|
205
202
  TmpFile.with_file(text2) do |file2|
206
203
  assert ! Misc.remove_lines(file1, file2, true).read.split("\n").include?("line1")
@@ -224,7 +221,6 @@ line1
224
221
  line5
225
222
  EOF
226
223
 
227
- Log.severity = 0
228
224
  TmpFile.with_file(text1) do |file1|
229
225
  TmpFile.with_file(text2) do |file2|
230
226
  assert Misc.select_lines(file1, file2, true).read.split("\n").include?("line1")
@@ -258,7 +254,6 @@ line3
258
254
  line4
259
255
  EOF
260
256
 
261
- Log.severity = 0
262
257
  TmpFile.with_file(text) do |file|
263
258
  io = Open.open(file)
264
259
  lines = Set.new
@@ -9,6 +9,7 @@ class TestR < Test::Unit::TestCase
9
9
  def test_tsv_R
10
10
  tsv = TSV.setup({:a => 1, :b => 2})
11
11
  tsv2 = tsv.R <<-EOF
12
+ str(data)
12
13
  data = data + 1
13
14
  EOF
14
15
  assert_equal "2", tsv2["a"].first
@@ -2,7 +2,7 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helpe
2
2
  require 'rbbt/util/log'
3
3
 
4
4
  class TestLog < Test::Unit::TestCase
5
- def _test_get_level
5
+ def test_get_level
6
6
  assert_equal 0, Log.get_level(:debug)
7
7
  assert_equal 1, Log.get_level(:low)
8
8
  assert_equal 1, Log.get_level("LOW")
@@ -10,18 +10,17 @@ class TestLog < Test::Unit::TestCase
10
10
  assert_equal 0, Log.get_level(nil)
11
11
  end
12
12
 
13
- def _test_color
13
+ def test_color
14
14
  assert Log.color(:green, "green")
15
15
  end
16
16
 
17
- def _test_no_stderr
17
+ def test_no_stderr
18
18
  Log.ignore_stderr do
19
19
  STDERR.puts "NOPRINT"
20
20
  end
21
21
  end
22
22
 
23
- def _test_trap_stderr
24
- Log.severity = 0
23
+ def test_trap_stderr
25
24
  Log.trap_stderr do
26
25
  STDERR.puts "NOPRINT"
27
26
  STDERR.puts "NOPRINT"
@@ -40,7 +39,6 @@ class TestLog < Test::Unit::TestCase
40
39
  end
41
40
 
42
41
  def test_trap_std
43
- Log.severity = 0
44
42
  Log.trap_std do
45
43
  STDERR.puts "NOPRINT STDERR"
46
44
  STDOUT.puts "NOPRINT STDOUT"
@@ -475,7 +475,6 @@ eum fugiat quo voluptas nulla pariatur?"
475
475
  end
476
476
 
477
477
  def test_bootstrap
478
- Log.severity = 0
479
478
  res = Misc.bootstrap((1..10).to_a, 2, :bar => "Test bootstrap ticks", :respawn => :always, :into => []) do |num|
480
479
  sleep 1 + rand(2)
481
480
  num
@@ -550,7 +549,6 @@ eum fugiat quo voluptas nulla pariatur?"
550
549
  end
551
550
 
552
551
  def __test_bench_log
553
- Log.severity = 1
554
552
  Misc.benchmark(1000) do
555
553
  Log.info { "Hola" }
556
554
  end
@@ -169,7 +169,6 @@ class TestOpen < Test::Unit::TestCase
169
169
  end
170
170
 
171
171
  def test_write_stream_repo
172
- Log.severity = 0
173
172
  TmpFile.with_file do |tmpdir|
174
173
  tmpdir = Rbbt.tmp.repo_dir.find
175
174
  repo = File.join(tmpdir, 'repo')
@@ -42,7 +42,6 @@ def python_test(a, b):
42
42
  end
43
43
 
44
44
  def test_run_log
45
- Log.severity = 0
46
45
  TmpFile.with_file do |tmpdir|
47
46
  code =<<-EOF
48
47
  import sys
@@ -66,3 +65,20 @@ def python_print():
66
65
  end
67
66
  end
68
67
 
68
+ def test_keras
69
+ defined = RbbtPython.run do
70
+ pyimport "keras.models", as: :km
71
+ defined?(km.Sequential)
72
+ end
73
+ assert defined
74
+ end
75
+
76
+ def test_keras_import
77
+ defined = RbbtPython.run do
78
+ pyfrom "keras.models", import: :Sequential
79
+ defined?(self::Sequential)
80
+ end
81
+ assert defined
82
+ end
83
+ end
84
+
@@ -88,7 +88,7 @@ class TestRemoteWorkflow < Test::Unit::TestCase
88
88
  end
89
89
 
90
90
 
91
- def _test_ssh
91
+ def test_ssh
92
92
  Log.severity = 0
93
93
  client = RemoteWorkflow.new "ssh://#{ENV["HOSTNAME"]}:Translation", "Translation"
94
94
  job = client.job("translate", "SSH-TEST-1", :genes => ["TP53","KRAS"])
@@ -1,8 +1,10 @@
1
1
  require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helper.rb')
2
+ require 'rbbt/workflow'
2
3
  require 'rbbt/workflow/task'
3
4
  require 'rbbt/workflow/step'
4
5
  require 'rbbt/tsv'
5
6
  require 'rbbt'
7
+ require 'rbbt-util'
6
8
 
7
9
  class TestStep < Test::Unit::TestCase
8
10
 
@@ -23,8 +25,9 @@ class TestStep < Test::Unit::TestCase
23
25
  str2 = "TEST2"
24
26
  TmpFile.with_file do |tmpfile|
25
27
 
26
- task1 = Task.setup :result_type => nil do
28
+ task1 = Task.setup :result_type => :string do
27
29
  Open.write(tmpfile, str);
30
+ "done"
28
31
  end
29
32
  step1 = Step.new tmpfile + 'step1', task1
30
33
 
@@ -50,9 +53,10 @@ class TestStep < Test::Unit::TestCase
50
53
  def __test_dependency_log_relay
51
54
  str = "TEST"
52
55
  TmpFile.with_file do |tmpfile|
53
- task1 = Task.setup :result_type => nil, :name => :task1 do
56
+ task1 = Task.setup :result_type => :string, :name => :task1 do
54
57
  log(:starting_task1, "Starting Task1")
55
58
  Open.write(tmpfile, str);
59
+ "done"
56
60
  end
57
61
  step1 = Step.new tmpfile + 'step1', task1
58
62
 
@@ -69,9 +73,10 @@ class TestStep < Test::Unit::TestCase
69
73
  def test_log_relay_step
70
74
  str = "TEST"
71
75
  TmpFile.with_file do |tmpfile|
72
- task1 = Task.setup :result_type => nil, :name => :task1 do
76
+ task1 = Task.setup :result_type => :string, :name => :task1 do
73
77
  log(:starting_task1, "Starting Task1")
74
78
  Open.write(tmpfile, str);
79
+ "done"
75
80
  end
76
81
  step1 = Step.new tmpfile + 'step1', task1
77
82
 
@@ -27,6 +27,11 @@ module TestWF
27
27
  task :d => :text do
28
28
  sleep(TestWF::MULT * (rand(10) + 2))
29
29
  end
30
+
31
+ dep :c
32
+ task :e => :text do
33
+ sleep(TestWF::MULT * (rand(10) + 2))
34
+ end
30
35
  end
31
36
 
32
37
  class TestClass < Test::Unit::TestCase
@@ -219,5 +224,50 @@ TestWF:
219
224
  end
220
225
 
221
226
  end
227
+
228
+ def test_orchestrate_top_level_double_dep
229
+
230
+ jobs =[]
231
+
232
+ num = 10
233
+ num.times do |i|
234
+ jobs.concat %w(TEST1 TEST2).collect{|name| TestWF.job(:e, name + " #{i}") }
235
+ jobs.concat %w(TEST1 TEST2).collect{|name| TestWF.job(:d, name + " #{i}") }
236
+ end
237
+ jobs.each do |j| j.recursive_clean end
238
+
239
+ rules = YAML.load <<-EOF
240
+ defaults:
241
+ erase: true
242
+ log: 4
243
+ default_resources:
244
+ IO: 1
245
+ TestWF:
246
+ a:
247
+ resources:
248
+ cpus: 7
249
+ b:
250
+ resources:
251
+ cpus: 2
252
+ c:
253
+ resources:
254
+ cpus: 10
255
+ d:
256
+ resources:
257
+ cpus: 15
258
+ EOF
259
+
260
+ orchestrator = Workflow::Orchestrator.new(TestWF::MULT, "cpus" => 30, "IO" => 4, "size" => 10 )
261
+ Log.with_severity 3 do
262
+ orchestrator.process(rules, jobs)
263
+ end
264
+
265
+ jobs.each do |job|
266
+ next unless job.task_name.to_s == 'd' || job.task_name.to_s == 'e'
267
+ assert job.info[:archived_info].keys.select{|k| k.include?("TestWF/c/")}.any?
268
+ assert job.info[:archived_info].keys.select{|k| k.include?("TestWF/c/")}.any?
269
+ end
270
+
271
+ end
222
272
  end
223
273
 
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.28.9
4
+ version: 5.28.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-04 00:00:00.000000000 Z
11
+ date: 2020-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -318,6 +318,8 @@ files:
318
318
  - lib/rbbt/workflow/definition.rb
319
319
  - lib/rbbt/workflow/doc.rb
320
320
  - lib/rbbt/workflow/examples.rb
321
+ - lib/rbbt/workflow/integration/ansible.rb
322
+ - lib/rbbt/workflow/integration/ansible/workflow.rb
321
323
  - lib/rbbt/workflow/integration/cromwell.rb
322
324
  - lib/rbbt/workflow/integration/nextflow.rb
323
325
  - lib/rbbt/workflow/remote_workflow.rb
@@ -347,6 +349,7 @@ files:
347
349
  - share/config.ru
348
350
  - share/install/software/lib/install_helpers
349
351
  - share/rbbt_commands/alias
352
+ - share/rbbt_commands/ansible
350
353
  - share/rbbt_commands/app/install
351
354
  - share/rbbt_commands/app/start
352
355
  - share/rbbt_commands/app/template
@@ -513,7 +516,6 @@ files:
513
516
  - test/rbbt/util/test_simpleDSL.rb
514
517
  - test/rbbt/util/test_simpleopt.rb
515
518
  - test/rbbt/util/test_tmpfile.rb
516
- - test/rbbt/workflow/remote/test_client.rb
517
519
  - test/rbbt/workflow/step/test_dependencies.rb
518
520
  - test/rbbt/workflow/test_doc.rb
519
521
  - test/rbbt/workflow/test_remote_workflow.rb
@@ -552,7 +554,6 @@ test_files:
552
554
  - test/rbbt/workflow/test_doc.rb
553
555
  - test/rbbt/workflow/test_schedule.rb
554
556
  - test/rbbt/workflow/test_step.rb
555
- - test/rbbt/workflow/remote/test_client.rb
556
557
  - test/rbbt/workflow/step/test_dependencies.rb
557
558
  - test/rbbt/workflow/test_task.rb
558
559
  - test/rbbt/resource/test_path.rb