rbbt-util 5.31.15 → 5.32.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/hpc/lsf.rb +7 -4
- data/lib/rbbt/hpc/slurm.rb +2 -1
- data/lib/rbbt/persist/tsv/adapter.rb +1 -1
- data/lib/rbbt/resource.rb +10 -7
- data/lib/rbbt/tsv/csv.rb +5 -0
- data/lib/rbbt/tsv/parser.rb +2 -2
- data/lib/rbbt/tsv/stream.rb +1 -0
- data/lib/rbbt/util/misc/pipes.rb +1 -1
- data/lib/rbbt/workflow.rb +21 -6
- data/lib/rbbt/workflow/definition.rb +1 -0
- data/lib/rbbt/workflow/doc.rb +18 -3
- data/lib/rbbt/workflow/step.rb +4 -0
- data/lib/rbbt/workflow/step/accessor.rb +1 -0
- data/lib/rbbt/workflow/usage.rb +2 -2
- data/lib/rbbt/workflow/util/archive.rb +1 -1
- data/lib/rbbt/workflow/util/trace.rb +25 -10
- data/share/rbbt_commands/migrate +3 -3
- data/share/rbbt_commands/workflow/forget_deps +17 -5
- data/test/rbbt/persist/tsv/test_tokyocabinet.rb +1 -1
- metadata +81 -80
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 421178e8bb0a2b8631af02c890c177132a9bfdad08d62cc7bb728cab9679f8f0
|
4
|
+
data.tar.gz: 893045f7ff08c8bfbd1701dd6da74aee5e8b59a1f2af7d8fba21c06535f06e92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd00a95c8217671959abcddd6591243afdc9920f46bbda881161eb7f60e0c08a591194057c25d8e69f1ffcd192abcea1feacfc714c032033debdfa7378e60290
|
7
|
+
data.tar.gz: 645deeb97dfd4b30a0e552efa5f7fede9edbb0d6936d0c3849e4354ceafcdbba41739efbd1a421e80c5fcf462a426d3765e05f04933748765ed066fb1edd168f
|
data/lib/rbbt/hpc/lsf.rb
CHANGED
@@ -7,10 +7,13 @@ module HPC
|
|
7
7
|
|
8
8
|
def self.batch_system_variables
|
9
9
|
<<-EOF
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
let TOTAL_PROCESORS="$(cat /proc/cpuinfo|grep ^processor |wc -l)"
|
11
|
+
let MAX_MEMORY_DEFAULT="$(grep MemTotal /proc/meminfo|grep -o "[[:digit:]]*") / ( (1024 * $TOTAL_PROCESORS) / $LSB_MAX_NUM_PROCESSORS )"
|
12
|
+
[ ! -z $LSB_MAX_MEM_RUSAGE ] && let MAX_MEMORY="$LSB_MAX_MEM_RUSAGE" || MAX_MEMORY="$MAX_MEMORY_DEFAULT"
|
13
|
+
export MAX_MEMORY_DEFAULT
|
14
|
+
export MAX_MEMORY
|
15
|
+
export BATCH_JOB_ID=$LSF_JOBID
|
16
|
+
export BATCH_SYSTEM=LSF
|
14
17
|
EOF
|
15
18
|
end
|
16
19
|
|
data/lib/rbbt/hpc/slurm.rb
CHANGED
@@ -8,7 +8,8 @@ module HPC
|
|
8
8
|
|
9
9
|
def self.batch_system_variables
|
10
10
|
<<-EOF
|
11
|
-
let
|
11
|
+
let TOTAL_PROCESORS="$(cat /proc/cpuinfo|grep ^processor |wc -l)"
|
12
|
+
let MAX_MEMORY_DEFAULT="$(grep MemTotal /proc/meminfo|grep -o "[[:digit:]]*") / ( (1024 * $TOTAL_PROCESORS) / $SLURM_CPUS_PER_TASK )"
|
12
13
|
[ ! -z $SLURM_MEM_PER_CPU ] && let MAX_MEMORY="$SLURM_MEM_PER_CPU * $SLURM_CPUS_PER_TASK" || MAX_MEMORY="$MAX_MEMORY_DEFAULT"
|
13
14
|
export MAX_MEMORY_DEFAULT
|
14
15
|
export MAX_MEMORY
|
data/lib/rbbt/resource.rb
CHANGED
@@ -6,6 +6,7 @@ require 'set'
|
|
6
6
|
|
7
7
|
|
8
8
|
module Resource
|
9
|
+
class ResourceNotFound < RbbtException; end
|
9
10
|
|
10
11
|
class << self
|
11
12
|
attr_accessor :lock_dir
|
@@ -154,16 +155,18 @@ module Resource
|
|
154
155
|
rake_dir, content = rake_for(path)
|
155
156
|
rake_dir = Path.setup(rake_dir.dup, self.pkgdir, self)
|
156
157
|
else
|
157
|
-
|
158
|
-
|
158
|
+
if path !~ /\.(gz|bgz)$/
|
159
|
+
begin
|
160
|
+
produce(path.annotate(path + '.gz'), force)
|
161
|
+
rescue ResourceNotFound
|
159
162
|
begin
|
160
|
-
produce(path.annotate(path + '.gz'), force)
|
161
|
-
rescue
|
162
163
|
produce(path.annotate(path + '.bgz'), force)
|
164
|
+
rescue ResourceNotFound
|
165
|
+
raise ResourceNotFound, "Resource is missing and does not seem to be claimed: #{ self } -- #{ path } "
|
163
166
|
end
|
164
167
|
end
|
165
|
-
|
166
|
-
raise "Resource is missing and does not seem to be claimed: #{ self } -- #{ path } "
|
168
|
+
else
|
169
|
+
raise ResourceNotFound, "Resource is missing and does not seem to be claimed: #{ self } -- #{ path } "
|
167
170
|
end
|
168
171
|
end
|
169
172
|
|
@@ -174,7 +177,7 @@ module Resource
|
|
174
177
|
end
|
175
178
|
|
176
179
|
if type and not File.exist?(final_path) or force
|
177
|
-
Log.medium "Producing: #{ final_path }"
|
180
|
+
Log.medium "Producing: (#{self.to_s}) #{ final_path }"
|
178
181
|
lock_filename = Persist.persistence_path(final_path, {:dir => Resource.lock_dir})
|
179
182
|
|
180
183
|
Misc.lock lock_filename do
|
data/lib/rbbt/tsv/csv.rb
CHANGED
@@ -8,6 +8,7 @@ module TSV
|
|
8
8
|
noheaders = ! headers
|
9
9
|
|
10
10
|
type = options.delete :type
|
11
|
+
cast = options.delete :cast
|
11
12
|
merge = options.delete :merge
|
12
13
|
key_field = options.delete :key_field
|
13
14
|
fields = options.delete :fields
|
@@ -46,6 +47,10 @@ module TSV
|
|
46
47
|
else
|
47
48
|
key, *values = row
|
48
49
|
end
|
50
|
+
|
51
|
+
if cast
|
52
|
+
values = values.collect{|v| v.send cast }
|
53
|
+
end
|
49
54
|
|
50
55
|
case type
|
51
56
|
when :double, :flat
|
data/lib/rbbt/tsv/parser.rb
CHANGED
@@ -40,7 +40,7 @@ module TSV
|
|
40
40
|
# Process fields line
|
41
41
|
|
42
42
|
preamble << line if line
|
43
|
-
while line
|
43
|
+
while line && (TrueClass === @header_hash || (String === @header_hash && Misc.fixutf8(line) =~ /^#{@header_hash}/ ))
|
44
44
|
@fields = line.split(@sep, -1)
|
45
45
|
@key_field = @fields.shift
|
46
46
|
@key_field = @key_field[(0 + header_hash.length)..-1] if String === @header_hash
|
@@ -49,7 +49,7 @@ module TSV
|
|
49
49
|
line = (@header_hash != "" ? stream.gets : nil)
|
50
50
|
line = Misc.fixutf8 line.chomp if line
|
51
51
|
preamble << line if line
|
52
|
-
@header_hash = false if TrueClass === @header_hash
|
52
|
+
@header_hash = false if TrueClass === @header_hash || @header_hash == ""
|
53
53
|
end
|
54
54
|
|
55
55
|
@preamble = preamble[0..-3] * "\n"
|
data/lib/rbbt/tsv/stream.rb
CHANGED
data/lib/rbbt/util/misc/pipes.rb
CHANGED
data/lib/rbbt/workflow.rb
CHANGED
@@ -187,17 +187,21 @@ module Workflow
|
|
187
187
|
clean_name = wf_name.sub(/::.*/,'')
|
188
188
|
Log.info{"Looking for '#{wf_name}' in '#{clean_name}'"}
|
189
189
|
require_workflow clean_name
|
190
|
-
|
190
|
+
workflow = Misc.string2const Misc.camel_case(wf_name)
|
191
|
+
workflow.load_documentation
|
192
|
+
return workflow
|
191
193
|
end
|
192
194
|
|
193
195
|
Log.high{"Loading workflow #{wf_name}"}
|
194
196
|
require_local_workflow(wf_name) or
|
195
197
|
(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 }")
|
196
|
-
begin
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
198
|
+
workflow = begin
|
199
|
+
Misc.string2const Misc.camel_case(wf_name)
|
200
|
+
rescue
|
201
|
+
Workflow.workflows.last || true
|
202
|
+
end
|
203
|
+
workflow.load_documentation
|
204
|
+
workflow
|
201
205
|
end
|
202
206
|
|
203
207
|
attr_accessor :description
|
@@ -596,6 +600,17 @@ module Workflow
|
|
596
600
|
true
|
597
601
|
end
|
598
602
|
end
|
603
|
+
|
604
|
+
if ! Open.exists?(step.info_file)
|
605
|
+
begin
|
606
|
+
workflow = step.path.split("/")[-3]
|
607
|
+
task_name = step.path.split("/")[-2]
|
608
|
+
workflow = Kernel.const_get workflow
|
609
|
+
step.task = workflow.tasks[task_name.to_sym]
|
610
|
+
rescue
|
611
|
+
Log.exception $!
|
612
|
+
end
|
613
|
+
end
|
599
614
|
step
|
600
615
|
end
|
601
616
|
|
@@ -74,6 +74,7 @@ module Workflow
|
|
74
74
|
def dep_task(name, workflow, oname, *rest, &block)
|
75
75
|
dep(workflow, oname, *rest, &block)
|
76
76
|
extension workflow.tasks[oname].extension if workflow.tasks.include?(oname) unless @extension
|
77
|
+
returns workflow.tasks[oname].result_description if workflow.tasks.include?(oname) unless @result_description
|
77
78
|
task name do
|
78
79
|
raise RbbtException, "dependency not found in dep_task" if dependencies.empty?
|
79
80
|
dep = dependencies.last
|
data/lib/rbbt/workflow/doc.rb
CHANGED
@@ -45,10 +45,25 @@ module Workflow
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def load_documentation
|
48
|
-
@documentation
|
48
|
+
return if @documentation
|
49
|
+
@documentation ||= Workflow.parse_workflow_doc documentation_markdown
|
49
50
|
@documentation[:tasks].each do |task, description|
|
50
|
-
|
51
|
-
|
51
|
+
if task.include? "#"
|
52
|
+
workflow, task = task.split("#")
|
53
|
+
workflow = begin
|
54
|
+
Kernel.const_get workflow
|
55
|
+
rescue
|
56
|
+
next
|
57
|
+
end
|
58
|
+
else
|
59
|
+
workflow = self
|
60
|
+
end
|
61
|
+
|
62
|
+
if workflow.tasks.include? task.to_sym
|
63
|
+
workflow.tasks[task.to_sym].description = description
|
64
|
+
else
|
65
|
+
Log.low "Documentation for #{ task }, but not a #{ workflow.to_s } task"
|
66
|
+
end
|
52
67
|
end
|
53
68
|
end
|
54
69
|
|
data/lib/rbbt/workflow/step.rb
CHANGED
@@ -458,6 +458,10 @@ class Step
|
|
458
458
|
end
|
459
459
|
|
460
460
|
def clean
|
461
|
+
if ! Open.exists?(info_file)
|
462
|
+
Log.high "Refusing to clean step with no .info file: #{path}"
|
463
|
+
return self
|
464
|
+
end
|
461
465
|
status = []
|
462
466
|
status << "dirty" if done? && dirty?
|
463
467
|
status << "not running" if ! done? && ! running?
|
@@ -97,6 +97,7 @@ class Step
|
|
97
97
|
Open.ln_s(value.path, path)
|
98
98
|
when type.to_s == "file"
|
99
99
|
if String === value && File.exists?(value)
|
100
|
+
value = File.expand_path(value)
|
100
101
|
Open.ln_s(value, path)
|
101
102
|
else
|
102
103
|
value = value.collect{|v| v = "#{v}" if Path === v; v }if Array === value
|
data/lib/rbbt/workflow/usage.rb
CHANGED
@@ -122,7 +122,7 @@ module Workflow
|
|
122
122
|
last = _prov_tasks(workflow.dep_tree(task_name))
|
123
123
|
|
124
124
|
if child
|
125
|
-
description << "->" << task_name.to_s
|
125
|
+
description << "-> " << task_name.to_s
|
126
126
|
elsif first
|
127
127
|
description << "" << task_name.to_s
|
128
128
|
else
|
@@ -198,7 +198,7 @@ module Workflow
|
|
198
198
|
puts Misc.format_definition_list_item(name.to_s, description, Log.terminal_width, 20, :yellow)
|
199
199
|
|
200
200
|
prov_string = prov_string(dep_tree(name))
|
201
|
-
puts Log.color
|
201
|
+
puts Misc.format_paragraph Log.color(:blue, "-> " + prov_string) if prov_string && ! prov_string.empty?
|
202
202
|
end
|
203
203
|
|
204
204
|
else
|
@@ -10,6 +10,9 @@ module Workflow
|
|
10
10
|
started = job.info[:started]
|
11
11
|
ddone = job.info[:done]
|
12
12
|
|
13
|
+
started = Time.parse started if String === started
|
14
|
+
ddone = Time.parse ddone if String === ddone
|
15
|
+
|
13
16
|
code = [job.workflow, job.task_name].compact.collect{|s| s.to_s} * " · "
|
14
17
|
code = job.name + " - " + code
|
15
18
|
|
@@ -70,8 +73,8 @@ module Workflow
|
|
70
73
|
|
71
74
|
start = data.column("Start.second").values.flatten.collect{|v| v.to_f}.min
|
72
75
|
eend = data.column("End.second").values.flatten.collect{|v| v.to_f}.max
|
73
|
-
total = eend - start
|
74
|
-
Log.info "Total time elapsed: #{total} seconds"
|
76
|
+
total = eend - start unless eend.nil? || start.nil?
|
77
|
+
Log.info "Total time elapsed: #{total} seconds" if total
|
75
78
|
|
76
79
|
data
|
77
80
|
end
|
@@ -140,7 +143,13 @@ rbbt.png_plot('#{plot}', 'plot(timeline)', width=#{width}, height=#{height}, poi
|
|
140
143
|
info = tasks_info[task] ||= IndiferentHash.setup({})
|
141
144
|
dep_info = IndiferentHash.setup(dep.info)
|
142
145
|
|
143
|
-
|
146
|
+
ddone = dep_info[:done]
|
147
|
+
started = dep_info[:started]
|
148
|
+
|
149
|
+
started = Time.parse started if String === started
|
150
|
+
ddone = Time.parse ddone if String === ddone
|
151
|
+
|
152
|
+
time = ddone - started
|
144
153
|
info[:time] ||= []
|
145
154
|
info[:time] << time
|
146
155
|
|
@@ -178,19 +187,25 @@ rbbt.png_plot('#{plot}', 'plot(timeline)', width=#{width}, height=#{height}, poi
|
|
178
187
|
jobs = []
|
179
188
|
seed_jobs.each do |step|
|
180
189
|
jobs += step.rec_dependencies + [step]
|
181
|
-
|
182
190
|
step.info[:archived_info].each do |path,ainfo|
|
183
191
|
archived_step = Step.new path
|
184
|
-
|
185
|
-
|
186
|
-
end.define_method :info do
|
192
|
+
|
193
|
+
archived_step.define_singleton_method :info do
|
187
194
|
ainfo
|
188
195
|
end
|
196
|
+
|
197
|
+
#class << archived_step
|
198
|
+
# self
|
199
|
+
#end.define_method :info do
|
200
|
+
# ainfo
|
201
|
+
#end
|
202
|
+
|
189
203
|
jobs << archived_step
|
190
204
|
end if step.info[:archived_info]
|
205
|
+
|
191
206
|
end
|
192
207
|
|
193
|
-
jobs = jobs.uniq.sort_by{|job| t = job.info[:
|
208
|
+
jobs = jobs.uniq.sort_by{|job| t = job.info[:started] || Open.mtime(job.path) || Time.now; Time === t ? t : Time.parse(t) }
|
194
209
|
|
195
210
|
data = trace_job_times(jobs, options[:fix_gap])
|
196
211
|
|
@@ -200,10 +215,10 @@ rbbt.png_plot('#{plot}', 'plot(timeline)', width=#{width}, height=#{height}, poi
|
|
200
215
|
|
201
216
|
raise "No jobs to process" if data.size == 0
|
202
217
|
|
203
|
-
plot, size, width, height = options.values_at :plot, :width, :height
|
218
|
+
plot, size, width, height = options.values_at :plot, :size, :width, :height
|
204
219
|
|
205
220
|
size = 800 if size.nil?
|
206
|
-
width = size * 2 if width.nil?
|
221
|
+
width = size.to_i * 2 if width.nil?
|
207
222
|
height = size if height.nil?
|
208
223
|
|
209
224
|
plot_trace_job_times(data, plot, width, height) if plot
|
data/share/rbbt_commands/migrate
CHANGED
@@ -94,12 +94,12 @@ real_paths.each do |source|
|
|
94
94
|
end
|
95
95
|
|
96
96
|
if options[:target]
|
97
|
-
target_path = [options[:target], target] * ":"
|
97
|
+
target_path = [options[:target], "'" + target + "'"] * ":"
|
98
98
|
else
|
99
|
-
target_path = target
|
99
|
+
target_path = "'" + target + "'"
|
100
100
|
end
|
101
101
|
|
102
|
-
cmd = "rsync -avztAXHP --copy-unsafe-links #{test_str} #{excludes_str} #{source} #{target_path} #{other * " "}"
|
102
|
+
cmd = "rsync -avztAXHP --copy-unsafe-links #{test_str} #{excludes_str} '#{source}' #{target_path} #{other * " "}"
|
103
103
|
|
104
104
|
cmd << " && rm -Rf #{source}" if options[:delete]
|
105
105
|
|
@@ -8,9 +8,11 @@ $0 = "rbbt #{$previous_commands*" "} #{ File.basename(__FILE__) }" if $previous_
|
|
8
8
|
|
9
9
|
options = SOPT.setup <<EOF
|
10
10
|
|
11
|
-
Make a job forget
|
11
|
+
Make a job forget its dependencies and archive their meta-data
|
12
12
|
|
13
|
-
$ #{$0} [options] <job_path>
|
13
|
+
$ #{$0} [options] <job_path> [<task_name>|<workflow>#<task_name>] ...
|
14
|
+
|
15
|
+
Specific dependencies can be specified as . Otherwise, all are forgoten.
|
14
16
|
|
15
17
|
-h--help Print this help
|
16
18
|
-p--purge Purge dependencies
|
@@ -26,7 +28,7 @@ if options[:help]
|
|
26
28
|
exit 0
|
27
29
|
end
|
28
30
|
|
29
|
-
path = ARGV
|
31
|
+
path, *remove = ARGV
|
30
32
|
|
31
33
|
raise ParameterException, "No path given" if path.nil?
|
32
34
|
step = Workflow.load_step path
|
@@ -34,10 +36,20 @@ step = Workflow.load_step path
|
|
34
36
|
step.archive_deps
|
35
37
|
step.copy_files_dir
|
36
38
|
dependencies = step.dependencies
|
37
|
-
step.set_info :dependencies, []
|
38
39
|
|
39
|
-
if
|
40
|
+
if remove && remove.any?
|
41
|
+
remove_paths = dependencies.select do |dep|
|
42
|
+
remove.include?(dep.task_name) || remove.include?([dep.workflow.to_s, dep.task_name] * "#")
|
43
|
+
end.collect{|dep| dep.path }
|
44
|
+
else
|
45
|
+
remove_paths = dependencies.collect{|dep| dep.path }
|
46
|
+
end
|
47
|
+
|
48
|
+
step.set_info :dependencies, step.info[:dependencies].reject{|info| remove_paths.include? info.last}
|
49
|
+
|
50
|
+
if options[:purge] || options[:recursive_purge]
|
40
51
|
dependencies.each do |dependency|
|
52
|
+
next unless remove_paths.include? dependency.path
|
41
53
|
Step.purge(dependency.path, options[:recursive_purge])
|
42
54
|
end
|
43
55
|
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.32.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-04-
|
11
|
+
date: 2021-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -542,7 +542,7 @@ homepage: http://github.com/mikisvaz/rbbt-util
|
|
542
542
|
licenses:
|
543
543
|
- MIT
|
544
544
|
metadata: {}
|
545
|
-
post_install_message:
|
545
|
+
post_install_message:
|
546
546
|
rdoc_options: []
|
547
547
|
require_paths:
|
548
548
|
- lib
|
@@ -557,101 +557,102 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
557
557
|
- !ruby/object:Gem::Version
|
558
558
|
version: '0'
|
559
559
|
requirements: []
|
560
|
-
|
561
|
-
|
560
|
+
rubyforge_project:
|
561
|
+
rubygems_version: 2.7.6
|
562
|
+
signing_key:
|
562
563
|
specification_version: 4
|
563
564
|
summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
|
564
565
|
test_files:
|
566
|
+
- test/test_helper.rb
|
567
|
+
- test/rbbt/entity/test_identifiers.rb
|
568
|
+
- test/rbbt/test_resource.rb
|
569
|
+
- test/rbbt/test_association.rb
|
570
|
+
- test/rbbt/hpc/test_slurm.rb
|
571
|
+
- test/rbbt/hpc/test_batch.rb
|
572
|
+
- test/rbbt/persist/test_tsv.rb
|
573
|
+
- test/rbbt/persist/tsv/test_kyotocabinet.rb
|
574
|
+
- test/rbbt/persist/tsv/test_lmdb.rb
|
575
|
+
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
576
|
+
- test/rbbt/persist/tsv/test_cdb.rb
|
577
|
+
- test/rbbt/persist/tsv/test_leveldb.rb
|
578
|
+
- test/rbbt/persist/tsv/test_sharder.rb
|
579
|
+
- test/rbbt/test_packed_index.rb
|
565
580
|
- test/rbbt/test_entity.rb
|
581
|
+
- test/rbbt/test_fix_width_table.rb
|
566
582
|
- test/rbbt/workflow/test_remote_workflow.rb
|
567
|
-
- test/rbbt/workflow/util/test_orchestrator.rb
|
568
583
|
- test/rbbt/workflow/test_doc.rb
|
569
|
-
- test/rbbt/workflow/test_schedule.rb
|
570
|
-
- test/rbbt/workflow/test_step.rb
|
571
584
|
- test/rbbt/workflow/step/test_dependencies.rb
|
585
|
+
- test/rbbt/workflow/test_schedule.rb
|
586
|
+
- test/rbbt/workflow/util/test_orchestrator.rb
|
572
587
|
- test/rbbt/workflow/test_task.rb
|
573
|
-
- test/rbbt/
|
574
|
-
- test/rbbt/
|
588
|
+
- test/rbbt/workflow/test_step.rb
|
589
|
+
- test/rbbt/test_tsv.rb
|
590
|
+
- test/rbbt/test_annotations.rb
|
591
|
+
- test/rbbt/test_knowledge_base.rb
|
592
|
+
- test/rbbt/util/test_simpleDSL.rb
|
593
|
+
- test/rbbt/util/concurrency/processes/test_socket.rb
|
594
|
+
- test/rbbt/util/concurrency/test_processes.rb
|
595
|
+
- test/rbbt/util/concurrency/test_threads.rb
|
596
|
+
- test/rbbt/util/test_filecache.rb
|
597
|
+
- test/rbbt/util/simpleopt/test_get.rb
|
598
|
+
- test/rbbt/util/simpleopt/test_parse.rb
|
599
|
+
- test/rbbt/util/simpleopt/test_setup.rb
|
600
|
+
- test/rbbt/util/test_misc.rb
|
601
|
+
- test/rbbt/util/test_excel2tsv.rb
|
602
|
+
- test/rbbt/util/test_semaphore.rb
|
575
603
|
- test/rbbt/util/test_procpath.rb
|
576
|
-
- test/rbbt/util/misc/test_development.rb
|
577
|
-
- test/rbbt/util/misc/test_omics.rb
|
578
|
-
- test/rbbt/util/misc/test_pipes.rb
|
579
|
-
- test/rbbt/util/misc/test_format.rb
|
580
|
-
- test/rbbt/util/misc/test_lock.rb
|
581
|
-
- test/rbbt/util/misc/test_multipart_payload.rb
|
582
|
-
- test/rbbt/util/misc/test_bgzf.rb
|
583
|
-
- test/rbbt/util/test_concurrency.rb
|
584
|
-
- test/rbbt/util/test_cmd.rb
|
585
|
-
- test/rbbt/util/R/test_plot.rb
|
586
|
-
- test/rbbt/util/R/test_eval.rb
|
587
604
|
- test/rbbt/util/R/test_model.rb
|
605
|
+
- test/rbbt/util/R/test_eval.rb
|
606
|
+
- test/rbbt/util/R/test_plot.rb
|
607
|
+
- test/rbbt/util/test_open.rb
|
608
|
+
- test/rbbt/util/test_tmpfile.rb
|
609
|
+
- test/rbbt/util/test_cmd.rb
|
610
|
+
- test/rbbt/util/test_concurrency.rb
|
611
|
+
- test/rbbt/util/test_colorize.rb
|
588
612
|
- test/rbbt/util/test_config.rb
|
589
613
|
- test/rbbt/util/test_log.rb
|
590
|
-
- test/rbbt/util/test_simpleDSL.rb
|
591
|
-
- test/rbbt/util/log/test_progress.rb
|
592
|
-
- test/rbbt/util/test_tmpfile.rb
|
593
|
-
- test/rbbt/util/test_R.rb
|
594
|
-
- test/rbbt/util/test_excel2tsv.rb
|
595
|
-
- test/rbbt/util/test_misc.rb
|
596
|
-
- test/rbbt/util/test_open.rb
|
597
614
|
- test/rbbt/util/test_simpleopt.rb
|
598
|
-
- test/rbbt/util/simpleopt/test_parse.rb
|
599
|
-
- test/rbbt/util/simpleopt/test_setup.rb
|
600
|
-
- test/rbbt/util/simpleopt/test_get.rb
|
601
615
|
- test/rbbt/util/test_python.rb
|
602
|
-
- test/rbbt/util/test_filecache.rb
|
603
|
-
- test/rbbt/util/concurrency/test_processes.rb
|
604
|
-
- test/rbbt/util/concurrency/test_threads.rb
|
605
|
-
- test/rbbt/util/concurrency/processes/test_socket.rb
|
606
|
-
- test/rbbt/util/test_semaphore.rb
|
607
616
|
- test/rbbt/util/test_chain_methods.rb
|
608
|
-
- test/rbbt/
|
609
|
-
- test/rbbt/
|
610
|
-
- test/rbbt/
|
611
|
-
- test/rbbt/
|
612
|
-
- test/rbbt/
|
617
|
+
- test/rbbt/util/misc/test_omics.rb
|
618
|
+
- test/rbbt/util/misc/test_lock.rb
|
619
|
+
- test/rbbt/util/misc/test_multipart_payload.rb
|
620
|
+
- test/rbbt/util/misc/test_bgzf.rb
|
621
|
+
- test/rbbt/util/misc/test_development.rb
|
622
|
+
- test/rbbt/util/misc/test_format.rb
|
623
|
+
- test/rbbt/util/misc/test_pipes.rb
|
624
|
+
- test/rbbt/util/log/test_progress.rb
|
625
|
+
- test/rbbt/util/test_R.rb
|
626
|
+
- test/rbbt/test_workflow.rb
|
627
|
+
- test/rbbt/knowledge_base/test_entity.rb
|
628
|
+
- test/rbbt/knowledge_base/test_enrichment.rb
|
629
|
+
- test/rbbt/knowledge_base/test_traverse.rb
|
630
|
+
- test/rbbt/knowledge_base/test_syndicate.rb
|
631
|
+
- test/rbbt/knowledge_base/test_registry.rb
|
632
|
+
- test/rbbt/knowledge_base/test_query.rb
|
633
|
+
- test/rbbt/association/test_item.rb
|
634
|
+
- test/rbbt/association/test_util.rb
|
635
|
+
- test/rbbt/association/test_open.rb
|
636
|
+
- test/rbbt/association/test_database.rb
|
637
|
+
- test/rbbt/association/test_index.rb
|
638
|
+
- test/rbbt/annotations/test_util.rb
|
639
|
+
- test/rbbt/test_monitor.rb
|
640
|
+
- test/rbbt/resource/test_path.rb
|
641
|
+
- test/rbbt/test_hpc.rb
|
642
|
+
- test/rbbt/test_persist.rb
|
613
643
|
- test/rbbt/tsv/test_parser.rb
|
614
644
|
- test/rbbt/tsv/test_csv.rb
|
615
|
-
- test/rbbt/tsv/
|
616
|
-
- test/rbbt/tsv/test_matrix.rb
|
645
|
+
- test/rbbt/tsv/test_manipulate.rb
|
617
646
|
- test/rbbt/tsv/test_field_index.rb
|
618
647
|
- test/rbbt/tsv/test_util.rb
|
619
|
-
- test/rbbt/tsv/
|
648
|
+
- test/rbbt/tsv/test_accessor.rb
|
649
|
+
- test/rbbt/tsv/test_filter.rb
|
650
|
+
- test/rbbt/tsv/test_stream.rb
|
620
651
|
- test/rbbt/tsv/test_parallel.rb
|
621
|
-
- test/rbbt/tsv/
|
652
|
+
- test/rbbt/tsv/test_matrix.rb
|
653
|
+
- test/rbbt/tsv/test_attach.rb
|
622
654
|
- test/rbbt/tsv/test_excel.rb
|
623
|
-
- test/rbbt/tsv/
|
655
|
+
- test/rbbt/tsv/test_change_id.rb
|
656
|
+
- test/rbbt/tsv/test_index.rb
|
624
657
|
- test/rbbt/tsv/parallel/test_traverse.rb
|
625
|
-
- test/rbbt/tsv/
|
626
|
-
- test/rbbt/test_association.rb
|
627
|
-
- test/rbbt/hpc/test_batch.rb
|
628
|
-
- test/rbbt/hpc/test_slurm.rb
|
629
|
-
- test/rbbt/association/test_database.rb
|
630
|
-
- test/rbbt/association/test_item.rb
|
631
|
-
- test/rbbt/association/test_open.rb
|
632
|
-
- test/rbbt/association/test_util.rb
|
633
|
-
- test/rbbt/association/test_index.rb
|
634
|
-
- test/rbbt/test_knowledge_base.rb
|
635
|
-
- test/rbbt/persist/tsv/test_kyotocabinet.rb
|
636
|
-
- test/rbbt/persist/tsv/test_cdb.rb
|
637
|
-
- test/rbbt/persist/tsv/test_lmdb.rb
|
638
|
-
- test/rbbt/persist/tsv/test_sharder.rb
|
639
|
-
- test/rbbt/persist/tsv/test_leveldb.rb
|
640
|
-
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
641
|
-
- test/rbbt/persist/test_tsv.rb
|
642
|
-
- test/rbbt/test_tsv.rb
|
643
|
-
- test/rbbt/test_annotations.rb
|
644
|
-
- test/rbbt/test_fix_width_table.rb
|
645
|
-
- test/rbbt/test_workflow.rb
|
646
|
-
- test/rbbt/entity/test_identifiers.rb
|
647
|
-
- test/rbbt/annotations/test_util.rb
|
648
|
-
- test/rbbt/test_hpc.rb
|
649
|
-
- test/rbbt/test_monitor.rb
|
650
|
-
- test/rbbt/test_persist.rb
|
651
|
-
- test/rbbt/knowledge_base/test_entity.rb
|
652
|
-
- test/rbbt/knowledge_base/test_registry.rb
|
653
|
-
- test/rbbt/knowledge_base/test_syndicate.rb
|
654
|
-
- test/rbbt/knowledge_base/test_query.rb
|
655
|
-
- test/rbbt/knowledge_base/test_enrichment.rb
|
656
|
-
- test/rbbt/knowledge_base/test_traverse.rb
|
657
|
-
- test/test_helper.rb
|
658
|
+
- test/rbbt/tsv/parallel/test_through.rb
|