rbbt-util 5.38.1 → 5.39.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1121593dec25c29d7986047727d555ed0e75df6b158f9f1332764ad4886462c5
4
- data.tar.gz: c8e39ef65e23445cf5d0c8817af961a9206016c5e3665d87e042f0fadec2b8df
3
+ metadata.gz: 12c5401cf3ecb8495ba5c21d0f3d3f35c741c1c335ffa0d3a7d3ee498f6daae8
4
+ data.tar.gz: 344f30b6651a272f5e9665d3ec6383b4a1d62ba7c64c7889af5cfc573b2285ac
5
5
  SHA512:
6
- metadata.gz: 22c87766544a52c9c6f0d6da369422a452f553d1a61b82a54674f676a3867a6c1d29028c2efd031563f982cdadbce56d36950c8e100bd34ac2a7e95b39af8a58
7
- data.tar.gz: 0a79edc89dad388bca9b94dfeccba1df64c4294e84c4f19743608038e55f8800181911d787980adae3ec1c715a993430ccbf2bc07d6212485b89843ada93de74
6
+ metadata.gz: 6e8305e1f3e74eeff9e5892592bc66bfc9aac3baa505503942b266c3de996408a9210fcfaa2f6073800fc763bf3cdf5b8f39a50a920696402657d2928a9add8f
7
+ data.tar.gz: 511c72833b4a8ef747e574376d44a3b4799f96f6a922301d3f405df1cd7aac79a2d2de388075aaab4fc3ef6962ee66ded3de8684227912399f41f7ad00006148
data/lib/rbbt/resource.rb CHANGED
@@ -354,7 +354,7 @@ url='#{url}'
354
354
  path = File.expand_path(path)
355
355
  path += "/" if File.directory?(path)
356
356
  resource ||= Rbbt
357
- locations = (Path::STANDARD_SEARCH + resource.search_order + resource.search_paths.keys)
357
+ locations = (Path::STANDARD_SEARCH + resource.search_order + resource.search_paths.keys).uniq
358
358
  locations -= [:current, "current"]
359
359
  locations << :current
360
360
  search_paths = IndiferentHash.setup(resource.search_paths)
@@ -374,7 +374,11 @@ url='#{url}'
374
374
  if ! m.named_captures.include?("PKGDIR") || m["PKGDIR"] == resource.pkgdir
375
375
  unlocated = ([m["TOPLEVEL"],m["SUBPATH"],m["REST"]] * "/")
376
376
  unlocated.gsub!(/\/+/,'/')
377
- unlocated[self.subdir] = "" if self.subdir
377
+ if self.subdir && ! self.subdir.empty?
378
+ subdir = self.subdir
379
+ subdir += "/" unless subdir.end_with?("/")
380
+ unlocated[subdir] = ""
381
+ end
378
382
  choices << self.annotate(unlocated)
379
383
  end
380
384
  end
data/lib/rbbt/tsv/util.rb CHANGED
@@ -400,5 +400,9 @@ module TSV
400
400
  end
401
401
  index
402
402
  end
403
+
404
+ def merge(other)
405
+ self.annotate(super(other))
406
+ end
403
407
  end
404
408
 
data/lib/rbbt/util/cmd.rb CHANGED
@@ -22,13 +22,17 @@ module CMD
22
22
  return tool.to_s unless TOOLS[tool]
23
23
 
24
24
  @@init_cmd_tool ||= IndiferentHash.setup({})
25
+
26
+ claim, test, block, cmd = TOOLS[tool]
27
+ cmd = tool.to_s if cmd.nil?
28
+
25
29
  if !@@init_cmd_tool[tool]
26
- claim, test, block, cmd = TOOLS[tool]
30
+
27
31
  begin
28
32
  if test
29
33
  CMD.cmd(test + " ")
30
34
  else
31
- CMD.cmd("#{tool} --help")
35
+ CMD.cmd("#{cmd} --help")
32
36
  end
33
37
  rescue
34
38
  if claim
@@ -41,7 +45,7 @@ module CMD
41
45
  version = nil
42
46
  ["--version", "-version", "--help", ""].each do |f|
43
47
  begin
44
- version_txt += CMD.cmd("#{tool} #{f} 2>&1", :nofail => true).read
48
+ version_txt += CMD.cmd("#{cmd} #{f} 2>&1", :nofail => true).read
45
49
  version = Misc.scan_version_text(version_txt, tool)
46
50
  break if version
47
51
  rescue
@@ -54,7 +58,7 @@ module CMD
54
58
  return cmd if cmd
55
59
  end
56
60
 
57
- tool.to_s
61
+ cmd
58
62
  end
59
63
 
60
64
  def self.versions
@@ -245,7 +245,7 @@ class RbbtProcessQueue
245
245
  end
246
246
  end if @callback_queue
247
247
 
248
- @callback_thread.report_on_exception = false
248
+ @callback_thread.report_on_exception = false if @callback_thread
249
249
 
250
250
  end
251
251
 
@@ -1,6 +1,5 @@
1
1
  module Rbbt
2
2
 
3
- prepare_for_execution(job)
4
3
  def self.migrate_source_paths(path, resource = Rbbt, source = nil)
5
4
  if source
6
5
  lpath, *paths = Misc.ssh_run(source, <<-EOF).split("\n")
@@ -60,7 +59,7 @@ puts resource[path].find(search_path)
60
59
  test_str = options[:test] ? '-nv' : ''
61
60
 
62
61
  real_paths.each do |source_path|
63
- Log.medium "Migrating #{source_path} #{options[:files].length} files to #{target} - #{Misc.fingerprint(options[:files])}}" if options[:files]
62
+ Log.low "Migrating #{source_path} #{options[:files].length} files to #{target} - #{Misc.fingerprint(options[:files])}}" if options[:files]
64
63
  if File.directory?(source_path) || source_path.end_with?("/")
65
64
  source_path += "/" unless source_path.end_with? '/'
66
65
  target += "/" unless target.end_with? '/'
@@ -455,6 +455,7 @@ module Misc
455
455
  end
456
456
 
457
457
  def self.scan_version_text(text, cmd = nil)
458
+ text = Misc.fixutf8 text
458
459
  cmd = "NOCMDGIVE" if cmd.nil? || cmd.empty?
459
460
  text.split("\n").each do |line|
460
461
  next unless line =~ /\W#{cmd}\W/i
@@ -530,16 +530,22 @@ module Open
530
530
 
531
531
  def self.gzip?(file)
532
532
  file = file.find if Path === file
533
+ file = file.filename if File === file
534
+ return false unless String === file
533
535
  !! (file =~ /\.gz$/)
534
536
  end
535
537
 
536
538
  def self.bgzip?(file)
537
539
  file = file.find if Path === file
540
+ file = file.filename if File === file
541
+ return false unless String === file
538
542
  !! (file =~ /\.bgz$/)
539
543
  end
540
544
 
541
545
  def self.zip?(file)
542
546
  file = file.find if Path === file
547
+ file = file.filename if File === file
548
+ return false unless String === file
543
549
  !! (file =~ /\.zip$/)
544
550
  end
545
551
 
data/lib/rbbt/util/ssh.rb CHANGED
@@ -9,7 +9,7 @@ class SSHLine
9
9
  @ssh = Net::SSH.start(@host, @user)
10
10
 
11
11
  @ch = @ssh.open_channel do |ch|
12
- ch.exec 'bash'
12
+ ch.exec 'bash -l'
13
13
  end
14
14
 
15
15
  @ch.on_data do |_,data|
@@ -253,7 +253,7 @@ job.clean
253
253
  Step.wait_for_jobs missing_deps
254
254
 
255
255
  migrate_dependencies = all_deps.keys.collect{|d| [d] + d.rec_dependencies + d.input_dependencies }.flatten.select{|d| d.done? }.collect{|d| d.path }
256
- Log.medium "Migrating #{migrate_dependencies.length} dependencies from #{Misc.fingerprint job_list} to #{ server }"
256
+ Log.low "Migrating #{migrate_dependencies.length} dependencies from #{Misc.fingerprint job_list} to #{ server }"
257
257
  Step.migrate(migrate_dependencies, search_path, :target => server) if migrate_dependencies.any?
258
258
  end
259
259
 
@@ -145,9 +145,9 @@ class Step
145
145
  end
146
146
 
147
147
  def input_dependencies
148
- @input_dependencies ||= recursive_inputs.flatten.
148
+ @input_dependencies ||= recursive_inputs(true).flatten.
149
149
  select{|i| Step === i || (defined?(RemoteStep) && RemoteStep === i) } +
150
- recursive_inputs.flatten.
150
+ recursive_inputs(true).flatten.
151
151
  select{|dep| Path === dep && Step === dep.resource }.
152
152
  #select{|dep| ! dep.resource.started? }. # Ignore input_deps already started
153
153
  collect{|dep| dep.resource }
@@ -581,7 +581,6 @@ class Step
581
581
  #but dependencies are absent, meanining that the file could have been dropped
582
582
  #in
583
583
  def rec_dependencies(connected = false, seen = [])
584
-
585
584
  # A step result with no info_file means that it was manually
586
585
  # placed. In that case, do not consider its dependencies
587
586
  return [] if ! (defined? WorkflowRemoteClient && WorkflowRemoteClient::RemoteStep === self) && ! Open.exists?(self.info_file) && Open.exists?(self.path.to_s)
@@ -599,7 +598,7 @@ class Step
599
598
  #next if self.done? && Open.exists?(info_file) && info[:dependencies] && info[:dependencies].select{|task,name,path| path == step.path }.empty?
600
599
  next if archived_deps.include? step.path
601
600
  next if seen.include? step
602
- next if self.done? && connected && ! updatable?
601
+ next if step.done? && connected && ! step.updatable?
603
602
 
604
603
  r = step.rec_dependencies(connected, new_dependencies)
605
604
  new_dependencies.concat r
@@ -90,7 +90,7 @@ class Step
90
90
  end
91
91
  end
92
92
 
93
- def recursive_inputs
93
+ def recursive_inputs(connected = false)
94
94
  if NamedArray === inputs
95
95
  i = {}
96
96
  inputs.zip(inputs.fields).each do |v,f|
@@ -99,7 +99,7 @@ class Step
99
99
  else
100
100
  i = {}
101
101
  end
102
- rec_dependencies.each do |dep|
102
+ rec_dependencies(connected).each do |dep|
103
103
  next unless NamedArray === dep.inputs
104
104
 
105
105
  dep.inputs.zip(dep.inputs.fields).each do |v,f|
@@ -20,7 +20,7 @@ module Task
20
20
  task_inputs = dep_inputs deps, workflow
21
21
  task_inputs.each do |task,new_inputs|
22
22
  new_inputs.zip(task.input_types.values_at(*new_inputs)).select do |i,t|
23
- t.to_sym == :select and task.input_options[i][:select_options]
23
+ t.to_sym == :select && task.input_options.include?(i) && task.input_options[i][:select_options]
24
24
  end.each do |i,t|
25
25
  selects << [i, task.input_options[i][:select_options]]
26
26
  end
@@ -81,7 +81,8 @@ module Workflow
81
81
 
82
82
  def self.plot_trace_job_times(data, plot, width=800, height=800)
83
83
  data.R <<-EOF, [:svg]
84
- rbbt.require('tidyverse')
84
+ rbbt.require('dplyr')
85
+ rbbt.require('tidyr')
85
86
  rbbt.require('ggplot2')
86
87
 
87
88
  names(data) <- make.names(names(data))
data/lib/rbbt/workflow.rb CHANGED
@@ -23,7 +23,7 @@ module Workflow
23
23
 
24
24
  #{{{ WORKFLOW MANAGEMENT
25
25
  class << self
26
- attr_accessor :workflows, :autoinstall, :workflow_dir
26
+ attr_accessor :workflows, :autoinstall, :workflow_dir, :main
27
27
  end
28
28
 
29
29
  self.workflows = []
@@ -202,13 +202,14 @@ module Workflow
202
202
 
203
203
  first = nil
204
204
  wf_name.split("+").each do |wf_name|
205
+ self.main = nil
205
206
  require_local_workflow(wf_name) or
206
207
  (Workflow.autoinstall and `rbbt workflow install #{Misc.snake_case(wf_name)} || rbbt workflow install #{wf_name}` and require_local_workflow(wf_name)) or raise("Workflow not found or could not be loaded: #{ wf_name }")
207
208
 
208
209
  workflow = begin
209
210
  Misc.string2const Misc.camel_case(wf_name)
210
211
  rescue
211
- Workflow.workflows.last || true
212
+ self.main || Workflow.workflows.last
212
213
  end
213
214
  workflow.load_documentation
214
215
 
@@ -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
+
@@ -220,8 +220,8 @@ The `recursive_clean` cleans all the job dependency steps recursively.
220
220
  -rwt--remote_workflow_tasks* Load a yaml file describing remote workflow tasks
221
221
  -od--override_deps* Override deps using 'Workflow#task=<path>' array_separated
222
222
  -PERF--procpath_performance* Measure performance using procpath
223
- -r--relay* Relay job to SSH server
224
- -sr--slurm_relay* Relay job to SSH SLURM server
223
+ --relay* Relay job to SSH server
224
+ --slurm_relay* Relay job to SSH SLURM server
225
225
  -rdep--relay_dependencies* Relay dependencies instead of main job
226
226
  -pdr--produce_dependencies_for_relay Prepare dependencies previous to relay jobs
227
227
  EOF
@@ -302,7 +302,7 @@ b 2
302
302
  EOF
303
303
 
304
304
  TmpFile.with_file(content) do |filename|
305
- tsv = TSV.open(filename, :key_field => "Value", :select => Proc.new{|l| ! l =~ /1/})
305
+ tsv = TSV.open(filename, :key_field => "Value", :select => Proc.new{|l| l !~ /1/})
306
306
  assert(! tsv.include?("3"))
307
307
  end
308
308
  end
@@ -650,5 +650,20 @@ row3 AA BB|BBB Id3|Id2
650
650
 
651
651
  end
652
652
  end
653
+
654
+ def test_benchmark
655
+ num = 10_000
656
+ txt = num.times.inject(nil) do |acc,i|
657
+ (acc.nil? ? "" : acc << "\n") << (0..10).collect{|v| v == 0 ? i : [v,v] * "|" } * "\t"
658
+ end
659
+
660
+ txt = StringIO.new(([txt] * (10))*"\n")
661
+ #Misc.profile do
662
+ Misc.benchmark(1) do
663
+ data = TSV.open(txt, type: :double, bar: true, merge: true)
664
+ assert_equal num, data.size
665
+ end
666
+ end
667
+
653
668
  end
654
669
 
@@ -50,11 +50,11 @@ class TestTSVParallelThrough < Test::Unit::TestCase
50
50
  def test_traverse_stream
51
51
  require 'rbbt/sources/organism'
52
52
 
53
- head = 1000
53
+ head = 3000
54
54
 
55
55
  tsv = datafile_test('identifiers').open
56
56
  res = {}
57
- TSV.traverse tsv, :head => head, :into => res do |k,v|
57
+ TSV.traverse tsv, :head => head, :into => res, :bar => true do |k,v|
58
58
  [k,v]
59
59
  end
60
60
 
@@ -35,4 +35,18 @@ row2 A B Id3
35
35
  assert_equal %w(aa bb Id2), tsv.unzip_replicates["row1(1)"]
36
36
  end
37
37
  end
38
+
39
+ def test_merge
40
+ content =<<-EOF
41
+ #Id ValueA ValueB OtherID
42
+ row1 a|aa|aaa b|bb|bbb Id1|Id2|Id3
43
+ row2 A B Id3
44
+ EOF
45
+
46
+ TmpFile.with_file(content) do |filename|
47
+ tsv = TSV.open(filename, :sep => /\s+/)
48
+ tsv = tsv.merge({"row3" => [["A3"], ["B3"], ["Id4"]]})
49
+ assert TSV === tsv
50
+ end
51
+ end
38
52
  end
@@ -3,9 +3,9 @@ require 'rbbt-util'
3
3
  require 'rbbt/util/migrate'
4
4
 
5
5
  class TestMigrate < Test::Unit::TestCase
6
- def _test_source_locate
6
+ def test_source_locate
7
7
  assert_equal 'var/jobs/', Rbbt.migrate_source_paths(Rbbt.root['var/jobs'].find(:user)).last
8
- assert Rbbt.migrate_source_paths(Rbbt.root['var/jobs'].find(:user))[1].include?(File.join(ENV["HOME"], '.rbbt/var/jobs/'))
8
+ assert_include Rbbt.migrate_source_paths(Rbbt.root['var/jobs'].find(:user))[1], (File.join(ENV["HOME"], '.rbbt/var/jobs'))
9
9
  end
10
10
 
11
11
  def test_migrate
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.38.1
4
+ version: 5.39.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-01 00:00:00.000000000 Z
11
+ date: 2023-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -390,6 +390,7 @@ files:
390
390
  - share/rbbt_commands/migrate
391
391
  - share/rbbt_commands/migrate_job
392
392
  - share/rbbt_commands/purge_job
393
+ - share/rbbt_commands/resource/claims
393
394
  - share/rbbt_commands/resource/exists
394
395
  - share/rbbt_commands/resource/find
395
396
  - share/rbbt_commands/resource/get
@@ -594,110 +595,110 @@ signing_key:
594
595
  specification_version: 4
595
596
  summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
596
597
  test_files:
597
- - test/rbbt/test_entity.rb
598
- - test/rbbt/workflow/test_remote_workflow.rb
599
- - test/rbbt/workflow/util/test_archive.rb
600
- - test/rbbt/workflow/util/test_orchestrator.rb
601
- - test/rbbt/workflow/util/test_data.rb
602
- - test/rbbt/workflow/test_doc.rb
603
- - test/rbbt/workflow/test_schedule.rb
604
- - test/rbbt/workflow/test_step.rb
605
- - test/rbbt/workflow/step/test_dependencies.rb
606
- - test/rbbt/workflow/step/test_save_load_inputs.rb
607
- - test/rbbt/workflow/test_task.rb
608
- - test/rbbt/resource/test_path.rb
609
- - test/rbbt/util/test_colorize.rb
610
- - test/rbbt/util/test_procpath.rb
611
- - test/rbbt/util/python/test_util.rb
612
- - test/rbbt/util/misc/test_development.rb
613
- - test/rbbt/util/misc/test_indiferent_hash.rb
614
- - test/rbbt/util/misc/test_omics.rb
615
- - test/rbbt/util/misc/test_pipes.rb
616
- - test/rbbt/util/misc/test_serialize.rb
617
- - test/rbbt/util/misc/test_format.rb
618
- - test/rbbt/util/misc/test_communication.rb
619
- - test/rbbt/util/misc/test_lock.rb
620
- - test/rbbt/util/misc/test_multipart_payload.rb
621
- - test/rbbt/util/misc/test_bgzf.rb
622
- - test/rbbt/util/test_concurrency.rb
623
- - test/rbbt/util/test_cmd.rb
624
- - test/rbbt/util/R/test_plot.rb
625
- - test/rbbt/util/R/test_eval.rb
626
- - test/rbbt/util/R/test_model.rb
627
- - test/rbbt/util/test_config.rb
628
- - test/rbbt/util/test_log.rb
629
- - test/rbbt/util/test_simpleDSL.rb
630
- - test/rbbt/util/log/test_progress.rb
631
- - test/rbbt/util/test_tmpfile.rb
632
- - test/rbbt/util/test_R.rb
633
- - test/rbbt/util/test_excel2tsv.rb
634
- - test/rbbt/util/test_misc.rb
635
- - test/rbbt/util/test_open.rb
636
- - test/rbbt/util/test_ssh.rb
637
- - test/rbbt/util/test_simpleopt.rb
638
- - test/rbbt/util/simpleopt/test_parse.rb
639
- - test/rbbt/util/simpleopt/test_setup.rb
640
- - test/rbbt/util/simpleopt/test_get.rb
641
- - test/rbbt/util/test_python.rb
642
- - test/rbbt/util/test_filecache.rb
643
- - test/rbbt/util/concurrency/test_processes.rb
644
- - test/rbbt/util/concurrency/test_threads.rb
645
- - test/rbbt/util/concurrency/processes/test_socket.rb
646
- - test/rbbt/util/test_semaphore.rb
647
- - test/rbbt/util/test_chain_methods.rb
648
- - test/rbbt/util/test_migrate.rb
649
- - test/rbbt/test_resource.rb
650
- - test/rbbt/test_packed_index.rb
651
- - test/rbbt/tsv/test_change_id.rb
652
- - test/rbbt/tsv/test_attach.rb
653
- - test/rbbt/tsv/test_filter.rb
654
- - test/rbbt/tsv/test_marshal.rb
655
- - test/rbbt/tsv/test_parser.rb
656
- - test/rbbt/tsv/test_csv.rb
657
- - test/rbbt/tsv/test_accessor.rb
658
- - test/rbbt/tsv/test_matrix.rb
659
- - test/rbbt/tsv/test_field_index.rb
660
- - test/rbbt/tsv/test_util.rb
661
- - test/rbbt/tsv/test_index.rb
662
- - test/rbbt/tsv/test_parallel.rb
663
- - test/rbbt/tsv/test_manipulate.rb
664
- - test/rbbt/tsv/test_excel.rb
665
- - test/rbbt/tsv/parallel/test_through.rb
666
- - test/rbbt/tsv/parallel/test_traverse.rb
667
- - test/rbbt/tsv/test_stream.rb
668
- - test/rbbt/test_association.rb
669
- - test/rbbt/hpc/test_batch.rb
670
- - test/rbbt/hpc/orchestrate/test_chains.rb
671
- - test/rbbt/hpc/orchestrate/test_rules.rb
672
- - test/rbbt/hpc/orchestrate/test_batches.rb
673
- - test/rbbt/hpc/test_slurm.rb
674
- - test/rbbt/hpc/test_orchestrate.rb
598
+ - test/rbbt/annotations/test_util.rb
675
599
  - test/rbbt/association/test_database.rb
600
+ - test/rbbt/association/test_index.rb
676
601
  - test/rbbt/association/test_item.rb
677
602
  - test/rbbt/association/test_open.rb
678
603
  - test/rbbt/association/test_util.rb
679
- - test/rbbt/association/test_index.rb
680
- - test/rbbt/test_knowledge_base.rb
681
- - test/rbbt/persist/tsv/test_kyotocabinet.rb
604
+ - test/rbbt/entity/test_identifiers.rb
605
+ - test/rbbt/hpc/orchestrate/test_batches.rb
606
+ - test/rbbt/hpc/orchestrate/test_chains.rb
607
+ - test/rbbt/hpc/orchestrate/test_rules.rb
608
+ - test/rbbt/hpc/test_batch.rb
609
+ - test/rbbt/hpc/test_orchestrate.rb
610
+ - test/rbbt/hpc/test_slurm.rb
611
+ - test/rbbt/knowledge_base/test_enrichment.rb
612
+ - test/rbbt/knowledge_base/test_entity.rb
613
+ - test/rbbt/knowledge_base/test_query.rb
614
+ - test/rbbt/knowledge_base/test_registry.rb
615
+ - test/rbbt/knowledge_base/test_syndicate.rb
616
+ - test/rbbt/knowledge_base/test_traverse.rb
617
+ - test/rbbt/persist/test_tsv.rb
682
618
  - test/rbbt/persist/tsv/test_cdb.rb
619
+ - test/rbbt/persist/tsv/test_kyotocabinet.rb
620
+ - test/rbbt/persist/tsv/test_leveldb.rb
683
621
  - test/rbbt/persist/tsv/test_lmdb.rb
684
622
  - test/rbbt/persist/tsv/test_sharder.rb
685
- - test/rbbt/persist/tsv/test_leveldb.rb
686
623
  - test/rbbt/persist/tsv/test_tokyocabinet.rb
687
- - test/rbbt/persist/test_tsv.rb
688
- - test/rbbt/test_tsv.rb
624
+ - test/rbbt/resource/test_path.rb
689
625
  - test/rbbt/test_annotations.rb
626
+ - test/rbbt/test_association.rb
627
+ - test/rbbt/test_entity.rb
690
628
  - 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
629
  - test/rbbt/test_hpc.rb
630
+ - test/rbbt/test_knowledge_base.rb
695
631
  - test/rbbt/test_monitor.rb
632
+ - test/rbbt/test_packed_index.rb
696
633
  - test/rbbt/test_persist.rb
697
- - test/rbbt/knowledge_base/test_entity.rb
698
- - test/rbbt/knowledge_base/test_registry.rb
699
- - test/rbbt/knowledge_base/test_syndicate.rb
700
- - test/rbbt/knowledge_base/test_query.rb
701
- - test/rbbt/knowledge_base/test_enrichment.rb
702
- - test/rbbt/knowledge_base/test_traverse.rb
634
+ - test/rbbt/test_resource.rb
635
+ - test/rbbt/test_tsv.rb
636
+ - test/rbbt/test_workflow.rb
637
+ - test/rbbt/tsv/parallel/test_through.rb
638
+ - test/rbbt/tsv/parallel/test_traverse.rb
639
+ - test/rbbt/tsv/test_accessor.rb
640
+ - test/rbbt/tsv/test_attach.rb
641
+ - test/rbbt/tsv/test_change_id.rb
642
+ - test/rbbt/tsv/test_csv.rb
643
+ - test/rbbt/tsv/test_excel.rb
644
+ - test/rbbt/tsv/test_field_index.rb
645
+ - test/rbbt/tsv/test_filter.rb
646
+ - test/rbbt/tsv/test_index.rb
647
+ - test/rbbt/tsv/test_manipulate.rb
648
+ - test/rbbt/tsv/test_marshal.rb
649
+ - test/rbbt/tsv/test_matrix.rb
650
+ - test/rbbt/tsv/test_parallel.rb
651
+ - test/rbbt/tsv/test_parser.rb
652
+ - test/rbbt/tsv/test_stream.rb
653
+ - test/rbbt/tsv/test_util.rb
654
+ - test/rbbt/util/R/test_eval.rb
655
+ - test/rbbt/util/R/test_model.rb
656
+ - test/rbbt/util/R/test_plot.rb
657
+ - test/rbbt/util/concurrency/processes/test_socket.rb
658
+ - test/rbbt/util/concurrency/test_processes.rb
659
+ - test/rbbt/util/concurrency/test_threads.rb
660
+ - test/rbbt/util/log/test_progress.rb
661
+ - test/rbbt/util/misc/test_bgzf.rb
662
+ - test/rbbt/util/misc/test_communication.rb
663
+ - test/rbbt/util/misc/test_development.rb
664
+ - test/rbbt/util/misc/test_format.rb
665
+ - test/rbbt/util/misc/test_indiferent_hash.rb
666
+ - test/rbbt/util/misc/test_lock.rb
667
+ - test/rbbt/util/misc/test_multipart_payload.rb
668
+ - test/rbbt/util/misc/test_omics.rb
669
+ - test/rbbt/util/misc/test_pipes.rb
670
+ - test/rbbt/util/misc/test_serialize.rb
671
+ - test/rbbt/util/python/test_util.rb
672
+ - test/rbbt/util/simpleopt/test_get.rb
673
+ - test/rbbt/util/simpleopt/test_parse.rb
674
+ - test/rbbt/util/simpleopt/test_setup.rb
675
+ - test/rbbt/util/test_R.rb
676
+ - test/rbbt/util/test_chain_methods.rb
677
+ - test/rbbt/util/test_cmd.rb
678
+ - test/rbbt/util/test_colorize.rb
679
+ - test/rbbt/util/test_concurrency.rb
680
+ - test/rbbt/util/test_config.rb
681
+ - test/rbbt/util/test_excel2tsv.rb
682
+ - test/rbbt/util/test_filecache.rb
683
+ - test/rbbt/util/test_log.rb
684
+ - test/rbbt/util/test_migrate.rb
685
+ - test/rbbt/util/test_misc.rb
686
+ - test/rbbt/util/test_open.rb
687
+ - test/rbbt/util/test_procpath.rb
688
+ - test/rbbt/util/test_python.rb
689
+ - test/rbbt/util/test_semaphore.rb
690
+ - test/rbbt/util/test_simpleDSL.rb
691
+ - test/rbbt/util/test_simpleopt.rb
692
+ - test/rbbt/util/test_ssh.rb
693
+ - test/rbbt/util/test_tmpfile.rb
694
+ - test/rbbt/workflow/step/test_dependencies.rb
695
+ - test/rbbt/workflow/step/test_save_load_inputs.rb
696
+ - test/rbbt/workflow/test_doc.rb
697
+ - test/rbbt/workflow/test_remote_workflow.rb
698
+ - test/rbbt/workflow/test_schedule.rb
699
+ - test/rbbt/workflow/test_step.rb
700
+ - test/rbbt/workflow/test_task.rb
701
+ - test/rbbt/workflow/util/test_archive.rb
702
+ - test/rbbt/workflow/util/test_data.rb
703
+ - test/rbbt/workflow/util/test_orchestrator.rb
703
704
  - test/test_helper.rb