rbbt-util 5.35.4 → 5.37.0
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 +4 -4
- data/lib/rbbt/persist.rb +2 -0
- data/lib/rbbt/resource/path.rb +12 -2
- data/lib/rbbt/util/concurrency/processes/socket.rb +1 -0
- data/lib/rbbt/util/concurrency/processes/worker.rb +1 -5
- data/lib/rbbt/util/concurrency/processes.rb +29 -24
- data/lib/rbbt/util/misc/inspect.rb +2 -2
- data/lib/rbbt/util/python.rb +2 -2
- data/lib/rbbt/workflow/definition.rb +2 -0
- data/lib/rbbt/workflow/dependencies.rb +26 -4
- data/lib/rbbt/workflow/doc.rb +1 -0
- data/lib/rbbt/workflow/remote_workflow/driver/ssh.rb +62 -20
- data/lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb +31 -3
- data/lib/rbbt/workflow/remote_workflow/remote_step.rb +1 -0
- data/lib/rbbt/workflow/step/accessor.rb +42 -5
- data/lib/rbbt/workflow/step/dependencies.rb +37 -28
- data/lib/rbbt/workflow/step/{prepare.rb → produce.rb} +1 -1
- data/lib/rbbt/workflow/step/run.rb +39 -28
- data/lib/rbbt/workflow/step/status.rb +1 -1
- data/lib/rbbt/workflow/step.rb +55 -83
- data/lib/rbbt/workflow/task.rb +4 -2
- data/lib/rbbt/workflow/util/archive.rb +29 -23
- data/lib/rbbt/workflow.rb +13 -3
- data/python/rbbt.py +87 -1
- data/share/rbbt_commands/tsv/write_excel +3 -2
- data/share/rbbt_commands/workflow/task +53 -5
- data/test/rbbt/test_workflow.rb +88 -0
- data/test/rbbt/workflow/step/test_dependencies.rb +1 -0
- metadata +88 -144
data/python/rbbt.py
CHANGED
|
@@ -1,7 +1,93 @@
|
|
|
1
1
|
import warnings
|
|
2
2
|
import sys
|
|
3
3
|
import os
|
|
4
|
-
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
|
|
5
4
|
|
|
6
5
|
def rbbt():
|
|
7
6
|
print("Rbbt")
|
|
7
|
+
|
|
8
|
+
def path(subdir = None, base_dir = None):
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
import os
|
|
11
|
+
|
|
12
|
+
if (base_dir == None):
|
|
13
|
+
base_dir = os.path.join(Path.home(), ".rbbt")
|
|
14
|
+
if (subdir == None):
|
|
15
|
+
return base_dir
|
|
16
|
+
else:
|
|
17
|
+
return os.path.join(base_dir, subdir)
|
|
18
|
+
|
|
19
|
+
def inspect(obj):
|
|
20
|
+
print(dir(obj))
|
|
21
|
+
|
|
22
|
+
def log_tsv(tsv):
|
|
23
|
+
print(tsv)
|
|
24
|
+
print(tsv.keys())
|
|
25
|
+
|
|
26
|
+
def tsv_preamble(line, comment_char="#"):
|
|
27
|
+
import re
|
|
28
|
+
header = dict()
|
|
29
|
+
entries = re.sub(f"^{comment_char}:", '', line)
|
|
30
|
+
entries = re.sub(f"^{comment_char}:", '', line).split("#")
|
|
31
|
+
for entry in entries:
|
|
32
|
+
key, value = entry.split("=")
|
|
33
|
+
key = re.sub("^:","",key)
|
|
34
|
+
value = re.sub("^:","",value)
|
|
35
|
+
header[key] = value
|
|
36
|
+
|
|
37
|
+
return header
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def tsv_header(filename, sep="\t", comment_char="#"):
|
|
41
|
+
import re
|
|
42
|
+
|
|
43
|
+
f = open(filename)
|
|
44
|
+
line = f.readline().strip()
|
|
45
|
+
|
|
46
|
+
if (not line.startswith(comment_char)):
|
|
47
|
+
header = {"fields":None, "type":"list", "start": 0}
|
|
48
|
+
else:
|
|
49
|
+
header = dict()
|
|
50
|
+
start = 0
|
|
51
|
+
if (line.startswith(f"{comment_char}:")):
|
|
52
|
+
header["preamble"]=tsv_preamble(line, comment_char)
|
|
53
|
+
if ("type" in header["preamble"]):
|
|
54
|
+
header["type"] = header["preamble"]["type"]
|
|
55
|
+
line = f.readline().strip()
|
|
56
|
+
start = 1
|
|
57
|
+
|
|
58
|
+
if (line.startswith(comment_char)):
|
|
59
|
+
header["all_fields"] = re.sub(f"^{comment_char}", "", line).split(sep)
|
|
60
|
+
header["key_field"] = header["all_fields"][0]
|
|
61
|
+
header["fields"] = header["all_fields"][1:]
|
|
62
|
+
|
|
63
|
+
header["start"] = start
|
|
64
|
+
|
|
65
|
+
f.close()
|
|
66
|
+
return header
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def tsv_pandas(filename, sep="\t", comment_char="#", index_col=0, **kwargs):
|
|
70
|
+
import pandas
|
|
71
|
+
|
|
72
|
+
if (comment_char == ""):
|
|
73
|
+
tsv = pandas.read_table(filename, sep=sep, index_col=index_col, **kwargs)
|
|
74
|
+
else:
|
|
75
|
+
header = tsv_header(filename, sep=sep, comment_char="#")
|
|
76
|
+
|
|
77
|
+
if ("type" in header and header["type"] == "flat"):
|
|
78
|
+
return None
|
|
79
|
+
else:
|
|
80
|
+
if ("sep" in header):
|
|
81
|
+
sep=header["sep"]
|
|
82
|
+
|
|
83
|
+
tsv = pandas.read_table(filename, sep=sep, index_col=index_col, header=header["start"], **kwargs)
|
|
84
|
+
|
|
85
|
+
if ("fields" in header):
|
|
86
|
+
tsv.columns = header["fields"]
|
|
87
|
+
tsv.index.name = header["key_field"]
|
|
88
|
+
|
|
89
|
+
return tsv
|
|
90
|
+
|
|
91
|
+
def tsv(*args, **kwargs):
|
|
92
|
+
return tsv_pandas(*args, **kwargs)
|
|
93
|
+
|
|
@@ -54,8 +54,9 @@ tsvfile, excelfile = ARGV
|
|
|
54
54
|
|
|
55
55
|
excelfile, tsvfile = tsvfile, nil if excelfile.nil? and tsvfile =~ /\.(xls|xlsx)$/
|
|
56
56
|
|
|
57
|
-
raise ParameterException, "No
|
|
58
|
-
|
|
57
|
+
raise ParameterException, "No TSV file given" if tsvfile.nil?
|
|
58
|
+
|
|
59
|
+
excelfile = tsvfile.sub(/\.tsv(\.gz)?$/, '.xlsx') if excelfile.nil?
|
|
59
60
|
|
|
60
61
|
require 'rbbt/tsv/excel'
|
|
61
62
|
TSV.open(tsvfile, options).excel(excelfile, options)
|
|
@@ -213,11 +213,15 @@ The `recursive_clean` cleans all the job dependency steps recursively.
|
|
|
213
213
|
-prov--provenance Report the jobs provenance
|
|
214
214
|
-W--workflows* Load a list of workflows
|
|
215
215
|
-R--requires* Require a list of files
|
|
216
|
-
-
|
|
217
|
-
-
|
|
216
|
+
-pro--produce* Prepare dependencies
|
|
217
|
+
-proc--produce_cpus* Number of dependencies prepared in parallel
|
|
218
218
|
-rwt--remote_workflow_tasks* Load a yaml file describing remote workflow tasks
|
|
219
219
|
-od--override_deps* Override deps using 'Workflow#task=<path>' array_separated
|
|
220
220
|
-PERF--procpath_performance* Measure performance using procpath
|
|
221
|
+
-r--relay* Relay job to SSH server
|
|
222
|
+
-sr--slurm_relay* Relay job to SSH SLURM server
|
|
223
|
+
-rdep--relay_dependencies* Relay dependencies instead of main job
|
|
224
|
+
-pdr--produce_dependencies_for_relay Prepare dependencies previous to relay jobs
|
|
221
225
|
EOF
|
|
222
226
|
|
|
223
227
|
workflow = ARGV.shift
|
|
@@ -415,13 +419,57 @@ begin
|
|
|
415
419
|
exit 0
|
|
416
420
|
end
|
|
417
421
|
|
|
418
|
-
if tasks = options.delete(:
|
|
422
|
+
if tasks = options.delete(:produce)
|
|
419
423
|
tasks = tasks.split(",")
|
|
420
|
-
|
|
421
|
-
puts Step.
|
|
424
|
+
produce_cpus = (options[:produce_cpus] || 1)
|
|
425
|
+
puts Step.produce_dependencies(job, tasks, prepare_cpus)
|
|
422
426
|
exit 0
|
|
423
427
|
end
|
|
424
428
|
|
|
429
|
+
def match_dependencies(queries, dependencies)
|
|
430
|
+
queries = queries.collect{|q| q.include?("#") ? q.split("#") : q }
|
|
431
|
+
|
|
432
|
+
matched = []
|
|
433
|
+
queries.each do |q|
|
|
434
|
+
matched += dependencies.select do |dep|
|
|
435
|
+
if Array === q
|
|
436
|
+
q.first == dep.workflow.to_s && q.last == dep.task_name.to_s
|
|
437
|
+
else
|
|
438
|
+
q.to_s == dep.task_name.to_s
|
|
439
|
+
end
|
|
440
|
+
end
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
matched
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
if server = options.delete(:relay)
|
|
447
|
+
require 'rbbt/workflow/remote_workflow'
|
|
448
|
+
relay_dependencies = options.delete(:relay_dependencies).split(",")
|
|
449
|
+
produce_dependencies_for_relay = options.delete(:produce_dependencies_for_relay)
|
|
450
|
+
if relay_dependencies
|
|
451
|
+
match_dependencies(relay_dependencies, job.rec_dependencies).each do |dep|
|
|
452
|
+
RemoteWorkflow::SSH.relay_job(dep, server, :run_type => :run, :migrate => true, :produce_dependencies => produce_dependencies_for_relay)
|
|
453
|
+
end
|
|
454
|
+
else
|
|
455
|
+
RemoteWorkflow::SSH.relay_job(job, server, :run_type => :run, :migrate => true, :produce_dependencies => produce_dependencies_for_relay)
|
|
456
|
+
end
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
if server = options.delete(:slurm_relay)
|
|
460
|
+
require 'rbbt/workflow/remote_workflow'
|
|
461
|
+
relay_dependencies = options.delete(:relay_dependencies).split(",")
|
|
462
|
+
produce_dependencies_for_relay = options.delete(:produce_dependencies_for_relay)
|
|
463
|
+
if relay_dependencies
|
|
464
|
+
match_dependencies(relay_dependencies, job.rec_dependencies).each do |dep|
|
|
465
|
+
RemoteWorkflow::SSH.relay_job(dep, server, :run_type => :orchestrate, :migrate => true, :produce_dependencies => produce_dependencies_for_relay)
|
|
466
|
+
end
|
|
467
|
+
else
|
|
468
|
+
RemoteWorkflow::SSH.relay_job(job, server, :run_type => :orchestrate, :migrate => true, :produce_dependencies => produce_dependencies_for_relay)
|
|
469
|
+
end
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
|
|
425
473
|
if options[:procpath_performance]
|
|
426
474
|
require 'rbbt/util/procpath'
|
|
427
475
|
current_pid = job.info[:pid]
|
data/test/rbbt/test_workflow.rb
CHANGED
|
@@ -513,4 +513,92 @@ class TestWorkflow < Test::Unit::TestCase
|
|
|
513
513
|
assert_equal "TLA", job.run
|
|
514
514
|
assert job.overriden
|
|
515
515
|
end
|
|
516
|
+
|
|
517
|
+
def test_anonymous_workflow
|
|
518
|
+
workflow = Module.new
|
|
519
|
+
workflow.extend Workflow
|
|
520
|
+
workflow.define_singleton_method(:to_s){"TestWorkflow"}
|
|
521
|
+
|
|
522
|
+
assert_equal "TestWorkflow", workflow.to_s
|
|
523
|
+
|
|
524
|
+
t1 = workflow.task :s1 => :string do
|
|
525
|
+
task_name.to_s
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
workflow.dep :s1
|
|
529
|
+
t2 = workflow.task :s2 => :string do
|
|
530
|
+
task_name.to_s
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
workflow.dep :s2
|
|
534
|
+
t3 = workflow.task :s3 => :string do
|
|
535
|
+
task_name.to_s
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
assert_equal "s3", workflow.job(:s3).run
|
|
539
|
+
end
|
|
540
|
+
|
|
541
|
+
def test_low_level_step
|
|
542
|
+
Log.with_severity 0 do
|
|
543
|
+
TmpFile.with_file do |tmpdir|
|
|
544
|
+
Path.setup tmpdir
|
|
545
|
+
|
|
546
|
+
s1 = Step.new tmpdir.s1 do "s1" end
|
|
547
|
+
s1.task_name = "s1"
|
|
548
|
+
|
|
549
|
+
# run clean run
|
|
550
|
+
assert_equal "s1", s1.run
|
|
551
|
+
s1.clean
|
|
552
|
+
assert_equal "s1", s1.run
|
|
553
|
+
assert_equal "s1", s1.run
|
|
554
|
+
|
|
555
|
+
# is persisted because it raises RbbtException
|
|
556
|
+
s1.task = proc do raise RbbtException end
|
|
557
|
+
assert_equal "s1", s1.run
|
|
558
|
+
s1.clean
|
|
559
|
+
assert_raises RbbtException do s1.run end
|
|
560
|
+
assert RbbtException === s1.get_exception
|
|
561
|
+
assert s1.error?
|
|
562
|
+
|
|
563
|
+
s1.recursive_clean
|
|
564
|
+
s1.task = proc do "s1" end
|
|
565
|
+
|
|
566
|
+
# add dependencies
|
|
567
|
+
s2 = Step.new tmpdir.s2 do
|
|
568
|
+
step(:s1).load + " -> s2"
|
|
569
|
+
end
|
|
570
|
+
s2.task_name = "s2"
|
|
571
|
+
s2.dependencies << s1
|
|
572
|
+
|
|
573
|
+
s3 = Step.new tmpdir.s3 do
|
|
574
|
+
step(:s2).load + " -> s3"
|
|
575
|
+
end
|
|
576
|
+
s3.task_name = "s3"
|
|
577
|
+
s3.dependencies << s2
|
|
578
|
+
|
|
579
|
+
assert_equal "s1 -> s2", s2.run
|
|
580
|
+
assert_equal "s1 -> s2 -> s3", s3.run
|
|
581
|
+
|
|
582
|
+
# Test recusive behaviour
|
|
583
|
+
s1.task = proc do raise RbbtException end
|
|
584
|
+
ComputeDependency.setup(s1, :produce)
|
|
585
|
+
s1.clean
|
|
586
|
+
s3.clean
|
|
587
|
+
s3.run
|
|
588
|
+
assert_equal "s1 -> s2 -> s3", s3.run
|
|
589
|
+
|
|
590
|
+
s1.task = proc do raise RbbtException end
|
|
591
|
+
ComputeDependency.setup(s1, :produce)
|
|
592
|
+
s3.recursive_clean
|
|
593
|
+
assert_raises RbbtException do s3.run end
|
|
594
|
+
|
|
595
|
+
s1.task = proc{|v| v }
|
|
596
|
+
s1.inputs = ["test"]
|
|
597
|
+
assert_equal "test", s1.run
|
|
598
|
+
s3.recursive_clean
|
|
599
|
+
assert_equal "test -> s2 -> s3", s3.run
|
|
600
|
+
end
|
|
601
|
+
end
|
|
602
|
+
end
|
|
603
|
+
|
|
516
604
|
end
|
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.
|
|
4
|
+
version: 5.37.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Miguel Vazquez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-
|
|
11
|
+
date: 2023-03-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|
|
@@ -24,20 +24,6 @@ dependencies:
|
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: progress-monitor
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: lockfile
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,34 +38,6 @@ dependencies:
|
|
|
52
38
|
- - ">="
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
40
|
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: spreadsheet
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :runtime
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rubyXL
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :runtime
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
41
|
- !ruby/object:Gem::Dependency
|
|
84
42
|
name: highline
|
|
85
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -122,20 +80,6 @@ dependencies:
|
|
|
122
80
|
- - ">="
|
|
123
81
|
- !ruby/object:Gem::Version
|
|
124
82
|
version: '0'
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: rest-client
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - ">="
|
|
130
|
-
- !ruby/object:Gem::Version
|
|
131
|
-
version: '0'
|
|
132
|
-
type: :runtime
|
|
133
|
-
prerelease: false
|
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
-
requirements:
|
|
136
|
-
- - ">="
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: '0'
|
|
139
83
|
- !ruby/object:Gem::Dependency
|
|
140
84
|
name: to_regexp
|
|
141
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -366,7 +310,7 @@ files:
|
|
|
366
310
|
- lib/rbbt/workflow/step/accessor.rb
|
|
367
311
|
- lib/rbbt/workflow/step/dependencies.rb
|
|
368
312
|
- lib/rbbt/workflow/step/info.rb
|
|
369
|
-
- lib/rbbt/workflow/step/
|
|
313
|
+
- lib/rbbt/workflow/step/produce.rb
|
|
370
314
|
- lib/rbbt/workflow/step/run.rb
|
|
371
315
|
- lib/rbbt/workflow/step/save_load_inputs.rb
|
|
372
316
|
- lib/rbbt/workflow/step/status.rb
|
|
@@ -613,113 +557,113 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
613
557
|
- !ruby/object:Gem::Version
|
|
614
558
|
version: '0'
|
|
615
559
|
requirements: []
|
|
616
|
-
rubygems_version: 3.1.
|
|
560
|
+
rubygems_version: 3.1.4
|
|
617
561
|
signing_key:
|
|
618
562
|
specification_version: 4
|
|
619
563
|
summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
|
|
620
564
|
test_files:
|
|
621
|
-
- test/test_helper.rb
|
|
622
|
-
- test/rbbt/entity/test_identifiers.rb
|
|
623
|
-
- test/rbbt/test_resource.rb
|
|
624
|
-
- test/rbbt/test_association.rb
|
|
625
|
-
- test/rbbt/hpc/test_orchestrate.rb
|
|
626
|
-
- test/rbbt/hpc/test_slurm.rb
|
|
627
|
-
- test/rbbt/hpc/orchestrate/test_batches.rb
|
|
628
|
-
- test/rbbt/hpc/orchestrate/test_rules.rb
|
|
629
|
-
- test/rbbt/hpc/orchestrate/test_chains.rb
|
|
630
|
-
- test/rbbt/hpc/test_batch.rb
|
|
631
|
-
- test/rbbt/persist/test_tsv.rb
|
|
632
|
-
- test/rbbt/persist/tsv/test_kyotocabinet.rb
|
|
633
|
-
- test/rbbt/persist/tsv/test_lmdb.rb
|
|
634
|
-
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
|
635
|
-
- test/rbbt/persist/tsv/test_cdb.rb
|
|
636
|
-
- test/rbbt/persist/tsv/test_leveldb.rb
|
|
637
|
-
- test/rbbt/persist/tsv/test_sharder.rb
|
|
638
|
-
- test/rbbt/test_packed_index.rb
|
|
639
565
|
- test/rbbt/test_entity.rb
|
|
640
|
-
- test/rbbt/test_fix_width_table.rb
|
|
641
566
|
- test/rbbt/workflow/test_remote_workflow.rb
|
|
642
|
-
- test/rbbt/workflow/test_doc.rb
|
|
643
|
-
- test/rbbt/workflow/step/test_save_load_inputs.rb
|
|
644
|
-
- test/rbbt/workflow/step/test_dependencies.rb
|
|
645
|
-
- test/rbbt/workflow/test_schedule.rb
|
|
646
567
|
- test/rbbt/workflow/util/test_archive.rb
|
|
647
568
|
- test/rbbt/workflow/util/test_orchestrator.rb
|
|
648
569
|
- test/rbbt/workflow/util/test_data.rb
|
|
649
|
-
- test/rbbt/workflow/
|
|
570
|
+
- test/rbbt/workflow/test_doc.rb
|
|
571
|
+
- test/rbbt/workflow/test_schedule.rb
|
|
650
572
|
- test/rbbt/workflow/test_step.rb
|
|
651
|
-
- test/rbbt/
|
|
652
|
-
- test/rbbt/
|
|
653
|
-
- test/rbbt/
|
|
654
|
-
- test/rbbt/
|
|
655
|
-
- test/rbbt/util/test_simpleDSL.rb
|
|
656
|
-
- test/rbbt/util/concurrency/processes/test_socket.rb
|
|
657
|
-
- test/rbbt/util/concurrency/test_processes.rb
|
|
658
|
-
- test/rbbt/util/concurrency/test_threads.rb
|
|
659
|
-
- test/rbbt/util/test_filecache.rb
|
|
660
|
-
- test/rbbt/util/simpleopt/test_get.rb
|
|
661
|
-
- test/rbbt/util/simpleopt/test_parse.rb
|
|
662
|
-
- test/rbbt/util/simpleopt/test_setup.rb
|
|
663
|
-
- test/rbbt/util/test_misc.rb
|
|
664
|
-
- test/rbbt/util/test_excel2tsv.rb
|
|
665
|
-
- test/rbbt/util/test_semaphore.rb
|
|
666
|
-
- test/rbbt/util/test_procpath.rb
|
|
667
|
-
- test/rbbt/util/R/test_model.rb
|
|
668
|
-
- test/rbbt/util/R/test_eval.rb
|
|
669
|
-
- test/rbbt/util/R/test_plot.rb
|
|
670
|
-
- test/rbbt/util/test_open.rb
|
|
671
|
-
- test/rbbt/util/test_tmpfile.rb
|
|
672
|
-
- test/rbbt/util/test_cmd.rb
|
|
673
|
-
- test/rbbt/util/test_concurrency.rb
|
|
573
|
+
- test/rbbt/workflow/step/test_dependencies.rb
|
|
574
|
+
- test/rbbt/workflow/step/test_save_load_inputs.rb
|
|
575
|
+
- test/rbbt/workflow/test_task.rb
|
|
576
|
+
- test/rbbt/resource/test_path.rb
|
|
674
577
|
- test/rbbt/util/test_colorize.rb
|
|
675
|
-
- test/rbbt/util/
|
|
578
|
+
- test/rbbt/util/test_procpath.rb
|
|
676
579
|
- test/rbbt/util/python/test_util.rb
|
|
677
|
-
- test/rbbt/util/test_log.rb
|
|
678
|
-
- test/rbbt/util/test_simpleopt.rb
|
|
679
|
-
- test/rbbt/util/test_python.rb
|
|
680
|
-
- test/rbbt/util/test_chain_methods.rb
|
|
681
|
-
- test/rbbt/util/misc/test_omics.rb
|
|
682
|
-
- test/rbbt/util/misc/test_lock.rb
|
|
683
|
-
- test/rbbt/util/misc/test_multipart_payload.rb
|
|
684
|
-
- test/rbbt/util/misc/test_bgzf.rb
|
|
685
580
|
- test/rbbt/util/misc/test_development.rb
|
|
581
|
+
- test/rbbt/util/misc/test_omics.rb
|
|
582
|
+
- test/rbbt/util/misc/test_pipes.rb
|
|
686
583
|
- test/rbbt/util/misc/test_serialize.rb
|
|
687
584
|
- test/rbbt/util/misc/test_format.rb
|
|
688
585
|
- test/rbbt/util/misc/test_communication.rb
|
|
689
|
-
- test/rbbt/util/misc/
|
|
586
|
+
- test/rbbt/util/misc/test_lock.rb
|
|
587
|
+
- test/rbbt/util/misc/test_multipart_payload.rb
|
|
588
|
+
- test/rbbt/util/misc/test_bgzf.rb
|
|
589
|
+
- test/rbbt/util/test_concurrency.rb
|
|
590
|
+
- test/rbbt/util/test_cmd.rb
|
|
591
|
+
- test/rbbt/util/R/test_plot.rb
|
|
592
|
+
- test/rbbt/util/R/test_eval.rb
|
|
593
|
+
- test/rbbt/util/R/test_model.rb
|
|
594
|
+
- test/rbbt/util/test_config.rb
|
|
595
|
+
- test/rbbt/util/test_log.rb
|
|
596
|
+
- test/rbbt/util/test_simpleDSL.rb
|
|
690
597
|
- test/rbbt/util/log/test_progress.rb
|
|
598
|
+
- test/rbbt/util/test_tmpfile.rb
|
|
691
599
|
- test/rbbt/util/test_R.rb
|
|
692
|
-
- test/rbbt/
|
|
693
|
-
- test/rbbt/
|
|
694
|
-
- test/rbbt/
|
|
695
|
-
- test/rbbt/
|
|
696
|
-
- test/rbbt/
|
|
697
|
-
- test/rbbt/
|
|
698
|
-
- test/rbbt/
|
|
699
|
-
- test/rbbt/
|
|
700
|
-
- test/rbbt/
|
|
701
|
-
- test/rbbt/
|
|
702
|
-
- test/rbbt/
|
|
703
|
-
- test/rbbt/
|
|
704
|
-
- test/rbbt/
|
|
705
|
-
- test/rbbt/
|
|
706
|
-
- test/rbbt/
|
|
707
|
-
- test/rbbt/
|
|
708
|
-
- test/rbbt/
|
|
600
|
+
- test/rbbt/util/test_excel2tsv.rb
|
|
601
|
+
- test/rbbt/util/test_misc.rb
|
|
602
|
+
- test/rbbt/util/test_open.rb
|
|
603
|
+
- test/rbbt/util/test_simpleopt.rb
|
|
604
|
+
- test/rbbt/util/simpleopt/test_parse.rb
|
|
605
|
+
- test/rbbt/util/simpleopt/test_setup.rb
|
|
606
|
+
- test/rbbt/util/simpleopt/test_get.rb
|
|
607
|
+
- test/rbbt/util/test_python.rb
|
|
608
|
+
- test/rbbt/util/test_filecache.rb
|
|
609
|
+
- test/rbbt/util/concurrency/test_processes.rb
|
|
610
|
+
- test/rbbt/util/concurrency/test_threads.rb
|
|
611
|
+
- test/rbbt/util/concurrency/processes/test_socket.rb
|
|
612
|
+
- test/rbbt/util/test_semaphore.rb
|
|
613
|
+
- test/rbbt/util/test_chain_methods.rb
|
|
614
|
+
- test/rbbt/util/test_migrate.rb
|
|
615
|
+
- test/rbbt/test_resource.rb
|
|
616
|
+
- test/rbbt/test_packed_index.rb
|
|
617
|
+
- test/rbbt/tsv/test_change_id.rb
|
|
618
|
+
- test/rbbt/tsv/test_attach.rb
|
|
619
|
+
- test/rbbt/tsv/test_filter.rb
|
|
620
|
+
- test/rbbt/tsv/test_marshal.rb
|
|
709
621
|
- test/rbbt/tsv/test_parser.rb
|
|
710
622
|
- test/rbbt/tsv/test_csv.rb
|
|
711
|
-
- test/rbbt/tsv/
|
|
623
|
+
- test/rbbt/tsv/test_accessor.rb
|
|
624
|
+
- test/rbbt/tsv/test_matrix.rb
|
|
712
625
|
- test/rbbt/tsv/test_field_index.rb
|
|
713
626
|
- test/rbbt/tsv/test_util.rb
|
|
714
|
-
- test/rbbt/tsv/
|
|
715
|
-
- test/rbbt/tsv/test_filter.rb
|
|
716
|
-
- test/rbbt/tsv/test_stream.rb
|
|
627
|
+
- test/rbbt/tsv/test_index.rb
|
|
717
628
|
- test/rbbt/tsv/test_parallel.rb
|
|
718
|
-
- test/rbbt/tsv/
|
|
719
|
-
- test/rbbt/tsv/test_matrix.rb
|
|
720
|
-
- test/rbbt/tsv/test_attach.rb
|
|
629
|
+
- test/rbbt/tsv/test_manipulate.rb
|
|
721
630
|
- test/rbbt/tsv/test_excel.rb
|
|
722
|
-
- test/rbbt/tsv/test_change_id.rb
|
|
723
|
-
- test/rbbt/tsv/test_index.rb
|
|
724
|
-
- test/rbbt/tsv/parallel/test_traverse.rb
|
|
725
631
|
- test/rbbt/tsv/parallel/test_through.rb
|
|
632
|
+
- test/rbbt/tsv/parallel/test_traverse.rb
|
|
633
|
+
- test/rbbt/tsv/test_stream.rb
|
|
634
|
+
- test/rbbt/test_association.rb
|
|
635
|
+
- test/rbbt/hpc/test_batch.rb
|
|
636
|
+
- test/rbbt/hpc/orchestrate/test_chains.rb
|
|
637
|
+
- test/rbbt/hpc/orchestrate/test_rules.rb
|
|
638
|
+
- test/rbbt/hpc/orchestrate/test_batches.rb
|
|
639
|
+
- test/rbbt/hpc/test_slurm.rb
|
|
640
|
+
- test/rbbt/hpc/test_orchestrate.rb
|
|
641
|
+
- test/rbbt/association/test_database.rb
|
|
642
|
+
- test/rbbt/association/test_item.rb
|
|
643
|
+
- test/rbbt/association/test_open.rb
|
|
644
|
+
- test/rbbt/association/test_util.rb
|
|
645
|
+
- test/rbbt/association/test_index.rb
|
|
646
|
+
- test/rbbt/test_knowledge_base.rb
|
|
647
|
+
- test/rbbt/persist/tsv/test_kyotocabinet.rb
|
|
648
|
+
- test/rbbt/persist/tsv/test_cdb.rb
|
|
649
|
+
- test/rbbt/persist/tsv/test_lmdb.rb
|
|
650
|
+
- test/rbbt/persist/tsv/test_sharder.rb
|
|
651
|
+
- test/rbbt/persist/tsv/test_leveldb.rb
|
|
652
|
+
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
|
653
|
+
- test/rbbt/persist/test_tsv.rb
|
|
654
|
+
- test/rbbt/test_tsv.rb
|
|
655
|
+
- test/rbbt/test_annotations.rb
|
|
656
|
+
- test/rbbt/test_fix_width_table.rb
|
|
657
|
+
- test/rbbt/test_workflow.rb
|
|
658
|
+
- test/rbbt/entity/test_identifiers.rb
|
|
659
|
+
- test/rbbt/annotations/test_util.rb
|
|
660
|
+
- test/rbbt/test_hpc.rb
|
|
661
|
+
- test/rbbt/test_monitor.rb
|
|
662
|
+
- test/rbbt/test_persist.rb
|
|
663
|
+
- test/rbbt/knowledge_base/test_entity.rb
|
|
664
|
+
- test/rbbt/knowledge_base/test_registry.rb
|
|
665
|
+
- test/rbbt/knowledge_base/test_syndicate.rb
|
|
666
|
+
- test/rbbt/knowledge_base/test_query.rb
|
|
667
|
+
- test/rbbt/knowledge_base/test_enrichment.rb
|
|
668
|
+
- test/rbbt/knowledge_base/test_traverse.rb
|
|
669
|
+
- test/test_helper.rb
|