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
|