rbbt-util 5.38.1 → 5.40.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/hpc/batch.rb +13 -3
- data/lib/rbbt/hpc/lsf.rb +1 -1
- data/lib/rbbt/hpc/orchestrate/rules.rb +8 -1
- data/lib/rbbt/hpc/orchestrate.rb +21 -17
- data/lib/rbbt/hpc/pbs.rb +177 -0
- data/lib/rbbt/hpc/slurm.rb +1 -1
- data/lib/rbbt/hpc.rb +1 -0
- data/lib/rbbt/resource/util.rb +1 -1
- data/lib/rbbt/resource.rb +6 -2
- data/lib/rbbt/tsv/util.rb +4 -0
- data/lib/rbbt/util/R/plot.rb +85 -0
- data/lib/rbbt/util/cmd.rb +8 -4
- data/lib/rbbt/util/concurrency/processes.rb +1 -1
- data/lib/rbbt/util/migrate.rb +1 -2
- data/lib/rbbt/util/misc/inspect.rb +1 -0
- data/lib/rbbt/util/open.rb +6 -0
- data/lib/rbbt/util/ssh.rb +1 -1
- data/lib/rbbt/workflow/remote_workflow/driver/ssh.rb +1 -1
- data/lib/rbbt/workflow/step/dependencies.rb +3 -4
- data/lib/rbbt/workflow/step.rb +2 -2
- data/lib/rbbt/workflow/usage.rb +1 -1
- data/lib/rbbt/workflow/util/trace.rb +2 -1
- data/lib/rbbt/workflow.rb +3 -2
- data/share/Rlib/util.R +12 -0
- data/share/rbbt_commands/hpc/list +2 -0
- data/share/rbbt_commands/hpc/orchestrate +1 -1
- data/share/rbbt_commands/hpc/task +8 -7
- data/share/rbbt_commands/lsf/list +2 -0
- data/share/rbbt_commands/lsf/orchestrate +1 -1
- data/share/rbbt_commands/lsf/task +8 -7
- data/share/rbbt_commands/resource/claims +57 -0
- data/share/rbbt_commands/slurm/list +2 -0
- data/share/rbbt_commands/slurm/orchestrate +1 -1
- data/share/rbbt_commands/slurm/task +8 -7
- data/share/rbbt_commands/workflow/task +2 -2
- data/test/rbbt/hpc/test_pbs.rb +43 -0
- data/test/rbbt/test_tsv.rb +16 -1
- data/test/rbbt/tsv/parallel/test_traverse.rb +2 -2
- data/test/rbbt/tsv/test_util.rb +14 -0
- data/test/rbbt/util/test_migrate.rb +2 -2
- 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
|
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
|
@@ -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*
|
36
|
-
--gres*
|
37
|
-
-mcpu--mem_per_cpu*
|
38
|
-
-lin--licenses*
|
39
|
-
-cons--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
|
62
|
+
Log.debug "Issuing BATCH job for #{self.path}"
|
62
63
|
HPC::BATCH_MODULE.run_job(self, $slurm_options)
|
63
|
-
rescue HPC::
|
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
|
@@ -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*
|
36
|
-
--gres*
|
37
|
-
-mcpu--mem_per_cpu*
|
38
|
-
-lin--licenses*
|
39
|
-
-cons--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
|
62
|
+
Log.debug "Issuing BATCH job for #{self.path}"
|
62
63
|
HPC::BATCH_MODULE.run_job(self, $slurm_options)
|
63
|
-
rescue HPC::
|
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
|
@@ -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*
|
36
|
-
--gres*
|
37
|
-
-mcpu--mem_per_cpu*
|
38
|
-
-lin--licenses*
|
39
|
-
-cons--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
|
62
|
+
Log.debug "Issuing BATCH job for #{self.path}"
|
62
63
|
HPC::BATCH_MODULE.run_job(self, $slurm_options)
|
63
|
-
rescue HPC::
|
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
|
-
|
224
|
-
|
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
|
+
|
data/test/rbbt/test_tsv.rb
CHANGED
@@ -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|
|
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 =
|
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
|
|
data/test/rbbt/tsv/test_util.rb
CHANGED
@@ -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
|
6
|
+
def test_source_locate
|
7
7
|
assert_equal 'var/jobs/', Rbbt.migrate_source_paths(Rbbt.root['var/jobs'].find(:user)).last
|
8
|
-
|
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.
|
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-
|
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.
|
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/
|
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/
|
680
|
-
- test/rbbt/
|
681
|
-
- test/rbbt/
|
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/
|
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/
|
698
|
-
- test/rbbt/
|
699
|
-
- test/rbbt/
|
700
|
-
- test/rbbt/
|
701
|
-
- test/rbbt/
|
702
|
-
- test/rbbt/
|
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
|