rbbt-util 5.38.1 → 5.40.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rbbt/hpc/batch.rb +13 -3
  3. data/lib/rbbt/hpc/lsf.rb +1 -1
  4. data/lib/rbbt/hpc/orchestrate/rules.rb +8 -1
  5. data/lib/rbbt/hpc/orchestrate.rb +21 -17
  6. data/lib/rbbt/hpc/pbs.rb +177 -0
  7. data/lib/rbbt/hpc/slurm.rb +1 -1
  8. data/lib/rbbt/hpc.rb +1 -0
  9. data/lib/rbbt/resource/util.rb +1 -1
  10. data/lib/rbbt/resource.rb +6 -2
  11. data/lib/rbbt/tsv/util.rb +4 -0
  12. data/lib/rbbt/util/R/plot.rb +85 -0
  13. data/lib/rbbt/util/cmd.rb +8 -4
  14. data/lib/rbbt/util/concurrency/processes.rb +1 -1
  15. data/lib/rbbt/util/migrate.rb +1 -2
  16. data/lib/rbbt/util/misc/inspect.rb +1 -0
  17. data/lib/rbbt/util/open.rb +6 -0
  18. data/lib/rbbt/util/ssh.rb +1 -1
  19. data/lib/rbbt/workflow/remote_workflow/driver/ssh.rb +1 -1
  20. data/lib/rbbt/workflow/step/dependencies.rb +3 -4
  21. data/lib/rbbt/workflow/step.rb +2 -2
  22. data/lib/rbbt/workflow/usage.rb +1 -1
  23. data/lib/rbbt/workflow/util/trace.rb +2 -1
  24. data/lib/rbbt/workflow.rb +3 -2
  25. data/share/Rlib/util.R +12 -0
  26. data/share/rbbt_commands/hpc/list +2 -0
  27. data/share/rbbt_commands/hpc/orchestrate +1 -1
  28. data/share/rbbt_commands/hpc/task +8 -7
  29. data/share/rbbt_commands/lsf/list +2 -0
  30. data/share/rbbt_commands/lsf/orchestrate +1 -1
  31. data/share/rbbt_commands/lsf/task +8 -7
  32. data/share/rbbt_commands/resource/claims +57 -0
  33. data/share/rbbt_commands/slurm/list +2 -0
  34. data/share/rbbt_commands/slurm/orchestrate +1 -1
  35. data/share/rbbt_commands/slurm/task +8 -7
  36. data/share/rbbt_commands/workflow/task +2 -2
  37. data/test/rbbt/hpc/test_pbs.rb +43 -0
  38. data/test/rbbt/test_tsv.rb +16 -1
  39. data/test/rbbt/tsv/parallel/test_traverse.rb +2 -2
  40. data/test/rbbt/tsv/test_util.rb +14 -0
  41. data/test/rbbt/util/test_migrate.rb +2 -2
  42. metadata +100 -96
data/lib/rbbt/workflow.rb CHANGED
@@ -23,7 +23,7 @@ module Workflow
23
23
 
24
24
  #{{{ WORKFLOW MANAGEMENT
25
25
  class << self
26
- attr_accessor :workflows, :autoinstall, :workflow_dir
26
+ attr_accessor :workflows, :autoinstall, :workflow_dir, :main
27
27
  end
28
28
 
29
29
  self.workflows = []
@@ -202,13 +202,14 @@ module Workflow
202
202
 
203
203
  first = nil
204
204
  wf_name.split("+").each do |wf_name|
205
+ self.main = nil
205
206
  require_local_workflow(wf_name) or
206
207
  (Workflow.autoinstall and `rbbt workflow install #{Misc.snake_case(wf_name)} || rbbt workflow install #{wf_name}` and require_local_workflow(wf_name)) or raise("Workflow not found or could not be loaded: #{ wf_name }")
207
208
 
208
209
  workflow = begin
209
210
  Misc.string2const Misc.camel_case(wf_name)
210
211
  rescue
211
- Workflow.workflows.last || true
212
+ self.main || Workflow.workflows.last
212
213
  end
213
214
  workflow.load_documentation
214
215
 
data/share/Rlib/util.R CHANGED
@@ -577,6 +577,16 @@ rbbt.get.modes <- function(x,bw = NULL,spar = NULL) {
577
577
 
578
578
  #{{{ PLOTS
579
579
 
580
+ rbbt.svg_plot <- function(filename, p, width=500, height=500, ...){
581
+ svg(filename=filename, width=width, height=height, ...);
582
+ if (is.function(p)) {
583
+ p()
584
+ }else{
585
+ eval(parse(text=p));
586
+ }
587
+ dev.off()
588
+ }
589
+
580
590
  rbbt.png_plot <- function(filename, p, width=500, height=500, ...){
581
591
  png(filename=filename, width=width, height=height, type='cairo', ...);
582
592
  if (is.function(p)) {
@@ -751,6 +761,8 @@ rbbt.plot.venn <- function(data, a=NULL, category=NULL, fill=NULL, ...) {
751
761
  fill=rbbt.plot.set_colors(dim(data)[2], "Set3")
752
762
  }
753
763
 
764
+ fill=fill[0:dim(data)[2]]
765
+
754
766
  group.matches <- function(data, fields) {
755
767
  sub = data
756
768
  for (i in 1:length(fields)) {
@@ -253,6 +253,8 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
253
253
  text = CMD.cmd('grep "^#SBATCH" ', :in => Open.read(fcmd)).read.strip
254
254
  when 'lsf'
255
255
  text = CMD.cmd('grep "^#BSUB" ', :in => Open.read(fcmd)).read.strip
256
+ when 'pbs'
257
+ text = CMD.cmd('grep "^#PBS" ', :in => Open.read(fcmd)).read.strip
256
258
  else
257
259
  text = ""
258
260
  end
@@ -73,7 +73,7 @@ class Step
73
73
  join
74
74
  self.load
75
75
  end
76
- rescue HPC::SBATCH
76
+ rescue HPC::BATCH_DRY_RUN
77
77
  end
78
78
  end
79
79
  end
@@ -32,16 +32,17 @@ $slurm_options = SOPT.get <<EOF
32
32
  -p--partition* Partition
33
33
  -t--task_cpus* Tasks
34
34
  -tm--time* Time
35
- -m--mem* SLURM minimum memory
36
- --gres* SLURM Generic resources
37
- -mcpu--mem_per_cpu* SLURM minimum memory per CPU
38
- -lin--licenses* SLURM licenses
39
- -cons--constraint* SLURM constraint
35
+ -m--mem* minimum memory
36
+ --gres* Generic resources
37
+ -mcpu--mem_per_cpu* minimum memory per CPU
38
+ -lin--licenses* licenses
39
+ -cons--constraint* constraint
40
40
  -W--workflows* Additional workflows
41
41
  -rmb--remove_batch_dir Remove the batch working directory (command, STDIN, exit status, ...)
42
42
  -bs--batch_system* Batch system to use: auto, lsf, slurm (default is auto-detect)
43
43
  -lmod--lua_modules* Lua Modules to load
44
44
  -co--conda* Conda environment to use
45
+ -OR--orchestration_rules* Orchestration rules
45
46
  EOF
46
47
 
47
48
  batch_system = $slurm_options.delete :batch_system
@@ -58,9 +59,9 @@ class Step
58
59
  self.load
59
60
  else
60
61
  begin
61
- Log.debug "Issuing SLURM job for #{self.path}"
62
+ Log.debug "Issuing BATCH job for #{self.path}"
62
63
  HPC::BATCH_MODULE.run_job(self, $slurm_options)
63
- rescue HPC::SBATCH
64
+ rescue HPC::BATCH_DRY_RUN
64
65
  end
65
66
  end
66
67
  end
@@ -253,6 +253,8 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
253
253
  text = CMD.cmd('grep "^#SBATCH" ', :in => Open.read(fcmd)).read.strip
254
254
  when 'lsf'
255
255
  text = CMD.cmd('grep "^#BSUB" ', :in => Open.read(fcmd)).read.strip
256
+ when 'pbs'
257
+ text = CMD.cmd('grep "^#PBS" ', :in => Open.read(fcmd)).read.strip
256
258
  else
257
259
  text = ""
258
260
  end
@@ -73,7 +73,7 @@ class Step
73
73
  join
74
74
  self.load
75
75
  end
76
- rescue HPC::SBATCH
76
+ rescue HPC::BATCH_DRY_RUN
77
77
  end
78
78
  end
79
79
  end
@@ -32,16 +32,17 @@ $slurm_options = SOPT.get <<EOF
32
32
  -p--partition* Partition
33
33
  -t--task_cpus* Tasks
34
34
  -tm--time* Time
35
- -m--mem* SLURM minimum memory
36
- --gres* SLURM Generic resources
37
- -mcpu--mem_per_cpu* SLURM minimum memory per CPU
38
- -lin--licenses* SLURM licenses
39
- -cons--constraint* SLURM constraint
35
+ -m--mem* minimum memory
36
+ --gres* Generic resources
37
+ -mcpu--mem_per_cpu* minimum memory per CPU
38
+ -lin--licenses* licenses
39
+ -cons--constraint* constraint
40
40
  -W--workflows* Additional workflows
41
41
  -rmb--remove_batch_dir Remove the batch working directory (command, STDIN, exit status, ...)
42
42
  -bs--batch_system* Batch system to use: auto, lsf, slurm (default is auto-detect)
43
43
  -lmod--lua_modules* Lua Modules to load
44
44
  -co--conda* Conda environment to use
45
+ -OR--orchestration_rules* Orchestration rules
45
46
  EOF
46
47
 
47
48
  batch_system = $slurm_options.delete :batch_system
@@ -58,9 +59,9 @@ class Step
58
59
  self.load
59
60
  else
60
61
  begin
61
- Log.debug "Issuing SLURM job for #{self.path}"
62
+ Log.debug "Issuing BATCH job for #{self.path}"
62
63
  HPC::BATCH_MODULE.run_job(self, $slurm_options)
63
- rescue HPC::SBATCH
64
+ rescue HPC::BATCH_DRY_RUN
64
65
  end
65
66
  end
66
67
  end
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rbbt-util'
4
+ require 'rbbt/resource'
5
+ require 'rbbt/workflow'
6
+
7
+ options = SOPT.get <<EOF
8
+ -W--workflows* Workflows to use; 'all' for all in Rbbt.etc.workflows:
9
+ -r--requires* Files to require; 'all' for all in Rbbt.etc.requires:
10
+ -f--force Force the production if the file is already present
11
+ -h--help Help
12
+ EOF
13
+
14
+ if options[:help]
15
+ puts SOPT.doc
16
+ exit
17
+ end
18
+
19
+ case options[:workflows]
20
+ when nil, false, "false", "none"
21
+ when "all"
22
+ Rbbt.etc.workflows.list.each do |workflow|
23
+ Workflow.require_workflow file
24
+ end if Rbbt.etc.workflows.exists?
25
+ else
26
+ options[:workflows].split(/[ ,;|]/).each do |workflow|
27
+ Workflow.require_workflow workflow
28
+ end
29
+ end
30
+
31
+ case options[:requires]
32
+ when nil, false, "false", "none"
33
+ when "all"
34
+ Rbbt.etc.requires.list.each do |file|
35
+ require file
36
+ end if Rbbt.etc.requires.exists?
37
+ else
38
+ options[:requires].split(/[ ,;|]/).each do |file|
39
+ require file
40
+ end
41
+ end
42
+
43
+ resource, path = ARGV
44
+
45
+ begin
46
+ resource = Kernel.const_get(resource)
47
+ rescue
48
+ begin
49
+ resource = Workflow.require_workflow resource
50
+ rescue
51
+ raise "Resource not found: #{ resource }"
52
+ end
53
+ end
54
+
55
+ puts resource.claims * "\n"
56
+
57
+
@@ -253,6 +253,8 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
253
253
  text = CMD.cmd('grep "^#SBATCH" ', :in => Open.read(fcmd)).read.strip
254
254
  when 'lsf'
255
255
  text = CMD.cmd('grep "^#BSUB" ', :in => Open.read(fcmd)).read.strip
256
+ when 'pbs'
257
+ text = CMD.cmd('grep "^#PBS" ', :in => Open.read(fcmd)).read.strip
256
258
  else
257
259
  text = ""
258
260
  end
@@ -73,7 +73,7 @@ class Step
73
73
  join
74
74
  self.load
75
75
  end
76
- rescue HPC::SBATCH
76
+ rescue HPC::BATCH_DRY_RUN
77
77
  end
78
78
  end
79
79
  end
@@ -32,16 +32,17 @@ $slurm_options = SOPT.get <<EOF
32
32
  -p--partition* Partition
33
33
  -t--task_cpus* Tasks
34
34
  -tm--time* Time
35
- -m--mem* SLURM minimum memory
36
- --gres* SLURM Generic resources
37
- -mcpu--mem_per_cpu* SLURM minimum memory per CPU
38
- -lin--licenses* SLURM licenses
39
- -cons--constraint* SLURM constraint
35
+ -m--mem* minimum memory
36
+ --gres* Generic resources
37
+ -mcpu--mem_per_cpu* minimum memory per CPU
38
+ -lin--licenses* licenses
39
+ -cons--constraint* constraint
40
40
  -W--workflows* Additional workflows
41
41
  -rmb--remove_batch_dir Remove the batch working directory (command, STDIN, exit status, ...)
42
42
  -bs--batch_system* Batch system to use: auto, lsf, slurm (default is auto-detect)
43
43
  -lmod--lua_modules* Lua Modules to load
44
44
  -co--conda* Conda environment to use
45
+ -OR--orchestration_rules* Orchestration rules
45
46
  EOF
46
47
 
47
48
  batch_system = $slurm_options.delete :batch_system
@@ -58,9 +59,9 @@ class Step
58
59
  self.load
59
60
  else
60
61
  begin
61
- Log.debug "Issuing SLURM job for #{self.path}"
62
+ Log.debug "Issuing BATCH job for #{self.path}"
62
63
  HPC::BATCH_MODULE.run_job(self, $slurm_options)
63
- rescue HPC::SBATCH
64
+ rescue HPC::BATCH_DRY_RUN
64
65
  end
65
66
  end
66
67
  end
@@ -220,8 +220,8 @@ The `recursive_clean` cleans all the job dependency steps recursively.
220
220
  -rwt--remote_workflow_tasks* Load a yaml file describing remote workflow tasks
221
221
  -od--override_deps* Override deps using 'Workflow#task=<path>' array_separated
222
222
  -PERF--procpath_performance* Measure performance using procpath
223
- -r--relay* Relay job to SSH server
224
- -sr--slurm_relay* Relay job to SSH SLURM server
223
+ --relay* Relay job to SSH server
224
+ --slurm_relay* Relay job to SSH SLURM server
225
225
  -rdep--relay_dependencies* Relay dependencies instead of main job
226
226
  -pdr--produce_dependencies_for_relay Prepare dependencies previous to relay jobs
227
227
  EOF
@@ -0,0 +1,43 @@
1
+ require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
2
+ require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
3
+
4
+ require 'rbbt/workflow'
5
+
6
+ class TestPBS < Test::Unit::TestCase
7
+ def workflow
8
+ @workflow ||= Module.new do
9
+ extend Workflow
10
+
11
+ def self.to_s
12
+ "TestWorkflow"
13
+ end
14
+
15
+ input :name, :string
16
+ task :hello => :string do |name|
17
+ "hello #{name}"
18
+ end
19
+ end
20
+ end
21
+
22
+ def test_template
23
+ job = workflow.job(:hello, "TEST", :name => "world")
24
+
25
+ TmpFile.with_file do |batch_dir|
26
+
27
+ template = HPC::PBS.job_template(job, :batch_dir => batch_dir, :lua_modules => 'java')
28
+ ppp template
29
+
30
+ end
31
+ end
32
+
33
+ def __test_run_job
34
+ job = Sample.job(:mutect2, "small", :reference => "hg38")
35
+
36
+ job.clean
37
+
38
+ jobid = HPC::SLURM.run_job(job, :workflows => "HTS", :batch_modules => 'java', :env_cmd => '_JAVA_OPTIONS="-Xms1g -Xmx${MAX_MEMORY}m"', :queue => :debug, :time => '01:00:00', :config_keys => "HTS_light", :task_cpus => '10', :tail => true, :clean_task => "HTS#mutect2")
39
+ assert jobid.to_s =~ /^\d+$/
40
+ end
41
+
42
+ end
43
+
@@ -302,7 +302,7 @@ b 2
302
302
  EOF
303
303
 
304
304
  TmpFile.with_file(content) do |filename|
305
- tsv = TSV.open(filename, :key_field => "Value", :select => Proc.new{|l| ! l =~ /1/})
305
+ tsv = TSV.open(filename, :key_field => "Value", :select => Proc.new{|l| l !~ /1/})
306
306
  assert(! tsv.include?("3"))
307
307
  end
308
308
  end
@@ -650,5 +650,20 @@ row3 AA BB|BBB Id3|Id2
650
650
 
651
651
  end
652
652
  end
653
+
654
+ def test_benchmark
655
+ num = 10_000
656
+ txt = num.times.inject(nil) do |acc,i|
657
+ (acc.nil? ? "" : acc << "\n") << (0..10).collect{|v| v == 0 ? i : [v,v] * "|" } * "\t"
658
+ end
659
+
660
+ txt = StringIO.new(([txt] * (10))*"\n")
661
+ #Misc.profile do
662
+ Misc.benchmark(1) do
663
+ data = TSV.open(txt, type: :double, bar: true, merge: true)
664
+ assert_equal num, data.size
665
+ end
666
+ end
667
+
653
668
  end
654
669
 
@@ -50,11 +50,11 @@ class TestTSVParallelThrough < Test::Unit::TestCase
50
50
  def test_traverse_stream
51
51
  require 'rbbt/sources/organism'
52
52
 
53
- head = 1000
53
+ head = 3000
54
54
 
55
55
  tsv = datafile_test('identifiers').open
56
56
  res = {}
57
- TSV.traverse tsv, :head => head, :into => res do |k,v|
57
+ TSV.traverse tsv, :head => head, :into => res, :bar => true do |k,v|
58
58
  [k,v]
59
59
  end
60
60
 
@@ -35,4 +35,18 @@ row2 A B Id3
35
35
  assert_equal %w(aa bb Id2), tsv.unzip_replicates["row1(1)"]
36
36
  end
37
37
  end
38
+
39
+ def test_merge
40
+ content =<<-EOF
41
+ #Id ValueA ValueB OtherID
42
+ row1 a|aa|aaa b|bb|bbb Id1|Id2|Id3
43
+ row2 A B Id3
44
+ EOF
45
+
46
+ TmpFile.with_file(content) do |filename|
47
+ tsv = TSV.open(filename, :sep => /\s+/)
48
+ tsv = tsv.merge({"row3" => [["A3"], ["B3"], ["Id4"]]})
49
+ assert TSV === tsv
50
+ end
51
+ end
38
52
  end
@@ -3,9 +3,9 @@ require 'rbbt-util'
3
3
  require 'rbbt/util/migrate'
4
4
 
5
5
  class TestMigrate < Test::Unit::TestCase
6
- def _test_source_locate
6
+ def test_source_locate
7
7
  assert_equal 'var/jobs/', Rbbt.migrate_source_paths(Rbbt.root['var/jobs'].find(:user)).last
8
- assert Rbbt.migrate_source_paths(Rbbt.root['var/jobs'].find(:user))[1].include?(File.join(ENV["HOME"], '.rbbt/var/jobs/'))
8
+ assert_include Rbbt.migrate_source_paths(Rbbt.root['var/jobs'].find(:user))[1], (File.join(ENV["HOME"], '.rbbt/var/jobs'))
9
9
  end
10
10
 
11
11
  def test_migrate
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.38.1
4
+ version: 5.40.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-06-01 00:00:00.000000000 Z
11
+ date: 2023-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -206,6 +206,7 @@ files:
206
206
  - lib/rbbt/hpc/orchestrate/batches.rb
207
207
  - lib/rbbt/hpc/orchestrate/chains.rb
208
208
  - lib/rbbt/hpc/orchestrate/rules.rb
209
+ - lib/rbbt/hpc/pbs.rb
209
210
  - lib/rbbt/hpc/slurm.rb
210
211
  - lib/rbbt/knowledge_base.rb
211
212
  - lib/rbbt/knowledge_base/enrichment.rb
@@ -390,6 +391,7 @@ files:
390
391
  - share/rbbt_commands/migrate
391
392
  - share/rbbt_commands/migrate_job
392
393
  - share/rbbt_commands/purge_job
394
+ - share/rbbt_commands/resource/claims
393
395
  - share/rbbt_commands/resource/exists
394
396
  - share/rbbt_commands/resource/find
395
397
  - share/rbbt_commands/resource/get
@@ -475,6 +477,7 @@ files:
475
477
  - test/rbbt/hpc/orchestrate/test_rules.rb
476
478
  - test/rbbt/hpc/test_batch.rb
477
479
  - test/rbbt/hpc/test_orchestrate.rb
480
+ - test/rbbt/hpc/test_pbs.rb
478
481
  - test/rbbt/hpc/test_slurm.rb
479
482
  - test/rbbt/knowledge_base/test_enrichment.rb
480
483
  - test/rbbt/knowledge_base/test_entity.rb
@@ -589,115 +592,116 @@ required_rubygems_version: !ruby/object:Gem::Requirement
589
592
  - !ruby/object:Gem::Version
590
593
  version: '0'
591
594
  requirements: []
592
- rubygems_version: 3.4.13
595
+ rubygems_version: 3.5.0.dev
593
596
  signing_key:
594
597
  specification_version: 4
595
598
  summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
596
599
  test_files:
597
- - test/rbbt/test_entity.rb
598
- - test/rbbt/workflow/test_remote_workflow.rb
599
- - test/rbbt/workflow/util/test_archive.rb
600
- - test/rbbt/workflow/util/test_orchestrator.rb
601
- - test/rbbt/workflow/util/test_data.rb
602
- - test/rbbt/workflow/test_doc.rb
603
- - test/rbbt/workflow/test_schedule.rb
604
- - test/rbbt/workflow/test_step.rb
605
- - test/rbbt/workflow/step/test_dependencies.rb
606
- - test/rbbt/workflow/step/test_save_load_inputs.rb
607
- - test/rbbt/workflow/test_task.rb
608
- - test/rbbt/resource/test_path.rb
609
- - test/rbbt/util/test_colorize.rb
610
- - test/rbbt/util/test_procpath.rb
611
- - test/rbbt/util/python/test_util.rb
612
- - test/rbbt/util/misc/test_development.rb
613
- - test/rbbt/util/misc/test_indiferent_hash.rb
614
- - test/rbbt/util/misc/test_omics.rb
615
- - test/rbbt/util/misc/test_pipes.rb
616
- - test/rbbt/util/misc/test_serialize.rb
617
- - test/rbbt/util/misc/test_format.rb
618
- - test/rbbt/util/misc/test_communication.rb
619
- - test/rbbt/util/misc/test_lock.rb
620
- - test/rbbt/util/misc/test_multipart_payload.rb
621
- - test/rbbt/util/misc/test_bgzf.rb
622
- - test/rbbt/util/test_concurrency.rb
623
- - test/rbbt/util/test_cmd.rb
624
- - test/rbbt/util/R/test_plot.rb
625
- - test/rbbt/util/R/test_eval.rb
626
- - test/rbbt/util/R/test_model.rb
627
- - test/rbbt/util/test_config.rb
628
- - test/rbbt/util/test_log.rb
629
- - test/rbbt/util/test_simpleDSL.rb
630
- - test/rbbt/util/log/test_progress.rb
631
- - test/rbbt/util/test_tmpfile.rb
632
- - test/rbbt/util/test_R.rb
633
- - test/rbbt/util/test_excel2tsv.rb
634
- - test/rbbt/util/test_misc.rb
635
- - test/rbbt/util/test_open.rb
636
- - test/rbbt/util/test_ssh.rb
637
- - test/rbbt/util/test_simpleopt.rb
638
- - test/rbbt/util/simpleopt/test_parse.rb
639
- - test/rbbt/util/simpleopt/test_setup.rb
640
- - test/rbbt/util/simpleopt/test_get.rb
641
- - test/rbbt/util/test_python.rb
642
- - test/rbbt/util/test_filecache.rb
643
- - test/rbbt/util/concurrency/test_processes.rb
644
- - test/rbbt/util/concurrency/test_threads.rb
645
- - test/rbbt/util/concurrency/processes/test_socket.rb
646
- - test/rbbt/util/test_semaphore.rb
647
- - test/rbbt/util/test_chain_methods.rb
648
- - test/rbbt/util/test_migrate.rb
649
- - test/rbbt/test_resource.rb
650
- - test/rbbt/test_packed_index.rb
651
- - test/rbbt/tsv/test_change_id.rb
652
- - test/rbbt/tsv/test_attach.rb
653
- - test/rbbt/tsv/test_filter.rb
654
- - test/rbbt/tsv/test_marshal.rb
655
- - test/rbbt/tsv/test_parser.rb
656
- - test/rbbt/tsv/test_csv.rb
657
- - test/rbbt/tsv/test_accessor.rb
658
- - test/rbbt/tsv/test_matrix.rb
659
- - test/rbbt/tsv/test_field_index.rb
660
- - test/rbbt/tsv/test_util.rb
661
- - test/rbbt/tsv/test_index.rb
662
- - test/rbbt/tsv/test_parallel.rb
663
- - test/rbbt/tsv/test_manipulate.rb
664
- - test/rbbt/tsv/test_excel.rb
665
- - test/rbbt/tsv/parallel/test_through.rb
666
- - test/rbbt/tsv/parallel/test_traverse.rb
667
- - test/rbbt/tsv/test_stream.rb
668
- - test/rbbt/test_association.rb
669
- - test/rbbt/hpc/test_batch.rb
670
- - test/rbbt/hpc/orchestrate/test_chains.rb
671
- - test/rbbt/hpc/orchestrate/test_rules.rb
672
- - test/rbbt/hpc/orchestrate/test_batches.rb
673
- - test/rbbt/hpc/test_slurm.rb
674
- - test/rbbt/hpc/test_orchestrate.rb
600
+ - test/rbbt/annotations/test_util.rb
675
601
  - test/rbbt/association/test_database.rb
602
+ - test/rbbt/association/test_index.rb
676
603
  - test/rbbt/association/test_item.rb
677
604
  - test/rbbt/association/test_open.rb
678
605
  - test/rbbt/association/test_util.rb
679
- - test/rbbt/association/test_index.rb
680
- - test/rbbt/test_knowledge_base.rb
681
- - test/rbbt/persist/tsv/test_kyotocabinet.rb
606
+ - test/rbbt/entity/test_identifiers.rb
607
+ - test/rbbt/hpc/orchestrate/test_batches.rb
608
+ - test/rbbt/hpc/orchestrate/test_chains.rb
609
+ - test/rbbt/hpc/orchestrate/test_rules.rb
610
+ - test/rbbt/hpc/test_batch.rb
611
+ - test/rbbt/hpc/test_orchestrate.rb
612
+ - test/rbbt/hpc/test_pbs.rb
613
+ - test/rbbt/hpc/test_slurm.rb
614
+ - test/rbbt/knowledge_base/test_enrichment.rb
615
+ - test/rbbt/knowledge_base/test_entity.rb
616
+ - test/rbbt/knowledge_base/test_query.rb
617
+ - test/rbbt/knowledge_base/test_registry.rb
618
+ - test/rbbt/knowledge_base/test_syndicate.rb
619
+ - test/rbbt/knowledge_base/test_traverse.rb
620
+ - test/rbbt/persist/test_tsv.rb
682
621
  - test/rbbt/persist/tsv/test_cdb.rb
622
+ - test/rbbt/persist/tsv/test_kyotocabinet.rb
623
+ - test/rbbt/persist/tsv/test_leveldb.rb
683
624
  - test/rbbt/persist/tsv/test_lmdb.rb
684
625
  - test/rbbt/persist/tsv/test_sharder.rb
685
- - test/rbbt/persist/tsv/test_leveldb.rb
686
626
  - test/rbbt/persist/tsv/test_tokyocabinet.rb
687
- - test/rbbt/persist/test_tsv.rb
688
- - test/rbbt/test_tsv.rb
627
+ - test/rbbt/resource/test_path.rb
689
628
  - test/rbbt/test_annotations.rb
629
+ - test/rbbt/test_association.rb
630
+ - test/rbbt/test_entity.rb
690
631
  - test/rbbt/test_fix_width_table.rb
691
- - test/rbbt/test_workflow.rb
692
- - test/rbbt/entity/test_identifiers.rb
693
- - test/rbbt/annotations/test_util.rb
694
632
  - test/rbbt/test_hpc.rb
633
+ - test/rbbt/test_knowledge_base.rb
695
634
  - test/rbbt/test_monitor.rb
635
+ - test/rbbt/test_packed_index.rb
696
636
  - test/rbbt/test_persist.rb
697
- - test/rbbt/knowledge_base/test_entity.rb
698
- - test/rbbt/knowledge_base/test_registry.rb
699
- - test/rbbt/knowledge_base/test_syndicate.rb
700
- - test/rbbt/knowledge_base/test_query.rb
701
- - test/rbbt/knowledge_base/test_enrichment.rb
702
- - test/rbbt/knowledge_base/test_traverse.rb
637
+ - test/rbbt/test_resource.rb
638
+ - test/rbbt/test_tsv.rb
639
+ - test/rbbt/test_workflow.rb
640
+ - test/rbbt/tsv/parallel/test_through.rb
641
+ - test/rbbt/tsv/parallel/test_traverse.rb
642
+ - test/rbbt/tsv/test_accessor.rb
643
+ - test/rbbt/tsv/test_attach.rb
644
+ - test/rbbt/tsv/test_change_id.rb
645
+ - test/rbbt/tsv/test_csv.rb
646
+ - test/rbbt/tsv/test_excel.rb
647
+ - test/rbbt/tsv/test_field_index.rb
648
+ - test/rbbt/tsv/test_filter.rb
649
+ - test/rbbt/tsv/test_index.rb
650
+ - test/rbbt/tsv/test_manipulate.rb
651
+ - test/rbbt/tsv/test_marshal.rb
652
+ - test/rbbt/tsv/test_matrix.rb
653
+ - test/rbbt/tsv/test_parallel.rb
654
+ - test/rbbt/tsv/test_parser.rb
655
+ - test/rbbt/tsv/test_stream.rb
656
+ - test/rbbt/tsv/test_util.rb
657
+ - test/rbbt/util/R/test_eval.rb
658
+ - test/rbbt/util/R/test_model.rb
659
+ - test/rbbt/util/R/test_plot.rb
660
+ - test/rbbt/util/concurrency/processes/test_socket.rb
661
+ - test/rbbt/util/concurrency/test_processes.rb
662
+ - test/rbbt/util/concurrency/test_threads.rb
663
+ - test/rbbt/util/log/test_progress.rb
664
+ - test/rbbt/util/misc/test_bgzf.rb
665
+ - test/rbbt/util/misc/test_communication.rb
666
+ - test/rbbt/util/misc/test_development.rb
667
+ - test/rbbt/util/misc/test_format.rb
668
+ - test/rbbt/util/misc/test_indiferent_hash.rb
669
+ - test/rbbt/util/misc/test_lock.rb
670
+ - test/rbbt/util/misc/test_multipart_payload.rb
671
+ - test/rbbt/util/misc/test_omics.rb
672
+ - test/rbbt/util/misc/test_pipes.rb
673
+ - test/rbbt/util/misc/test_serialize.rb
674
+ - test/rbbt/util/python/test_util.rb
675
+ - test/rbbt/util/simpleopt/test_get.rb
676
+ - test/rbbt/util/simpleopt/test_parse.rb
677
+ - test/rbbt/util/simpleopt/test_setup.rb
678
+ - test/rbbt/util/test_R.rb
679
+ - test/rbbt/util/test_chain_methods.rb
680
+ - test/rbbt/util/test_cmd.rb
681
+ - test/rbbt/util/test_colorize.rb
682
+ - test/rbbt/util/test_concurrency.rb
683
+ - test/rbbt/util/test_config.rb
684
+ - test/rbbt/util/test_excel2tsv.rb
685
+ - test/rbbt/util/test_filecache.rb
686
+ - test/rbbt/util/test_log.rb
687
+ - test/rbbt/util/test_migrate.rb
688
+ - test/rbbt/util/test_misc.rb
689
+ - test/rbbt/util/test_open.rb
690
+ - test/rbbt/util/test_procpath.rb
691
+ - test/rbbt/util/test_python.rb
692
+ - test/rbbt/util/test_semaphore.rb
693
+ - test/rbbt/util/test_simpleDSL.rb
694
+ - test/rbbt/util/test_simpleopt.rb
695
+ - test/rbbt/util/test_ssh.rb
696
+ - test/rbbt/util/test_tmpfile.rb
697
+ - test/rbbt/workflow/step/test_dependencies.rb
698
+ - test/rbbt/workflow/step/test_save_load_inputs.rb
699
+ - test/rbbt/workflow/test_doc.rb
700
+ - test/rbbt/workflow/test_remote_workflow.rb
701
+ - test/rbbt/workflow/test_schedule.rb
702
+ - test/rbbt/workflow/test_step.rb
703
+ - test/rbbt/workflow/test_task.rb
704
+ - test/rbbt/workflow/util/test_archive.rb
705
+ - test/rbbt/workflow/util/test_data.rb
706
+ - test/rbbt/workflow/util/test_orchestrator.rb
703
707
  - test/test_helper.rb