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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d105d6c21ad018f28acf6a234feae8d81f327f3f94f228c01f118abed6c386f6
4
- data.tar.gz: 5c883e0611f02203d394ec02e448664efdc42361be04e9d873e9ba3f5e6cc92e
3
+ metadata.gz: 281f115df5158fada081c65b87e292e69e4f378b8353d6e2542b3c45db0c03f1
4
+ data.tar.gz: e9801707391c731a2a4b4ead8156cff82fdf30c4e769a8bed34d1d77185b447a
5
5
  SHA512:
6
- metadata.gz: 20a4bccdeb0c587041b7f20f09bda19949713fcb362911a249b08112399c09178f8e50b5ae90f390bd6cd1389b3c9a47b7374c4fc05a83b073f1d43bdfdc6611
7
- data.tar.gz: 1b3b112106b4ac1e261bcf1630ecaeea0ed27f1975aeead9694708241e9268fdac36da4f5b4be25c12288cb7f97b8b4163815b8d9010aba40f6f2434e654f99c
6
+ metadata.gz: 3da2876b28c245b27f32b6dbd00188bdeea498fb118ccab048fb5d72925548e5e89926dea6b6316573e9d95a570c07983109e0e09de92360ec89ab2aec088439
7
+ data.tar.gz: 0166d47c3198bfc4c636a1f47ac9be1d2a64b8d97a2836166b02d1ac17d46c2b835ad210953da586f15a98f8593e18f6010ebc07220e95da149dcabec44b33a9
@@ -28,6 +28,7 @@ class RbbtProcessQueue
28
28
 
29
29
 
30
30
  def dump(obj, stream)
31
+ obj.concurrent_stream = nil if obj.respond_to?(:concurrent_stream)
31
32
  case obj
32
33
  when Annotated
33
34
  payload = @serializer.dump(obj)
@@ -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
- Log.exception $!
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
- @callback_thread = Thread.new do
219
- begin
220
- loop do
221
- p = @callback_queue.pop unless @callback_queue.cleaned
220
+ @callback_thread = Thread.new do
221
+ begin
222
+ loop do
223
+ p = @callback_queue.pop unless @callback_queue.cleaned
222
224
 
223
- if Exception === p or (Array === p and Exception === p.first)
224
- e = Array === p ? p.first : p
225
- Log.low "Callback recieved exception from worker: #{e.message}" unless Aborted === e or ClosedStream === e
226
- raise e
227
- end
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
- if @callback.arity == 0
230
- @callback.call
231
- else
232
- @callback.call p
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
- rescue ClosedStream
236
- Log.low "Callback thread closing"
237
- rescue Aborted
238
- Log.low "Callback thread aborted"
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
- job = d[:workflow]._job(d[:task], d[:jobname], _inputs)
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
- job = dep[:workflow]._job(dep[:task], dep[:jobname], _inputs)
254
- job = d[:workflow]._job(d[:task], d[:jobname], _inputs)
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
- workflow = Kernel.const_get(workflow) if String === workflow
28
- workflow.respond_to?(:complete_name) ? workflow.complete_name : workflow
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
- paths = Dir.glob(File.join(dir, "*.as_step")).collect{|f| Open.read(f).strip }
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
- paths.zip(new).each{|file,new| Open.write(file, new) }
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 if produce_dependencies
233
+ end
233
234
 
234
235
  migrate_dependencies = job.rec_dependencies.select{|d| d.done? }.collect{|d| d.path }
235
- Log.medium "Migrating #{migrate_dependencies.length} dependencies to #{ server }"
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 ||= (recursive_inputs.flatten.select{|i| Step === i } +
149
- recursive_inputs.flatten.
150
- select{|dep| Path === dep && Step === dep.resource }.
151
- select{|dep| ! dep.resource.started? }. # Ignore input_deps already started
152
- collect{|dep| dep.resource })
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
- internal = step.inputs.select{|i| Step == i && required_paths.include?(i.path) && seen_paths.include?(i.path) }
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
- else
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
- dependencies.select do |dep|
432
- queries.select do |q|
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.any?
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.36.0
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-02 00:00:00.000000000 Z
11
+ date: 2023-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: progress-monitor
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: lockfile
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,34 +38,6 @@ dependencies:
52
38
  - - ">="
53
39
  - !ruby/object:Gem::Version
54
40
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: spreadsheet
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rubyXL
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
41
  - !ruby/object:Gem::Dependency
84
42
  name: highline
85
43
  requirement: !ruby/object:Gem::Requirement
@@ -122,20 +80,6 @@ dependencies:
122
80
  - - ">="
123
81
  - !ruby/object:Gem::Version
124
82
  version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rest-client
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
83
  - !ruby/object:Gem::Dependency
140
84
  name: to_regexp
141
85
  requirement: !ruby/object:Gem::Requirement
@@ -613,113 +557,113 @@ required_rubygems_version: !ruby/object:Gem::Requirement
613
557
  - !ruby/object:Gem::Version
614
558
  version: '0'
615
559
  requirements: []
616
- rubygems_version: 3.1.2
560
+ rubygems_version: 3.1.4
617
561
  signing_key:
618
562
  specification_version: 4
619
563
  summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
620
564
  test_files:
621
- - test/test_helper.rb
622
- - test/rbbt/entity/test_identifiers.rb
623
- - test/rbbt/test_resource.rb
624
- - test/rbbt/test_association.rb
625
- - test/rbbt/hpc/test_orchestrate.rb
626
- - test/rbbt/hpc/test_slurm.rb
627
- - test/rbbt/hpc/orchestrate/test_batches.rb
628
- - test/rbbt/hpc/orchestrate/test_rules.rb
629
- - test/rbbt/hpc/orchestrate/test_chains.rb
630
- - test/rbbt/hpc/test_batch.rb
631
- - test/rbbt/persist/test_tsv.rb
632
- - test/rbbt/persist/tsv/test_kyotocabinet.rb
633
- - test/rbbt/persist/tsv/test_lmdb.rb
634
- - test/rbbt/persist/tsv/test_tokyocabinet.rb
635
- - test/rbbt/persist/tsv/test_cdb.rb
636
- - test/rbbt/persist/tsv/test_leveldb.rb
637
- - test/rbbt/persist/tsv/test_sharder.rb
638
- - test/rbbt/test_packed_index.rb
639
565
  - test/rbbt/test_entity.rb
640
- - test/rbbt/test_fix_width_table.rb
641
566
  - test/rbbt/workflow/test_remote_workflow.rb
642
- - test/rbbt/workflow/test_doc.rb
643
- - test/rbbt/workflow/step/test_save_load_inputs.rb
644
- - test/rbbt/workflow/step/test_dependencies.rb
645
- - test/rbbt/workflow/test_schedule.rb
646
567
  - test/rbbt/workflow/util/test_archive.rb
647
568
  - test/rbbt/workflow/util/test_orchestrator.rb
648
569
  - test/rbbt/workflow/util/test_data.rb
649
- - test/rbbt/workflow/test_task.rb
570
+ - test/rbbt/workflow/test_doc.rb
571
+ - test/rbbt/workflow/test_schedule.rb
650
572
  - test/rbbt/workflow/test_step.rb
651
- - test/rbbt/test_tsv.rb
652
- - test/rbbt/test_annotations.rb
653
- - test/rbbt/test_knowledge_base.rb
654
- - test/rbbt/util/test_migrate.rb
655
- - test/rbbt/util/test_simpleDSL.rb
656
- - test/rbbt/util/concurrency/processes/test_socket.rb
657
- - test/rbbt/util/concurrency/test_processes.rb
658
- - test/rbbt/util/concurrency/test_threads.rb
659
- - test/rbbt/util/test_filecache.rb
660
- - test/rbbt/util/simpleopt/test_get.rb
661
- - test/rbbt/util/simpleopt/test_parse.rb
662
- - test/rbbt/util/simpleopt/test_setup.rb
663
- - test/rbbt/util/test_misc.rb
664
- - test/rbbt/util/test_excel2tsv.rb
665
- - test/rbbt/util/test_semaphore.rb
666
- - test/rbbt/util/test_procpath.rb
667
- - test/rbbt/util/R/test_model.rb
668
- - test/rbbt/util/R/test_eval.rb
669
- - test/rbbt/util/R/test_plot.rb
670
- - test/rbbt/util/test_open.rb
671
- - test/rbbt/util/test_tmpfile.rb
672
- - test/rbbt/util/test_cmd.rb
673
- - test/rbbt/util/test_concurrency.rb
573
+ - test/rbbt/workflow/step/test_dependencies.rb
574
+ - test/rbbt/workflow/step/test_save_load_inputs.rb
575
+ - test/rbbt/workflow/test_task.rb
576
+ - test/rbbt/resource/test_path.rb
674
577
  - test/rbbt/util/test_colorize.rb
675
- - test/rbbt/util/test_config.rb
578
+ - test/rbbt/util/test_procpath.rb
676
579
  - test/rbbt/util/python/test_util.rb
677
- - test/rbbt/util/test_log.rb
678
- - test/rbbt/util/test_simpleopt.rb
679
- - test/rbbt/util/test_python.rb
680
- - test/rbbt/util/test_chain_methods.rb
681
- - test/rbbt/util/misc/test_omics.rb
682
- - test/rbbt/util/misc/test_lock.rb
683
- - test/rbbt/util/misc/test_multipart_payload.rb
684
- - test/rbbt/util/misc/test_bgzf.rb
685
580
  - test/rbbt/util/misc/test_development.rb
581
+ - test/rbbt/util/misc/test_omics.rb
582
+ - test/rbbt/util/misc/test_pipes.rb
686
583
  - test/rbbt/util/misc/test_serialize.rb
687
584
  - test/rbbt/util/misc/test_format.rb
688
585
  - test/rbbt/util/misc/test_communication.rb
689
- - test/rbbt/util/misc/test_pipes.rb
586
+ - test/rbbt/util/misc/test_lock.rb
587
+ - test/rbbt/util/misc/test_multipart_payload.rb
588
+ - test/rbbt/util/misc/test_bgzf.rb
589
+ - test/rbbt/util/test_concurrency.rb
590
+ - test/rbbt/util/test_cmd.rb
591
+ - test/rbbt/util/R/test_plot.rb
592
+ - test/rbbt/util/R/test_eval.rb
593
+ - test/rbbt/util/R/test_model.rb
594
+ - test/rbbt/util/test_config.rb
595
+ - test/rbbt/util/test_log.rb
596
+ - test/rbbt/util/test_simpleDSL.rb
690
597
  - test/rbbt/util/log/test_progress.rb
598
+ - test/rbbt/util/test_tmpfile.rb
691
599
  - test/rbbt/util/test_R.rb
692
- - test/rbbt/test_workflow.rb
693
- - test/rbbt/knowledge_base/test_entity.rb
694
- - test/rbbt/knowledge_base/test_enrichment.rb
695
- - test/rbbt/knowledge_base/test_traverse.rb
696
- - test/rbbt/knowledge_base/test_syndicate.rb
697
- - test/rbbt/knowledge_base/test_registry.rb
698
- - test/rbbt/knowledge_base/test_query.rb
699
- - test/rbbt/association/test_item.rb
700
- - test/rbbt/association/test_util.rb
701
- - test/rbbt/association/test_open.rb
702
- - test/rbbt/association/test_database.rb
703
- - test/rbbt/association/test_index.rb
704
- - test/rbbt/annotations/test_util.rb
705
- - test/rbbt/test_monitor.rb
706
- - test/rbbt/resource/test_path.rb
707
- - test/rbbt/test_hpc.rb
708
- - test/rbbt/test_persist.rb
600
+ - test/rbbt/util/test_excel2tsv.rb
601
+ - test/rbbt/util/test_misc.rb
602
+ - test/rbbt/util/test_open.rb
603
+ - test/rbbt/util/test_simpleopt.rb
604
+ - test/rbbt/util/simpleopt/test_parse.rb
605
+ - test/rbbt/util/simpleopt/test_setup.rb
606
+ - test/rbbt/util/simpleopt/test_get.rb
607
+ - test/rbbt/util/test_python.rb
608
+ - test/rbbt/util/test_filecache.rb
609
+ - test/rbbt/util/concurrency/test_processes.rb
610
+ - test/rbbt/util/concurrency/test_threads.rb
611
+ - test/rbbt/util/concurrency/processes/test_socket.rb
612
+ - test/rbbt/util/test_semaphore.rb
613
+ - test/rbbt/util/test_chain_methods.rb
614
+ - test/rbbt/util/test_migrate.rb
615
+ - test/rbbt/test_resource.rb
616
+ - test/rbbt/test_packed_index.rb
617
+ - test/rbbt/tsv/test_change_id.rb
618
+ - test/rbbt/tsv/test_attach.rb
619
+ - test/rbbt/tsv/test_filter.rb
620
+ - test/rbbt/tsv/test_marshal.rb
709
621
  - test/rbbt/tsv/test_parser.rb
710
622
  - test/rbbt/tsv/test_csv.rb
711
- - test/rbbt/tsv/test_manipulate.rb
623
+ - test/rbbt/tsv/test_accessor.rb
624
+ - test/rbbt/tsv/test_matrix.rb
712
625
  - test/rbbt/tsv/test_field_index.rb
713
626
  - test/rbbt/tsv/test_util.rb
714
- - test/rbbt/tsv/test_accessor.rb
715
- - test/rbbt/tsv/test_filter.rb
716
- - test/rbbt/tsv/test_stream.rb
627
+ - test/rbbt/tsv/test_index.rb
717
628
  - test/rbbt/tsv/test_parallel.rb
718
- - test/rbbt/tsv/test_marshal.rb
719
- - test/rbbt/tsv/test_matrix.rb
720
- - test/rbbt/tsv/test_attach.rb
629
+ - test/rbbt/tsv/test_manipulate.rb
721
630
  - test/rbbt/tsv/test_excel.rb
722
- - test/rbbt/tsv/test_change_id.rb
723
- - test/rbbt/tsv/test_index.rb
724
- - test/rbbt/tsv/parallel/test_traverse.rb
725
631
  - test/rbbt/tsv/parallel/test_through.rb
632
+ - test/rbbt/tsv/parallel/test_traverse.rb
633
+ - test/rbbt/tsv/test_stream.rb
634
+ - test/rbbt/test_association.rb
635
+ - test/rbbt/hpc/test_batch.rb
636
+ - test/rbbt/hpc/orchestrate/test_chains.rb
637
+ - test/rbbt/hpc/orchestrate/test_rules.rb
638
+ - test/rbbt/hpc/orchestrate/test_batches.rb
639
+ - test/rbbt/hpc/test_slurm.rb
640
+ - test/rbbt/hpc/test_orchestrate.rb
641
+ - test/rbbt/association/test_database.rb
642
+ - test/rbbt/association/test_item.rb
643
+ - test/rbbt/association/test_open.rb
644
+ - test/rbbt/association/test_util.rb
645
+ - test/rbbt/association/test_index.rb
646
+ - test/rbbt/test_knowledge_base.rb
647
+ - test/rbbt/persist/tsv/test_kyotocabinet.rb
648
+ - test/rbbt/persist/tsv/test_cdb.rb
649
+ - test/rbbt/persist/tsv/test_lmdb.rb
650
+ - test/rbbt/persist/tsv/test_sharder.rb
651
+ - test/rbbt/persist/tsv/test_leveldb.rb
652
+ - test/rbbt/persist/tsv/test_tokyocabinet.rb
653
+ - test/rbbt/persist/test_tsv.rb
654
+ - test/rbbt/test_tsv.rb
655
+ - test/rbbt/test_annotations.rb
656
+ - test/rbbt/test_fix_width_table.rb
657
+ - test/rbbt/test_workflow.rb
658
+ - test/rbbt/entity/test_identifiers.rb
659
+ - test/rbbt/annotations/test_util.rb
660
+ - test/rbbt/test_hpc.rb
661
+ - test/rbbt/test_monitor.rb
662
+ - test/rbbt/test_persist.rb
663
+ - test/rbbt/knowledge_base/test_entity.rb
664
+ - test/rbbt/knowledge_base/test_registry.rb
665
+ - test/rbbt/knowledge_base/test_syndicate.rb
666
+ - test/rbbt/knowledge_base/test_query.rb
667
+ - test/rbbt/knowledge_base/test_enrichment.rb
668
+ - test/rbbt/knowledge_base/test_traverse.rb
669
+ - test/test_helper.rb