rbbt-util 5.36.0 → 5.37.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/util/concurrency/processes/socket.rb +1 -0
- data/lib/rbbt/util/concurrency/processes/worker.rb +1 -5
- data/lib/rbbt/util/concurrency/processes.rb +29 -24
- data/lib/rbbt/util/misc/inspect.rb +2 -2
- data/lib/rbbt/workflow/dependencies.rb +26 -4
- data/lib/rbbt/workflow/remote_workflow/driver/ssh.rb +8 -6
- data/lib/rbbt/workflow/remote_workflow/remote_step/ssh.rb +13 -0
- data/lib/rbbt/workflow/step/dependencies.rb +15 -9
- data/lib/rbbt/workflow/step/run.rb +3 -1
- data/lib/rbbt/workflow.rb +3 -1
- data/share/rbbt_commands/workflow/task +7 -3
- metadata +87 -143
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 281f115df5158fada081c65b87e292e69e4f378b8353d6e2542b3c45db0c03f1
|
4
|
+
data.tar.gz: e9801707391c731a2a4b4ead8156cff82fdf30c4e769a8bed34d1d77185b447a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3da2876b28c245b27f32b6dbd00188bdeea498fb118ccab048fb5d72925548e5e89926dea6b6316573e9d95a570c07983109e0e09de92360ec89ab2aec088439
|
7
|
+
data.tar.gz: 0166d47c3198bfc4c636a1f47ac9be1d2a64b8d97a2836166b02d1ac17d46c2b835ad210953da586f15a98f8593e18f6010ebc07220e95da149dcabec44b33a9
|
@@ -65,11 +65,7 @@ class RbbtProcessQueue
|
|
65
65
|
Log.high "Worker #{Process.pid} leaving"
|
66
66
|
rescue Exception
|
67
67
|
Log.high "Worker #{Process.pid} had exception: #{$!.message}"
|
68
|
-
|
69
|
-
begin
|
70
|
-
@callback_queue.push($!) if @callback_queue
|
71
|
-
rescue
|
72
|
-
end
|
68
|
+
@callback_queue.push($!) if @callback_queue
|
73
69
|
Kernel.exit! -1
|
74
70
|
ensure
|
75
71
|
@callback_queue.close_write if @callback_queue
|
@@ -180,13 +180,15 @@ class RbbtProcessQueue
|
|
180
180
|
rescue Exception
|
181
181
|
Log.low "Process monitor exception [#{Process.pid}]: #{$!.message}"
|
182
182
|
processes.each{|p| p.abort_and_join}
|
183
|
-
Log.low "Processes aborted #{Process.pid}"
|
183
|
+
Log.low "Processes aborted for monitor #{Process.pid}"
|
184
184
|
processes.clear
|
185
185
|
|
186
|
+
@manager_thread.report_on_exception = false
|
186
187
|
@manager_thread.raise $! if @manager_thread.alive?
|
187
188
|
raise Aborted, "Aborted monitor thread with exception"
|
188
189
|
end
|
189
190
|
end
|
191
|
+
@monitor_thread.report_on_exception = false
|
190
192
|
|
191
193
|
RbbtSemaphore.post_semaphore(@sem)
|
192
194
|
|
@@ -215,33 +217,36 @@ class RbbtProcessQueue
|
|
215
217
|
init_master
|
216
218
|
|
217
219
|
RbbtSemaphore.synchronize(@sem) do
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
220
|
+
@callback_thread = Thread.new do
|
221
|
+
begin
|
222
|
+
loop do
|
223
|
+
p = @callback_queue.pop unless @callback_queue.cleaned
|
222
224
|
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
225
|
+
if Exception === p or (Array === p and Exception === p.first)
|
226
|
+
e = Array === p ? p.first : p
|
227
|
+
Log.low "Callback recieved exception from worker: #{e.message}" unless Aborted === e or ClosedStream === e
|
228
|
+
raise e
|
229
|
+
end
|
228
230
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
231
|
+
if @callback.arity == 0
|
232
|
+
@callback.call
|
233
|
+
else
|
234
|
+
@callback.call p
|
235
|
+
end
|
233
236
|
end
|
237
|
+
rescue ClosedStream
|
238
|
+
Log.low "Callback thread closing"
|
239
|
+
rescue Aborted
|
240
|
+
Log.low "Callback thread aborted"
|
241
|
+
raise $!
|
242
|
+
rescue Exception
|
243
|
+
Log.low "Exception captured in callback: #{$!.message}"
|
244
|
+
raise $!
|
234
245
|
end
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
raise $!
|
240
|
-
rescue Exception
|
241
|
-
Log.low "Exception captured in callback: #{$!.message}"
|
242
|
-
raise $!
|
243
|
-
end
|
244
|
-
end if @callback_queue
|
246
|
+
end if @callback_queue
|
247
|
+
|
248
|
+
@callback_thread.report_on_exception = false
|
249
|
+
|
245
250
|
end
|
246
251
|
|
247
252
|
end
|
@@ -343,9 +343,9 @@ module Misc
|
|
343
343
|
end
|
344
344
|
when Array
|
345
345
|
if obj.length > HASH2MD5_MAX_ARRAY_LENGTH
|
346
|
-
"[" << sample_large_obj(obj, HASH2MD5_MAX_ARRAY_LENGTH).collect{|v| obj2str(v)} * "," << "]"
|
346
|
+
"[" << sample_large_obj(obj, HASH2MD5_MAX_ARRAY_LENGTH).collect{|v| obj2str(v.nil? ? "" : v) } * "," << "]"
|
347
347
|
else
|
348
|
-
"[" << obj.collect{|v| obj2str(v) } * "," << "]"
|
348
|
+
"[" << obj.collect{|v| obj2str(v.nil? ? "" : v) } * "," << "]"
|
349
349
|
end
|
350
350
|
when TSV::Parser
|
351
351
|
remove_long_items(obj)
|
@@ -72,6 +72,7 @@ module Workflow
|
|
72
72
|
def setup_override_dependency(dep, workflow, task_name)
|
73
73
|
return [] if dep == :skip || dep == 'skip'
|
74
74
|
|
75
|
+
unlocated = unlocated_override?(dep)
|
75
76
|
dep = Workflow.load_step(dep) if not Step === dep
|
76
77
|
|
77
78
|
dep.original_workflow ||= dep.workflow if dep.workflow
|
@@ -91,7 +92,7 @@ module Workflow
|
|
91
92
|
end
|
92
93
|
|
93
94
|
dep.task_name = task_name
|
94
|
-
dep.overriden = dep.original_task_name.to_sym if dep.original_task_name
|
95
|
+
dep.overriden = dep.original_task_name.to_sym if dep.original_task_name && dep.original_task_name.to_s != task_name.to_s || ! unlocated
|
95
96
|
|
96
97
|
dep.extend step_module
|
97
98
|
|
@@ -169,6 +170,16 @@ module Workflow
|
|
169
170
|
else
|
170
171
|
|
171
172
|
compute = options[:compute] if options
|
173
|
+
if options && options[:canfail]
|
174
|
+
compute = case compute
|
175
|
+
when nil
|
176
|
+
:canfail
|
177
|
+
when Array
|
178
|
+
compute + [:canfail]
|
179
|
+
else
|
180
|
+
[compute, :canfail]
|
181
|
+
end
|
182
|
+
end
|
172
183
|
|
173
184
|
all_d = (real_dependencies + real_dependencies.flatten.collect{|d| d.rec_dependencies} ).flatten.compact.uniq
|
174
185
|
|
@@ -207,6 +218,16 @@ module Workflow
|
|
207
218
|
|
208
219
|
options = {} if options.nil?
|
209
220
|
compute = options[:compute]
|
221
|
+
if options[:canfail]
|
222
|
+
compute = case compute
|
223
|
+
when nil
|
224
|
+
:canfail
|
225
|
+
when Array
|
226
|
+
compute + [:canfail]
|
227
|
+
else
|
228
|
+
[compute, :canfail]
|
229
|
+
end
|
230
|
+
end
|
210
231
|
|
211
232
|
options = IndiferentHash.setup(options.dup)
|
212
233
|
dep = dependency.call jobname, _inputs.merge(options), real_dependencies
|
@@ -228,7 +249,8 @@ module Workflow
|
|
228
249
|
task_info = d[:workflow].task_info(d[:task])
|
229
250
|
|
230
251
|
_inputs = assign_dep_inputs({}, options.merge(d[:inputs] || {}), real_dependencies, task_info)
|
231
|
-
|
252
|
+
_jobname = d.include?(:jobname) ? d[:jobname] : jobname
|
253
|
+
job = d[:workflow]._job(d[:task], _jobname, _inputs)
|
232
254
|
overriden = true if TrueClass === job.overriden && (d.nil? || ! d[:not_overriden])
|
233
255
|
job
|
234
256
|
end
|
@@ -250,8 +272,8 @@ module Workflow
|
|
250
272
|
else
|
251
273
|
task_info = (dep[:task] && dep[:workflow]) ? dep[:workflow].task_info(dep[:task]) : nil
|
252
274
|
_inputs = assign_dep_inputs({}, dep[:inputs], real_dependencies, task_info)
|
253
|
-
|
254
|
-
job =
|
275
|
+
_jobname = dep.include?(:jobname) ? dep[:jobname] : jobname
|
276
|
+
job = dep[:workflow]._job(dep[:task], _jobname, _inputs)
|
255
277
|
overriden = true if TrueClass === job.overriden && (d.nil? || ! d[:not_overriden])
|
256
278
|
job
|
257
279
|
end
|
@@ -24,8 +24,8 @@ class RemoteWorkflow
|
|
24
24
|
workflow, task, job, *rest = path.split("/")
|
25
25
|
|
26
26
|
workflow_name = begin
|
27
|
-
|
28
|
-
|
27
|
+
wf = Kernel.const_get(workflow) if String === workflow && ! workflow.empty?
|
28
|
+
wf.respond_to?(:complete_name) ? (wf.complete_name || workflow) : workflow
|
29
29
|
rescue
|
30
30
|
workflow
|
31
31
|
end
|
@@ -188,9 +188,10 @@ job.clean
|
|
188
188
|
# Open.write(file, new)
|
189
189
|
# end
|
190
190
|
|
191
|
-
|
191
|
+
files = Dir.glob(File.join(dir, "*.as_step"))
|
192
|
+
paths = files.collect{|f| Open.read(f).strip }
|
192
193
|
new = Step.migrate(paths, :user, :target => server)
|
193
|
-
|
194
|
+
files.zip(new).each{|file,new| Open.write(file, new) }
|
194
195
|
|
195
196
|
CMD.cmd_log("ssh '#{server}' mkdir -p .rbbt/tmp/tmp-ssh_job_inputs/; scp -r '#{dir}' #{server}:.rbbt/tmp/tmp-ssh_job_inputs/#{input_id}")
|
196
197
|
end
|
@@ -229,10 +230,11 @@ job.clean
|
|
229
230
|
job.input_dependencies.each do |dep|
|
230
231
|
Log.medium "Producing #{dep.workflow}:#{dep.short_path} dependency for #{job.workflow}:#{job.short_path}"
|
231
232
|
dep.produce
|
232
|
-
end
|
233
|
+
end
|
233
234
|
|
234
235
|
migrate_dependencies = job.rec_dependencies.select{|d| d.done? }.collect{|d| d.path }
|
235
|
-
|
236
|
+
migrate_dependencies += job.input_dependencies.select{|d| d.done? }.collect{|d| d.path }
|
237
|
+
Log.medium "Migrating #{migrate_dependencies.length} dependencies from #{job.path} to #{ server }"
|
236
238
|
Step.migrate(migrate_dependencies, search_path, :target => server) if migrate_dependencies.any?
|
237
239
|
end
|
238
240
|
|
@@ -52,6 +52,7 @@ class RemoteStep
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def _run
|
55
|
+
RemoteWorkflow::SSH.upload_dependencies(self, @server)
|
55
56
|
RemoteWorkflow::SSH.run_job(File.join(base_url, task.to_s), @input_id, @base_name)
|
56
57
|
end
|
57
58
|
|
@@ -97,6 +98,18 @@ class RemoteStep
|
|
97
98
|
_restart
|
98
99
|
end
|
99
100
|
|
101
|
+
def abort
|
102
|
+
Log.warn "not implemented RemoteWorkflow::SSH.abort(@url, @input_id, @base_name)"
|
103
|
+
end
|
104
|
+
|
105
|
+
def input_dependencies
|
106
|
+
@input_dependencies ||= inputs.values.flatten.
|
107
|
+
select{|i| Step === i || (defined?(RemoteStep) && RemoteStep === i) } +
|
108
|
+
inputs.values.flatten.
|
109
|
+
select{|dep| Path === dep && Step === dep.resource }.
|
110
|
+
select{|dep| ! dep.resource.started? }. # Ignore input_deps already started
|
111
|
+
collect{|dep| dep.resource }
|
112
|
+
end
|
100
113
|
end
|
101
114
|
end
|
102
115
|
|
@@ -145,11 +145,12 @@ class Step
|
|
145
145
|
end
|
146
146
|
|
147
147
|
def input_dependencies
|
148
|
-
@input_dependencies ||=
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
148
|
+
@input_dependencies ||= recursive_inputs.flatten.
|
149
|
+
select{|i| Step === i || (defined?(RemoteStep) && RemoteStep === i) } +
|
150
|
+
recursive_inputs.flatten.
|
151
|
+
select{|dep| Path === dep && Step === dep.resource }.
|
152
|
+
select{|dep| ! dep.resource.started? }. # Ignore input_deps already started
|
153
|
+
collect{|dep| dep.resource }
|
153
154
|
end
|
154
155
|
|
155
156
|
def execute_dependency(dependency, log = true)
|
@@ -260,6 +261,9 @@ class Step
|
|
260
261
|
dep.produce
|
261
262
|
rescue RbbtException
|
262
263
|
Log.warn "Allowing failing of #{dep.path}: #{dep.messages.last if dep.messages}"
|
264
|
+
rescue Exception
|
265
|
+
Log.warn "Not Allowing failing of #{dep.path} because #{$!.class} not RbbtException"
|
266
|
+
raise $!
|
263
267
|
end
|
264
268
|
nil
|
265
269
|
end
|
@@ -447,13 +451,15 @@ class Step
|
|
447
451
|
compute_simple_dependencies = {}
|
448
452
|
compute_last_deps = {}
|
449
453
|
seen_paths = Set.new
|
450
|
-
rec_dependencies.uniq.each do |step|
|
454
|
+
rec_dependencies.uniq.reverse.each do |step|
|
451
455
|
next if seen_paths.include? step.path
|
452
456
|
seen_paths << step.path
|
453
457
|
next unless required_dep_paths.include? step.path
|
454
458
|
required_seen_paths = seen_paths & required_dep_paths
|
455
459
|
|
456
|
-
|
460
|
+
inputs = step.inputs
|
461
|
+
inputs = inputs.values if Hash === inputs
|
462
|
+
internal = inputs.select{|i| i.respond_to?(:path) && required_seen_paths.include?(i.path) }.any?
|
457
463
|
|
458
464
|
if ComputeDependency === step
|
459
465
|
next if produced.include? step.path
|
@@ -466,9 +472,9 @@ class Step
|
|
466
472
|
end
|
467
473
|
else
|
468
474
|
if internal
|
469
|
-
simple_dependencies.prepend(step)
|
470
|
-
else
|
471
475
|
simple_dependencies << step
|
476
|
+
else
|
477
|
+
simple_dependencies.prepend(step)
|
472
478
|
end
|
473
479
|
end
|
474
480
|
end
|
@@ -98,8 +98,10 @@ class Step
|
|
98
98
|
old = Signal.trap("INT"){ Thread.current.raise Aborted }
|
99
99
|
if @task.respond_to?(:exec_in)
|
100
100
|
@task.exec_in((bindings || self), *@inputs)
|
101
|
-
|
101
|
+
elsif @task
|
102
102
|
(bindings || self).instance_exec *@inputs, &@task
|
103
|
+
else
|
104
|
+
raise DependencyError, "Dependency #{self.path} cannot be produced"
|
103
105
|
end
|
104
106
|
ensure
|
105
107
|
Signal.trap("INT", old)
|
data/lib/rbbt/workflow.rb
CHANGED
@@ -490,8 +490,10 @@ module Workflow
|
|
490
490
|
end
|
491
491
|
end
|
492
492
|
|
493
|
+
overriden = true if dependencies.select{|d| d.overriden && d.clean_name != d.name }.any?
|
494
|
+
|
493
495
|
input_values = task.take_input_values(inputs)
|
494
|
-
if real_inputs.empty? && Workflow::TAG != :inputs && ! overriden
|
496
|
+
if real_inputs.empty? && Workflow::TAG != :inputs && ! overriden #&& ! dependencies.select{|d| d.overriden && d.clean_name != d.name }.any?
|
495
497
|
step_path = step_path taskname, jobname, [], [], extension
|
496
498
|
else
|
497
499
|
step_path = step_path taskname, jobname, input_values, dependencies, extension
|
@@ -428,15 +428,19 @@ begin
|
|
428
428
|
|
429
429
|
def match_dependencies(queries, dependencies)
|
430
430
|
queries = queries.collect{|q| q.include?("#") ? q.split("#") : q }
|
431
|
-
|
432
|
-
|
431
|
+
|
432
|
+
matched = []
|
433
|
+
queries.each do |q|
|
434
|
+
matched += dependencies.select do |dep|
|
433
435
|
if Array === q
|
434
436
|
q.first == dep.workflow.to_s && q.last == dep.task_name.to_s
|
435
437
|
else
|
436
438
|
q.to_s == dep.task_name.to_s
|
437
439
|
end
|
438
|
-
end
|
440
|
+
end
|
439
441
|
end
|
442
|
+
|
443
|
+
matched
|
440
444
|
end
|
441
445
|
|
442
446
|
if server = options.delete(:relay)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbbt-util
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.37.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
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
|
@@ -613,113 +557,113 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
613
557
|
- !ruby/object:Gem::Version
|
614
558
|
version: '0'
|
615
559
|
requirements: []
|
616
|
-
rubygems_version: 3.1.
|
560
|
+
rubygems_version: 3.1.4
|
617
561
|
signing_key:
|
618
562
|
specification_version: 4
|
619
563
|
summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
|
620
564
|
test_files:
|
621
|
-
- test/test_helper.rb
|
622
|
-
- test/rbbt/entity/test_identifiers.rb
|
623
|
-
- test/rbbt/test_resource.rb
|
624
|
-
- test/rbbt/test_association.rb
|
625
|
-
- test/rbbt/hpc/test_orchestrate.rb
|
626
|
-
- test/rbbt/hpc/test_slurm.rb
|
627
|
-
- test/rbbt/hpc/orchestrate/test_batches.rb
|
628
|
-
- test/rbbt/hpc/orchestrate/test_rules.rb
|
629
|
-
- test/rbbt/hpc/orchestrate/test_chains.rb
|
630
|
-
- test/rbbt/hpc/test_batch.rb
|
631
|
-
- test/rbbt/persist/test_tsv.rb
|
632
|
-
- test/rbbt/persist/tsv/test_kyotocabinet.rb
|
633
|
-
- test/rbbt/persist/tsv/test_lmdb.rb
|
634
|
-
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
635
|
-
- test/rbbt/persist/tsv/test_cdb.rb
|
636
|
-
- test/rbbt/persist/tsv/test_leveldb.rb
|
637
|
-
- test/rbbt/persist/tsv/test_sharder.rb
|
638
|
-
- test/rbbt/test_packed_index.rb
|
639
565
|
- test/rbbt/test_entity.rb
|
640
|
-
- test/rbbt/test_fix_width_table.rb
|
641
566
|
- test/rbbt/workflow/test_remote_workflow.rb
|
642
|
-
- test/rbbt/workflow/test_doc.rb
|
643
|
-
- test/rbbt/workflow/step/test_save_load_inputs.rb
|
644
|
-
- test/rbbt/workflow/step/test_dependencies.rb
|
645
|
-
- test/rbbt/workflow/test_schedule.rb
|
646
567
|
- test/rbbt/workflow/util/test_archive.rb
|
647
568
|
- test/rbbt/workflow/util/test_orchestrator.rb
|
648
569
|
- test/rbbt/workflow/util/test_data.rb
|
649
|
-
- test/rbbt/workflow/
|
570
|
+
- test/rbbt/workflow/test_doc.rb
|
571
|
+
- test/rbbt/workflow/test_schedule.rb
|
650
572
|
- test/rbbt/workflow/test_step.rb
|
651
|
-
- test/rbbt/
|
652
|
-
- test/rbbt/
|
653
|
-
- test/rbbt/
|
654
|
-
- test/rbbt/
|
655
|
-
- test/rbbt/util/test_simpleDSL.rb
|
656
|
-
- test/rbbt/util/concurrency/processes/test_socket.rb
|
657
|
-
- test/rbbt/util/concurrency/test_processes.rb
|
658
|
-
- test/rbbt/util/concurrency/test_threads.rb
|
659
|
-
- test/rbbt/util/test_filecache.rb
|
660
|
-
- test/rbbt/util/simpleopt/test_get.rb
|
661
|
-
- test/rbbt/util/simpleopt/test_parse.rb
|
662
|
-
- test/rbbt/util/simpleopt/test_setup.rb
|
663
|
-
- test/rbbt/util/test_misc.rb
|
664
|
-
- test/rbbt/util/test_excel2tsv.rb
|
665
|
-
- test/rbbt/util/test_semaphore.rb
|
666
|
-
- test/rbbt/util/test_procpath.rb
|
667
|
-
- test/rbbt/util/R/test_model.rb
|
668
|
-
- test/rbbt/util/R/test_eval.rb
|
669
|
-
- test/rbbt/util/R/test_plot.rb
|
670
|
-
- test/rbbt/util/test_open.rb
|
671
|
-
- test/rbbt/util/test_tmpfile.rb
|
672
|
-
- test/rbbt/util/test_cmd.rb
|
673
|
-
- test/rbbt/util/test_concurrency.rb
|
573
|
+
- test/rbbt/workflow/step/test_dependencies.rb
|
574
|
+
- test/rbbt/workflow/step/test_save_load_inputs.rb
|
575
|
+
- test/rbbt/workflow/test_task.rb
|
576
|
+
- test/rbbt/resource/test_path.rb
|
674
577
|
- test/rbbt/util/test_colorize.rb
|
675
|
-
- test/rbbt/util/
|
578
|
+
- test/rbbt/util/test_procpath.rb
|
676
579
|
- test/rbbt/util/python/test_util.rb
|
677
|
-
- test/rbbt/util/test_log.rb
|
678
|
-
- test/rbbt/util/test_simpleopt.rb
|
679
|
-
- test/rbbt/util/test_python.rb
|
680
|
-
- test/rbbt/util/test_chain_methods.rb
|
681
|
-
- test/rbbt/util/misc/test_omics.rb
|
682
|
-
- test/rbbt/util/misc/test_lock.rb
|
683
|
-
- test/rbbt/util/misc/test_multipart_payload.rb
|
684
|
-
- test/rbbt/util/misc/test_bgzf.rb
|
685
580
|
- test/rbbt/util/misc/test_development.rb
|
581
|
+
- test/rbbt/util/misc/test_omics.rb
|
582
|
+
- test/rbbt/util/misc/test_pipes.rb
|
686
583
|
- test/rbbt/util/misc/test_serialize.rb
|
687
584
|
- test/rbbt/util/misc/test_format.rb
|
688
585
|
- test/rbbt/util/misc/test_communication.rb
|
689
|
-
- test/rbbt/util/misc/
|
586
|
+
- test/rbbt/util/misc/test_lock.rb
|
587
|
+
- test/rbbt/util/misc/test_multipart_payload.rb
|
588
|
+
- test/rbbt/util/misc/test_bgzf.rb
|
589
|
+
- test/rbbt/util/test_concurrency.rb
|
590
|
+
- test/rbbt/util/test_cmd.rb
|
591
|
+
- test/rbbt/util/R/test_plot.rb
|
592
|
+
- test/rbbt/util/R/test_eval.rb
|
593
|
+
- test/rbbt/util/R/test_model.rb
|
594
|
+
- test/rbbt/util/test_config.rb
|
595
|
+
- test/rbbt/util/test_log.rb
|
596
|
+
- test/rbbt/util/test_simpleDSL.rb
|
690
597
|
- test/rbbt/util/log/test_progress.rb
|
598
|
+
- test/rbbt/util/test_tmpfile.rb
|
691
599
|
- test/rbbt/util/test_R.rb
|
692
|
-
- test/rbbt/
|
693
|
-
- test/rbbt/
|
694
|
-
- test/rbbt/
|
695
|
-
- test/rbbt/
|
696
|
-
- test/rbbt/
|
697
|
-
- test/rbbt/
|
698
|
-
- test/rbbt/
|
699
|
-
- test/rbbt/
|
700
|
-
- test/rbbt/
|
701
|
-
- test/rbbt/
|
702
|
-
- test/rbbt/
|
703
|
-
- test/rbbt/
|
704
|
-
- test/rbbt/
|
705
|
-
- test/rbbt/
|
706
|
-
- test/rbbt/
|
707
|
-
- test/rbbt/
|
708
|
-
- test/rbbt/
|
600
|
+
- test/rbbt/util/test_excel2tsv.rb
|
601
|
+
- test/rbbt/util/test_misc.rb
|
602
|
+
- test/rbbt/util/test_open.rb
|
603
|
+
- test/rbbt/util/test_simpleopt.rb
|
604
|
+
- test/rbbt/util/simpleopt/test_parse.rb
|
605
|
+
- test/rbbt/util/simpleopt/test_setup.rb
|
606
|
+
- test/rbbt/util/simpleopt/test_get.rb
|
607
|
+
- test/rbbt/util/test_python.rb
|
608
|
+
- test/rbbt/util/test_filecache.rb
|
609
|
+
- test/rbbt/util/concurrency/test_processes.rb
|
610
|
+
- test/rbbt/util/concurrency/test_threads.rb
|
611
|
+
- test/rbbt/util/concurrency/processes/test_socket.rb
|
612
|
+
- test/rbbt/util/test_semaphore.rb
|
613
|
+
- test/rbbt/util/test_chain_methods.rb
|
614
|
+
- test/rbbt/util/test_migrate.rb
|
615
|
+
- test/rbbt/test_resource.rb
|
616
|
+
- test/rbbt/test_packed_index.rb
|
617
|
+
- test/rbbt/tsv/test_change_id.rb
|
618
|
+
- test/rbbt/tsv/test_attach.rb
|
619
|
+
- test/rbbt/tsv/test_filter.rb
|
620
|
+
- test/rbbt/tsv/test_marshal.rb
|
709
621
|
- test/rbbt/tsv/test_parser.rb
|
710
622
|
- test/rbbt/tsv/test_csv.rb
|
711
|
-
- test/rbbt/tsv/
|
623
|
+
- test/rbbt/tsv/test_accessor.rb
|
624
|
+
- test/rbbt/tsv/test_matrix.rb
|
712
625
|
- test/rbbt/tsv/test_field_index.rb
|
713
626
|
- test/rbbt/tsv/test_util.rb
|
714
|
-
- test/rbbt/tsv/
|
715
|
-
- test/rbbt/tsv/test_filter.rb
|
716
|
-
- test/rbbt/tsv/test_stream.rb
|
627
|
+
- test/rbbt/tsv/test_index.rb
|
717
628
|
- test/rbbt/tsv/test_parallel.rb
|
718
|
-
- test/rbbt/tsv/
|
719
|
-
- test/rbbt/tsv/test_matrix.rb
|
720
|
-
- test/rbbt/tsv/test_attach.rb
|
629
|
+
- test/rbbt/tsv/test_manipulate.rb
|
721
630
|
- test/rbbt/tsv/test_excel.rb
|
722
|
-
- test/rbbt/tsv/test_change_id.rb
|
723
|
-
- test/rbbt/tsv/test_index.rb
|
724
|
-
- test/rbbt/tsv/parallel/test_traverse.rb
|
725
631
|
- test/rbbt/tsv/parallel/test_through.rb
|
632
|
+
- test/rbbt/tsv/parallel/test_traverse.rb
|
633
|
+
- test/rbbt/tsv/test_stream.rb
|
634
|
+
- test/rbbt/test_association.rb
|
635
|
+
- test/rbbt/hpc/test_batch.rb
|
636
|
+
- test/rbbt/hpc/orchestrate/test_chains.rb
|
637
|
+
- test/rbbt/hpc/orchestrate/test_rules.rb
|
638
|
+
- test/rbbt/hpc/orchestrate/test_batches.rb
|
639
|
+
- test/rbbt/hpc/test_slurm.rb
|
640
|
+
- test/rbbt/hpc/test_orchestrate.rb
|
641
|
+
- test/rbbt/association/test_database.rb
|
642
|
+
- test/rbbt/association/test_item.rb
|
643
|
+
- test/rbbt/association/test_open.rb
|
644
|
+
- test/rbbt/association/test_util.rb
|
645
|
+
- test/rbbt/association/test_index.rb
|
646
|
+
- test/rbbt/test_knowledge_base.rb
|
647
|
+
- test/rbbt/persist/tsv/test_kyotocabinet.rb
|
648
|
+
- test/rbbt/persist/tsv/test_cdb.rb
|
649
|
+
- test/rbbt/persist/tsv/test_lmdb.rb
|
650
|
+
- test/rbbt/persist/tsv/test_sharder.rb
|
651
|
+
- test/rbbt/persist/tsv/test_leveldb.rb
|
652
|
+
- test/rbbt/persist/tsv/test_tokyocabinet.rb
|
653
|
+
- test/rbbt/persist/test_tsv.rb
|
654
|
+
- test/rbbt/test_tsv.rb
|
655
|
+
- test/rbbt/test_annotations.rb
|
656
|
+
- test/rbbt/test_fix_width_table.rb
|
657
|
+
- test/rbbt/test_workflow.rb
|
658
|
+
- test/rbbt/entity/test_identifiers.rb
|
659
|
+
- test/rbbt/annotations/test_util.rb
|
660
|
+
- test/rbbt/test_hpc.rb
|
661
|
+
- test/rbbt/test_monitor.rb
|
662
|
+
- test/rbbt/test_persist.rb
|
663
|
+
- test/rbbt/knowledge_base/test_entity.rb
|
664
|
+
- test/rbbt/knowledge_base/test_registry.rb
|
665
|
+
- test/rbbt/knowledge_base/test_syndicate.rb
|
666
|
+
- test/rbbt/knowledge_base/test_query.rb
|
667
|
+
- test/rbbt/knowledge_base/test_enrichment.rb
|
668
|
+
- test/rbbt/knowledge_base/test_traverse.rb
|
669
|
+
- test/test_helper.rb
|