rbbt-util 5.42.0 → 5.43.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rbbt/annotations/util.rb +1 -1
  3. data/lib/rbbt/association/database.rb +2 -1
  4. data/lib/rbbt/association/index.rb +1 -0
  5. data/lib/rbbt/association/util.rb +13 -3
  6. data/lib/rbbt/entity.rb +6 -5
  7. data/lib/rbbt/hpc/orchestrate/batches.rb +1 -1
  8. data/lib/rbbt/hpc/orchestrate/chains.rb +3 -4
  9. data/lib/rbbt/knowledge_base/traverse.rb +24 -16
  10. data/lib/rbbt/persist/tsv/tokyocabinet.rb +1 -1
  11. data/lib/rbbt/resource/path.rb +7 -2
  12. data/lib/rbbt/resource.rb +1 -1
  13. data/lib/rbbt/tsv/parallel/traverse.rb +44 -0
  14. data/lib/rbbt/tsv/parser.rb +7 -6
  15. data/lib/rbbt/tsv/serializers.rb +1 -1
  16. data/lib/rbbt/tsv/util.rb +12 -0
  17. data/lib/rbbt/util/log/progress.rb +1 -1
  18. data/lib/rbbt/util/misc/bgzf.rb +5 -4
  19. data/lib/rbbt/util/misc/development.rb +4 -4
  20. data/lib/rbbt/util/misc.rb +1 -1
  21. data/lib/rbbt/workflow/remote_workflow/driver/rest.rb +8 -3
  22. data/lib/rbbt/workflow/remote_workflow/remote_step.rb +4 -0
  23. data/lib/rbbt/workflow/util/trace.rb +2 -2
  24. data/lib/rbbt/workflow.rb +2 -2
  25. data/test/rbbt/association/test_database.rb +0 -2
  26. data/test/rbbt/association/test_open.rb +1 -1
  27. data/test/rbbt/entity/test_identifiers.rb +7 -47
  28. data/test/rbbt/hpc/orchestrate/test_batches.rb +2 -45
  29. data/test/rbbt/hpc/orchestrate/test_chains.rb +13 -44
  30. data/test/rbbt/hpc/orchestrate/test_rules.rb +2 -35
  31. data/test/rbbt/hpc/test_batch.rb +18 -22
  32. data/test/rbbt/hpc/test_hpc_test_workflows.rb +0 -0
  33. data/test/rbbt/hpc/test_pbs.rb +1 -1
  34. data/test/rbbt/hpc/test_slurm.rb +6 -10
  35. data/test/rbbt/knowledge_base/test_enrichment.rb +5 -3
  36. data/test/rbbt/knowledge_base/test_entity.rb +26 -6
  37. data/test/rbbt/knowledge_base/test_query.rb +1 -1
  38. data/test/rbbt/knowledge_base/test_registry.rb +34 -41
  39. data/test/rbbt/knowledge_base/test_traverse.rb +106 -58
  40. data/test/rbbt/persist/test_tsv.rb +4 -4
  41. data/test/rbbt/persist/tsv/test_lmdb.rb +7 -5
  42. data/test/rbbt/test_entity.rb +8 -5
  43. data/test/rbbt/test_knowledge_base.rb +107 -30
  44. data/test/rbbt/test_packed_index.rb +5 -5
  45. data/test/rbbt/test_tsv.rb +1 -1
  46. data/test/rbbt/test_workflow.rb +83 -78
  47. data/test/rbbt/tsv/test_accessor.rb +4 -0
  48. data/test/rbbt/tsv/test_attach.rb +2 -5
  49. data/test/rbbt/tsv/test_index.rb +8 -2
  50. data/test/rbbt/tsv/test_manipulate.rb +0 -3
  51. data/test/rbbt/util/R/test_model.rb +0 -2
  52. data/test/rbbt/util/misc/test_bgzf.rb +3 -3
  53. data/test/rbbt/util/misc/test_communication.rb +5 -3
  54. data/test/rbbt/util/test_migrate.rb +1 -3
  55. data/test/rbbt/util/test_misc.rb +7 -2
  56. data/test/rbbt/util/test_procpath.rb +1 -1
  57. data/test/rbbt/util/test_python.rb +12 -8
  58. data/test/rbbt/workflow/step/test_dependencies.rb +0 -4
  59. data/test/rbbt/workflow/test_remote_workflow.rb +6 -5
  60. data/test/rbbt/workflow/util/test_archive.rb +4 -8
  61. data/test/rbbt/workflow/util/test_orchestrator.rb +5 -15
  62. data/test/test_helper.rb +25 -1
  63. metadata +5 -5
  64. data/test/rbbt/test_hpc.rb +0 -16
@@ -2,52 +2,9 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_he
2
2
  require 'rbbt/workflow'
3
3
  require 'rbbt/hpc/orchestrate/batches'
4
4
 
5
- module TestWFA
6
- extend Workflow
5
+ require_relative '../hpc_test_workflows'
7
6
 
8
- task :a1 => :string do self.task_name.to_s end
9
-
10
- dep :a1
11
- task :a2 => :string do self.task_name.to_s end
12
-
13
- dep :a2
14
- task :a3 => :string do self.task_name.to_s end
15
- end
16
-
17
- module TestWFB
18
- extend Workflow
19
-
20
- dep TestWFA, :a2
21
- task :b1 => :string do self.task_name.to_s end
22
-
23
- dep :b1
24
- task :b2 => :string do self.task_name.to_s end
25
- end
26
-
27
- module TestWFC
28
- extend Workflow
29
-
30
- dep TestWFA, :a1
31
- dep_task :c1, TestWFB, :b2
32
-
33
- task :c2 => :string do self.task_name.to_s end
34
-
35
- dep :c1
36
- dep :c2
37
- task :c3 => :string do self.task_name.to_s end
38
-
39
- dep_task :c4, TestWFC, :c3
40
- end
41
-
42
- module TestWFD
43
- extend Workflow
44
-
45
- dep TestWFC, :c3, :jobname => "First c3"
46
- dep TestWFC, :c3, :jobname => "Second c3"
47
- task :d1 => :string do self.task_name.to_s end
48
- end
49
-
50
- class TestOrchestrate < Test::Unit::TestCase
7
+ class TestOrchestrateBatches < Test::Unit::TestCase
51
8
 
52
9
  RULES = IndiferentHash.setup(YAML.load(<<-EOF))
53
10
  ---
@@ -1,51 +1,9 @@
1
1
  require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_helper.rb')
2
- require 'rbbt/workflow'
3
2
  require 'rbbt/hpc/orchestrate/chains'
4
3
 
5
- module TestWFA
6
- extend Workflow
4
+ require_relative '../hpc_test_workflows'
7
5
 
8
- task :a1 => :string do self.task_name.to_s end
9
-
10
- dep :a1
11
- task :a2 => :string do self.task_name.to_s end
12
-
13
- dep :a2
14
- task :a3 => :string do self.task_name.to_s end
15
- end
16
-
17
- module TestWFB
18
- extend Workflow
19
-
20
- dep TestWFA, :a2
21
- task :b1 => :string do self.task_name.to_s end
22
-
23
- dep :b1
24
- task :b2 => :string do self.task_name.to_s end
25
- end
26
-
27
- module TestWFC
28
- extend Workflow
29
-
30
- dep TestWFA, :a1
31
- dep_task :c1, TestWFB, :b2
32
-
33
- task :c2 => :string do self.task_name.to_s end
34
-
35
- dep :c1
36
- dep :c2
37
- task :c3 => :string do self.task_name.to_s end
38
- end
39
-
40
- module TestWFD
41
- extend Workflow
42
-
43
- dep TestWFC, :c3, :jobname => "First c3"
44
- dep TestWFC, :c3, :jobname => "Second c3"
45
- task :d1 => :string do self.task_name.to_s end
46
- end
47
-
48
- class TestOrchestrate < Test::Unit::TestCase
6
+ class TestOrchestrateChains < Test::Unit::TestCase
49
7
 
50
8
  RULES = IndiferentHash.setup(YAML.load(<<-EOF))
51
9
  ---
@@ -135,5 +93,16 @@ TestWFC:
135
93
 
136
94
  assert_equal 1, job_chains.select{|n,i| n == 'chain_d' }.length
137
95
  end
96
+
97
+ def __test_benchmark
98
+
99
+ job = TestDeepWF.job(:suite, :size => 100)
100
+ job.recursive_clean
101
+
102
+ Misc.benchmark(10) do
103
+ HPC::Orchestration.job_chains(RULES, job)
104
+ end
105
+
106
+ end
138
107
  end
139
108
 
@@ -2,42 +2,9 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../../..', 'test_he
2
2
  require 'rbbt/workflow'
3
3
  require 'rbbt/hpc/orchestrate/rules'
4
4
 
5
- module TestWFA
6
- extend Workflow
5
+ require_relative '../hpc_test_workflows'
7
6
 
8
- task :a1 => :string do self.task_name.to_s end
9
-
10
- dep :a1
11
- task :a2 => :string do self.task_name.to_s end
12
-
13
- dep :a2
14
- task :a3 => :string do self.task_name.to_s end
15
- end
16
-
17
- module TestWFB
18
- extend Workflow
19
-
20
- dep TestWFA, :a2
21
- task :b1 => :string do self.task_name.to_s end
22
-
23
- dep :b1
24
- task :b2 => :string do self.task_name.to_s end
25
- end
26
-
27
- module TestWFC
28
- extend Workflow
29
-
30
- dep TestWFA, :a1
31
- dep_task :c1, TestWFB, :b2
32
-
33
- task :c2 => :string do self.task_name.to_s end
34
-
35
- dep :c1
36
- dep :c2
37
- task :c3 => :string do self.task_name.to_s end
38
- end
39
-
40
- class TestOrchestrate < Test::Unit::TestCase
7
+ class TestOrchestrateRules < Test::Unit::TestCase
41
8
 
42
9
  RULES = IndiferentHash.setup(YAML.load(<<-EOF))
43
10
  ---
@@ -2,64 +2,60 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helpe
2
2
  require 'rbbt/hpc/batch'
3
3
  require 'rbbt/workflow'
4
4
 
5
- class TestSLURM < Test::Unit::TestCase
5
+ require_relative 'hpc_test_workflows'
6
6
 
7
- def setup
8
- Workflow.require_workflow "Sample"
9
- Workflow.require_workflow "HTS"
10
- end
7
+ class TestBatch < Test::Unit::TestCase
11
8
 
12
9
  def test_batch_options
13
- job = Sample.job(:mutect2, "small", :reference => "hg38")
10
+ job = TestWFB.job(:b1, "TEST")
14
11
 
15
12
  TmpFile.with_file do |batch_dir|
16
13
 
17
14
  options = HPC::BATCH.batch_options(job, :batch_dir => batch_dir, :batch_modules => 'java')
18
-
19
- iii options
15
+ assert_equal options[:step_path], job.path
20
16
  end
21
17
  end
22
18
 
23
19
  def test_template
24
- job = Sample.job(:mutect2, "small", :reference => "hg38")
20
+ job = TestWFB.job(:b1, "TEST")
25
21
 
26
22
  TmpFile.with_file do |batch_dir|
27
23
 
28
- template = HPC::BATCH.job_template(job, :batch_dir => batch_dir, :batch_modules => 'java')
29
- ppp template
30
-
24
+ template = HPC::BATCH.job_template(job, :batch_dir => batch_dir, :lua_modules => 'java')
25
+ assert_include template, 'module load java'
31
26
  end
32
27
  end
33
28
 
34
29
  def test_template_singularity
35
- job = Sample.job(:mutect2, "small", :reference => "hg38")
30
+ job = TestWFB.job(:b1, "TEST")
36
31
 
37
32
  TmpFile.with_file do |batch_dir|
38
33
 
39
- template = HPC::BATCH.job_template(job, :batch_dir => batch_dir, :batch_modules => 'java', :singularity => true)
40
- ppp template
41
-
34
+ template = HPC::BATCH.job_template(job, :batch_dir => batch_dir, :lua_modules => 'java', :singularity => true)
35
+ assert_include template, "singularity exec"
42
36
  end
43
37
  end
44
38
 
45
39
  def test_template_contain
46
- job = Sample.job(:mutect2, "small", :reference => "hg38")
40
+ job = TestWFB.job(:b1, "TEST")
47
41
 
48
42
  TmpFile.with_file do |batch_dir|
49
43
 
50
- template = HPC::BATCH.job_template(job, :batch_dir => batch_dir, :batch_modules => 'java', :contain_and_sync => true, :wipe_container => 'force')
51
- ppp template
44
+ template = HPC::BATCH.job_template(job, :batch_dir => batch_dir, :lua_modules => 'java', :contain_and_sync => true, :wipe_container => 'force')
45
+ assert_include template, "batch_erase_contain_dir"
52
46
 
53
47
  end
54
48
  end
55
49
 
56
50
  def test_template_singularity_contain
57
- job = Sample.job(:mutect2, "small", :reference => "hg38")
51
+ job = TestWFB.job(:b1, "TEST")
58
52
 
59
53
  TmpFile.with_file do |batch_dir|
60
54
 
61
- template = HPC::BATCH.job_template(job, :batch_dir => batch_dir, :batch_modules => 'java', :contain_and_sync => true, :wipe_container => 'force', :singularity => true)
62
- ppp template
55
+ template = HPC::BATCH.job_template(job, :batch_dir => batch_dir, :lua_modules => 'java', :contain_and_sync => true, :wipe_container => 'force', :singularity => true)
56
+ assert_include template, "--workdir_all"
57
+ assert_include template, "batch_erase_contain_dir"
58
+ assert_include template, "singularity exec"
63
59
 
64
60
  end
65
61
  end
File without changes
@@ -25,7 +25,7 @@ class TestPBS < Test::Unit::TestCase
25
25
  TmpFile.with_file do |batch_dir|
26
26
 
27
27
  template = HPC::PBS.job_template(job, :batch_dir => batch_dir, :lua_modules => 'java')
28
- ppp template
28
+ assert_include template, "rbbt workflow task TestWorkflow hello"
29
29
 
30
30
  end
31
31
  end
@@ -2,20 +2,16 @@ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helpe
2
2
  require 'rbbt/hpc/slurm'
3
3
  require 'rbbt/workflow'
4
4
 
5
+ require_relative 'hpc_test_workflows'
5
6
  class TestSLURM < Test::Unit::TestCase
6
- def setup
7
- Workflow.require_workflow "Sample"
8
- Workflow.require_workflow "HTS"
9
- end
10
-
11
- def __test_template
12
- job = Sample.job(:mutect2, "small", :reference => "hg38")
7
+ def test_template
8
+ job = TestWFA.job(:a2, "TEST")
13
9
 
14
10
  TmpFile.with_file do |batch_dir|
15
11
 
16
- template = HPC::SLURM.job_template(job, :batch_dir => batch_dir, :batch_modules => 'java')
17
- ppp template
18
-
12
+ template = HPC::SLURM.job_template(job, :batch_dir => batch_dir, :batch_modules => 'java', :time => '10min')
13
+ assert_include template, "rbbt workflow task TestWFA a2"
14
+ assert_include template, "00:10:00"
19
15
  end
20
16
  end
21
17
 
@@ -37,9 +37,11 @@ TP53 NFKB1|GLI1 activation|activation true|true
37
37
  end
38
38
 
39
39
  def test_enrichment
40
- TmpFile.with_file do |tmp_kb|
41
- genes = %w(P17706-2 LMAN1 P17706-1 P29353-2 JAK3 Q8NFM1 EIF2AK2 JAK1 SRC PIAS1 KPNB1 KPNA2 STAT3 PTPN1 ATR CREBBP PTPRA SGK1 P46108-1 NCK2 O00145 PTPN1 CBL SORBS1 IRS1 SHC1 AKT2 GRB2 SOS1 RPS6KB1 AKT1 DOK1 RASA1 NCK1 FOXO3 RAPGEF1 TRIP10 EIF4EBP1 PDPK1 GRB14 PTPN11 INS GRB10 CAV1 EIF4B RPS6KB1 EEF2 EEF2K AKT1 TSC1 TSC2 CLIP1 DDIT4 SGK1 PDPK1 DEPTOR SREBF1 CYCS IRS1 RPS6KA1 BNIP3 RRN3 RICTOR IKBKB AKT1S1 PXN PML EIF4A1 PPARGC1A YY1 PRKCA RPTOR PDCD4 SIK1 P10636-8 BRSK1 MYC SMARCD3 STK11 ETV4 MARK4 MAP2 MARK2 CRTC2 PSEN2 MST4 CTSD BRSK2 SIK2 ESR1 CAB39 STK11IP SMAD4 CREB1 PRKACA EZR TP53 GSK3B SIK3 CDC37 HSP90AA1 )
42
- assert knowledge_base(tmp_kb).enrichment(:nature, genes).any?
40
+ keyword_test :R do
41
+ TmpFile.with_file do |tmp_kb|
42
+ genes = %w(P17706-2 LMAN1 P17706-1 P29353-2 JAK3 Q8NFM1 EIF2AK2 JAK1 SRC PIAS1 KPNB1 KPNA2 STAT3 PTPN1 ATR CREBBP PTPRA SGK1 P46108-1 NCK2 O00145 PTPN1 CBL SORBS1 IRS1 SHC1 AKT2 GRB2 SOS1 RPS6KB1 AKT1 DOK1 RASA1 NCK1 FOXO3 RAPGEF1 TRIP10 EIF4EBP1 PDPK1 GRB14 PTPN11 INS GRB10 CAV1 EIF4B RPS6KB1 EEF2 EEF2K AKT1 TSC1 TSC2 CLIP1 DDIT4 SGK1 PDPK1 DEPTOR SREBF1 CYCS IRS1 RPS6KA1 BNIP3 RRN3 RICTOR IKBKB AKT1S1 PXN PML EIF4A1 PPARGC1A YY1 PRKCA RPTOR PDCD4 SIK1 P10636-8 BRSK1 MYC SMARCD3 STK11 ETV4 MARK4 MAP2 MARK2 CRTC2 PSEN2 MST4 CTSD BRSK2 SIK2 ESR1 CAB39 STK11IP SMAD4 CREB1 PRKACA EZR TP53 GSK3B SIK3 CDC37 HSP90AA1 )
43
+ assert knowledge_base(tmp_kb).enrichment(:nature, genes).any?
44
+ end
43
45
  end
44
46
  end
45
47
 
@@ -29,14 +29,34 @@ TP53 NFKB1|GLI1 activation|activation true|true
29
29
 
30
30
  EFFECT_TSV = TSV.open EFFECT, EFFECT_OPTIONS.dup
31
31
 
32
- KNOWLEDGE_BASE = KnowledgeBase.new '/tmp/kb.foo3', "Hsa"
33
- KNOWLEDGE_BASE.format = {"Gene" => "Associated Gene Name"}
34
-
35
- KNOWLEDGE_BASE.register :effects, EFFECT_TSV, EFFECT_OPTIONS.dup
32
+ def with_kb(&block)
33
+ keyword_test :organism do
34
+ require 'rbbt/sources/organism'
35
+ organism = Organism.default_code("Hsa")
36
+ TmpFile.with_file do |tmpdir|
37
+ kb = KnowledgeBase.new tmpdir, "Hsa"
38
+ kb.format = {"Gene" => "Associated Gene Name"}
39
+
40
+ kb.register :effects, EFFECT_TSV, EFFECT_OPTIONS.dup
41
+
42
+ yield kb
43
+ end
44
+ end
45
+ end
36
46
 
37
47
  def test_entity_options
38
- KNOWLEDGE_BASE.entity_options = {"Gene" => {:organism => "Mmu"}}
39
- assert_equal "Mmu", KNOWLEDGE_BASE.children(:effects, "TP53").target_entity.organism
48
+ with_kb do |kb|
49
+ kb.entity_options = {"Gene" => {:organism => "Mmu"}}
50
+ assert_include kb.children(:effects, "TP53").target_entity.to("Associated Gene Name"), "GLI1"
51
+ assert_equal "Mmu", kb.children(:effects, "TP53").target_entity.organism
52
+ end
40
53
  end
54
+
55
+ def test_source_type
56
+ with_kb do |kb|
57
+ assert_match "Gene", kb.source_type(:effects).to_s
58
+ end
59
+ end
60
+
41
61
  end
42
62
 
@@ -38,7 +38,7 @@ TP53 NFKB1|GLI1 activation|activation true|true
38
38
  end
39
39
  end
40
40
 
41
- def _test_subset_all_persist_format
41
+ def test_subset_all_persist_format
42
42
  assert KNOWLEDGE_BASE.subset(:effects, :all).target_entity.reject{|e| e =~ /^ENS/}.empty?
43
43
  end
44
44
 
@@ -25,57 +25,50 @@ TP53 NFKB1|GLI1 activation|activation true|true
25
25
 
26
26
  EFFECT_TSV = TSV.open EFFECT, EFFECT_OPTIONS.dup
27
27
 
28
- KNOWLEDGE_BASE = KnowledgeBase.new '/tmp/kb.foo2'
29
-
30
- KNOWLEDGE_BASE.register :effects, EFFECT_TSV, EFFECT_OPTIONS.dup
31
-
32
- KNOWLEDGE_BASE.register :pina, datafile_test('pina'), :source => "UniProt/SwissProt Accession", :target => "Interactor UniProt/SwissProt Accession=~UniProt/SwissProt Accession", :undirected => true
28
+ def with_kb(&block)
29
+ keyword_test :organism do
30
+ require 'rbbt/sources/organism'
31
+ organism = Organism.default_code("Hsa")
32
+ TmpFile.with_file do |tmpdir|
33
+ kb = KnowledgeBase.new tmpdir
34
+ kb.namespace = organism
35
+ kb.format = {"Gene" => "Associated Gene Name"}
36
+
37
+ kb.register :effects, EFFECT_TSV, EFFECT_OPTIONS
38
+ kb.register :pina, datafile_test('pina'),
39
+ :source => "UniProt/SwissProt Accession",
40
+ :target => "Interactor UniProt/SwissProt Accession=~UniProt/SwissProt Accession",
41
+ :undirected => true
42
+
43
+ kb.register :gene_ages, datadir_test.gene_ages, :source => "=>Associated Gene Name"
44
+
45
+ kb.register :CollecTRI, datadir_test.CollecTRI,
46
+ :source => "Transcription Factor=~Associated Gene Name",
47
+ :target => "Target Gene=~Associated Gene Name",
48
+ :fields => ["[ExTRI] Confidence", "[ExTRI] PMID"]
49
+
50
+ yield kb
51
+ end
52
+ end
53
+ end
33
54
 
34
55
  def test_database
35
- assert_equal "Associated Gene Name", KNOWLEDGE_BASE.get_database(:effects, :source_format => "Associated Gene Name").key_field
56
+ with_kb do |kb|
57
+ assert_equal "Associated Gene Name", kb.get_database(:effects, :source_format => "Associated Gene Name").key_field
58
+ end
36
59
  end
37
60
 
38
61
  def test_index
39
- assert KNOWLEDGE_BASE.get_index(:effects, :source_format => "Associated Gene Name", :target_format => "Ensembl Gene ID", :persist => false).include? "MDM2~ENSG00000141510"
62
+ with_kb do |kb|
63
+ assert kb.get_index(:effects, :source_format => "Associated Gene Name", :target_format => "Ensembl Gene ID", :persist => false).include? "MDM2~ENSG00000141510"
64
+ end
40
65
  end
41
66
 
42
67
  def test_index_persist
43
- assert KNOWLEDGE_BASE.get_index(:effects, :source_format => "Associated Gene Name", :target_format => "Ensembl Gene ID", :persist => true).include? "MDM2~ENSG00000141510"
44
- end
45
-
46
- def test_index_flat
47
- require 'rbbt/sources/tfacts'
48
- file = TFactS.regulators
49
- KNOWLEDGE_BASE.register :tfacts, file, :type => :flat, :source => "Transcription Factor Associated Gene Name=~Associated Gene Name", :merge => true
50
- assert KNOWLEDGE_BASE.subset(:tfacts, :source => ["TP53"], :target => :all).length > 10
51
- end
52
-
53
- def test_pina
54
- index = KNOWLEDGE_BASE.get_index(:pina, :persist => false, :source_format => "Associated Gene Name", :target_format => "Associated Gene Name")
55
- assert index["TP53~ARID1A"]
56
- assert index["ARID1A~TP53"]
57
- assert_equal index["ARID1A~TP53"], index["TP53~ARID1A"]
58
-
59
- index = KNOWLEDGE_BASE.get_index(:pina, :persist => false, :source_format => "Associated Gene Name", :target_format => "Associated Gene Name", :undirected => false)
60
- count = 0
61
- index.through do |k,values|
62
- split_values = values.collect{|v| v.split ";;" }
63
- count += 1 if Misc.zip_fields(split_values).uniq != Misc.zip_fields(split_values)
68
+ with_kb do |kb|
69
+ assert kb.get_index(:effects, :source_format => "Associated Gene Name", :target_format => "Ensembl Gene ID", :persist => true).include? "MDM2~ENSG00000141510"
64
70
  end
65
-
66
- index = KNOWLEDGE_BASE.get_index(:pina, :persist => false, :source_format => "Associated Gene Name", :target_format => "Associated Gene Name", :undirected => true)
67
- count2 = 0
68
- index.through do |k,values|
69
- split_values = values.collect{|v| v.split ";;" }
70
- count2 += 1 if Misc.zip_fields(split_values).uniq != Misc.zip_fields(split_values)
71
- end
72
-
73
71
  end
74
72
 
75
- def test_pina2
76
- KNOWLEDGE_BASE.entity_options["Gene"] = {:organism => "Mmu"}
77
- index = KNOWLEDGE_BASE.get_index(:pina, :persist => true, :source_format => "Ensembl Gene ID", :target_format => "Ensembl Gene ID", :undirected => true)
78
- assert_equal "Mmu", index.entity_options["Gene"][:organism]
79
- end
80
73
  end
81
74
 
@@ -3,83 +3,131 @@ require 'rbbt/knowledge_base/traverse'
3
3
  require 'rbbt/workflow'
4
4
 
5
5
  class TestKnowledgeBaseTraverse < Test::Unit::TestCase
6
- def setup
7
- Workflow.require_workflow "Genomics"
6
+ def with_kb(&block)
7
+ keyword_test :organism do
8
+ require 'rbbt/sources/organism'
9
+ organism = Organism.default_code("Hsa")
10
+ TmpFile.with_file do |tmpdir|
11
+ kb = KnowledgeBase.new tmpdir
12
+ kb.namespace = organism
13
+ kb.format = {"Gene" => "Associated Gene Name"}
14
+
15
+ kb.register :gene_ages, datadir_test.gene_ages, :source => "=>Associated Gene Name"
16
+
17
+ kb.register :CollecTRI, datadir_test.CollecTRI,
18
+ :source => "Transcription Factor=~Associated Gene Name",
19
+ :target => "Target Gene=~Associated Gene Name",
20
+ :fields => ["[ExTRI] Confidence", "[ExTRI] PMID"]
21
+
22
+ yield kb
23
+ end
24
+ end
25
+ end
26
+
27
+ def test_traverse_simple
28
+ with_kb do |kb|
29
+ rules = []
30
+ rules << "SMAD4 gene_ages ?1"
31
+ res = kb.traverse rules
32
+ assert_include res.first["?1"], "Bilateria"
33
+ end
8
34
  end
9
35
 
10
- def kb
11
- Genomics.knowledge_base
36
+ def test_traverse_CollecTRI
37
+ with_kb do |kb|
38
+ rules = []
39
+ rules << "SMAD4 CollecTRI ?1 - '[ExTRI] Confidence=High'"
40
+ res = kb.traverse rules
41
+ assert res.last.any?
42
+ end
12
43
  end
13
44
 
45
+
14
46
  def test_traverse
15
- rules = []
16
- rules << "?1 pina SF3B1 - Method=MI:0006"
17
- rules << "TP53 pina ?2"
18
- rules << "?2 pina ?1"
19
- res = kb.traverse rules
20
- assert res.first.include? "?1"
47
+ with_kb do |kb|
48
+ rules = []
49
+ rules << "?1 CollecTRI SMAD7"
50
+ rules << "?1 gene_ages ?2"
51
+ rules << "SMAD4 gene_ages ?2"
52
+ res = kb.traverse rules
53
+ assert res.first["?1"].include? "MYC"
54
+ end
21
55
  end
22
56
 
23
- def test_traverse2
24
- rules = []
25
- rules << "?target =pina SF3B1"
26
- rules << "?1 pina ?target - Method=MI:0006"
27
- rules << "TP53 pina ?2"
28
- rules << "?2 pina ?1"
29
- res = kb.traverse rules
30
- assert res.first.include? "?1"
57
+ def test_target
58
+ with_kb do |kb|
59
+ rules = []
60
+ rules << "?target =CollecTRI SMAD7"
61
+ rules << "?1 CollecTRI ?target"
62
+ rules << "?1 gene_ages ?2"
63
+ rules << "SMAD4 gene_ages ?2"
64
+ res = kb.traverse rules
65
+ assert res.first["?1"].include? "MYC"
66
+ end
31
67
  end
32
68
 
33
- def test_traverse3
34
- rules = []
35
- rules << "?target = ENSG00000115524"
36
- rules << "?1 pina ?target - Method=MI:0006"
37
- rules << "TP53 pina ?2"
38
- rules << "?2 pina ?1"
39
- res = kb.traverse rules
40
- assert res.first.include? "?1"
69
+ def test_target_translate
70
+ with_kb do |kb|
71
+ rules = []
72
+ rules << "?target =CollecTRI ENSG00000101665"
73
+ rules << "?1 CollecTRI ?target"
74
+ res = kb.traverse rules
75
+ assert res.first["?1"].include? "MYC"
76
+ end
41
77
  end
42
78
 
79
+ def test_target_attribute
80
+ with_kb do |kb|
81
+ rules = []
82
+ rules << "?1 CollecTRI SMAD7"
83
+ all = kb.traverse rules
43
84
 
44
- def test_traverse_acc
45
- Log.severity = 0
46
- rules_str=<<-EOF
47
- ?target{
48
- ?target pina SF3B1
49
- }
50
- ?1 pina TP53
51
- ?1 pina ?target
52
- EOF
53
- rules = rules_str.split "\n"
54
- res = kb.traverse rules
55
- iii res
56
- assert res.first.include? "?1"
57
- end
85
+ rules = []
86
+ rules << "?1 CollecTRI SMAD7 - '[ExTRI] Confidence'=High"
87
+ low = kb.traverse rules
58
88
 
89
+ assert low.last.length < all.last.length
90
+ end
91
+ end
59
92
 
60
- def test_path
61
- rules = []
62
- rules << "?1 pina ARPC2"
63
- rules << "ARPC3 pina ?2"
64
- rules << "?2 pina ?1"
65
- res = kb.traverse rules
66
- assert res.first.include? "?1"
93
+ def test_traverse_same_age
94
+ with_kb do |kb|
95
+ rules_str=<<-EOF
96
+ ?target1 =gene_ages SMAD7
97
+ ?target2 =gene_ages SMAD4
98
+ ?target1 gene_ages ?age
99
+ ?target2 gene_ages ?age
100
+ ?1 gene_ages ?age
101
+ EOF
102
+ rules = rules_str.split "\n"
103
+ res = kb.traverse rules
104
+ assert_include res.first["?1"], "MET"
105
+ end
67
106
  end
68
107
 
69
- def test_path2
70
- rules = []
71
- rules << "?1 pina SF3B1"
72
- rules << "?2 pina SF3B1"
73
- rules << "?1 pina ?2"
74
- res = kb.traverse rules
75
- assert res.first.include? "?1"
108
+ def test_traverse_same_age_acc
109
+ with_kb do |kb|
110
+ rules_str=<<-EOF
111
+ ?target1 =gene_ages SMAD7
112
+ ?target2 =gene_ages SMAD4
113
+ ?age{
114
+ ?target1 gene_ages ?age
115
+ ?target2 gene_ages ?age
116
+ }
117
+ ?1 gene_ages ?age
118
+ EOF
119
+ rules = rules_str.split "\n"
120
+ res = kb.traverse rules
121
+ assert_include res.first["?1"], "MET"
122
+ end
76
123
  end
77
124
 
78
125
  def test_wildcard_db
79
- rules = []
80
- rules << "?1 ?db SF3B1 - Method=MI:0006"
81
- res = kb.traverse rules
82
- assert res.first.include? "?1"
126
+ with_kb do |kb|
127
+ rules = []
128
+ rules << "SMAD4 ?db ?1"
129
+ res = kb.traverse rules
130
+ end
83
131
  end
84
132
  end
85
133
 
@@ -26,13 +26,13 @@ class TestPersistTSV < Test::Unit::TestCase
26
26
  db = TSV.open(file, :fields => [1], :persist => true, :persist_engine => engine, :persist_dir => tmp_file, :type => :single, :unnamed => true)
27
27
  end
28
28
 
29
- _test = db.keys.sort{rand}[1..100000]
29
+ test = db.keys.sort{rand}[1..100000]
30
30
  Misc.benchmark(5, "Access #{test.length} random entries") do
31
- _test.each do |k| db[k] end
31
+ test.each do |k| db[k] end
32
32
  end
33
33
  Log.info "Profiling access to #{test.length} random entries"
34
34
  Misc.profile :min_percent => 0.1 do
35
- _test.each do |k| db[k] end
35
+ test.each do |k| db[k] end
36
36
  end
37
37
  assert_equal "1:10611:G", db["rs189107123"]
38
38
  end
@@ -82,7 +82,7 @@ k2 1.2 2.2
82
82
  EOF
83
83
  TmpFile.with_file(content) do |tsv_file|
84
84
  tsv = TSV.open(tsv_file, :sep => " ", :persist => true, :type => :double, :merge => true)
85
- iii tsv["k1"]
85
+ assert_equal [[1.1], [2.1]], tsv["k1"]
86
86
  end
87
87
  end
88
88
  end