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.
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 files given" if tsvfile.nil? and excelfile.nil?
58
- raise ParameterException, "No excel file given" if excelfile.nil?
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
- -pre--prepare* Prepare dependencies
217
- -prec--prepare_cpus* Number of dependencies prepared in parallel
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(:prepare)
422
+ if tasks = options.delete(:produce)
419
423
  tasks = tasks.split(",")
420
- prepare_cpus = (options[:prepare_cpus] || 1)
421
- puts Step.prepare_dependencies(job, tasks, prepare_cpus)
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]
@@ -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
@@ -294,5 +294,6 @@ class TestWorkflowDependency < Test::Unit::TestCase
294
294
  assert job.dependencies.first.file('foo').exists?
295
295
  assert_equal 'done'.reverse, job.run
296
296
  end
297
+
297
298
  end
298
299
 
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.35.4
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-02-09 00:00:00.000000000 Z
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/prepare.rb
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.2
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/test_task.rb
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/test_tsv.rb
652
- - test/rbbt/test_annotations.rb
653
- - test/rbbt/test_knowledge_base.rb
654
- - test/rbbt/util/test_migrate.rb
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/test_config.rb
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/test_pipes.rb
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/test_workflow.rb
693
- - test/rbbt/knowledge_base/test_entity.rb
694
- - test/rbbt/knowledge_base/test_enrichment.rb
695
- - test/rbbt/knowledge_base/test_traverse.rb
696
- - test/rbbt/knowledge_base/test_syndicate.rb
697
- - test/rbbt/knowledge_base/test_registry.rb
698
- - test/rbbt/knowledge_base/test_query.rb
699
- - test/rbbt/association/test_item.rb
700
- - test/rbbt/association/test_util.rb
701
- - test/rbbt/association/test_open.rb
702
- - test/rbbt/association/test_database.rb
703
- - test/rbbt/association/test_index.rb
704
- - test/rbbt/annotations/test_util.rb
705
- - test/rbbt/test_monitor.rb
706
- - test/rbbt/resource/test_path.rb
707
- - test/rbbt/test_hpc.rb
708
- - test/rbbt/test_persist.rb
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/test_manipulate.rb
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/test_accessor.rb
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/test_marshal.rb
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