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.
- checksums.yaml +4 -4
- data/lib/rbbt/annotations/util.rb +1 -1
- data/lib/rbbt/association/database.rb +2 -1
- data/lib/rbbt/association/index.rb +1 -0
- data/lib/rbbt/association/util.rb +13 -3
- data/lib/rbbt/entity.rb +6 -5
- data/lib/rbbt/hpc/orchestrate/batches.rb +1 -1
- data/lib/rbbt/hpc/orchestrate/chains.rb +3 -4
- data/lib/rbbt/knowledge_base/traverse.rb +24 -16
- data/lib/rbbt/persist/tsv/tokyocabinet.rb +1 -1
- data/lib/rbbt/resource/path.rb +7 -2
- data/lib/rbbt/resource.rb +1 -1
- data/lib/rbbt/tsv/parallel/traverse.rb +44 -0
- data/lib/rbbt/tsv/parser.rb +7 -6
- data/lib/rbbt/tsv/serializers.rb +1 -1
- data/lib/rbbt/tsv/util.rb +12 -0
- data/lib/rbbt/util/log/progress.rb +1 -1
- data/lib/rbbt/util/misc/bgzf.rb +5 -4
- data/lib/rbbt/util/misc/development.rb +4 -4
- data/lib/rbbt/util/misc.rb +1 -1
- data/lib/rbbt/workflow/remote_workflow/driver/rest.rb +8 -3
- data/lib/rbbt/workflow/remote_workflow/remote_step.rb +4 -0
- data/lib/rbbt/workflow/util/trace.rb +2 -2
- data/lib/rbbt/workflow.rb +2 -2
- data/test/rbbt/association/test_database.rb +0 -2
- data/test/rbbt/association/test_open.rb +1 -1
- data/test/rbbt/entity/test_identifiers.rb +7 -47
- data/test/rbbt/hpc/orchestrate/test_batches.rb +2 -45
- data/test/rbbt/hpc/orchestrate/test_chains.rb +13 -44
- data/test/rbbt/hpc/orchestrate/test_rules.rb +2 -35
- data/test/rbbt/hpc/test_batch.rb +18 -22
- data/test/rbbt/hpc/test_hpc_test_workflows.rb +0 -0
- data/test/rbbt/hpc/test_pbs.rb +1 -1
- data/test/rbbt/hpc/test_slurm.rb +6 -10
- data/test/rbbt/knowledge_base/test_enrichment.rb +5 -3
- data/test/rbbt/knowledge_base/test_entity.rb +26 -6
- data/test/rbbt/knowledge_base/test_query.rb +1 -1
- data/test/rbbt/knowledge_base/test_registry.rb +34 -41
- data/test/rbbt/knowledge_base/test_traverse.rb +106 -58
- data/test/rbbt/persist/test_tsv.rb +4 -4
- data/test/rbbt/persist/tsv/test_lmdb.rb +7 -5
- data/test/rbbt/test_entity.rb +8 -5
- data/test/rbbt/test_knowledge_base.rb +107 -30
- data/test/rbbt/test_packed_index.rb +5 -5
- data/test/rbbt/test_tsv.rb +1 -1
- data/test/rbbt/test_workflow.rb +83 -78
- data/test/rbbt/tsv/test_accessor.rb +4 -0
- data/test/rbbt/tsv/test_attach.rb +2 -5
- data/test/rbbt/tsv/test_index.rb +8 -2
- data/test/rbbt/tsv/test_manipulate.rb +0 -3
- data/test/rbbt/util/R/test_model.rb +0 -2
- data/test/rbbt/util/misc/test_bgzf.rb +3 -3
- data/test/rbbt/util/misc/test_communication.rb +5 -3
- data/test/rbbt/util/test_migrate.rb +1 -3
- data/test/rbbt/util/test_misc.rb +7 -2
- data/test/rbbt/util/test_procpath.rb +1 -1
- data/test/rbbt/util/test_python.rb +12 -8
- data/test/rbbt/workflow/step/test_dependencies.rb +0 -4
- data/test/rbbt/workflow/test_remote_workflow.rb +6 -5
- data/test/rbbt/workflow/util/test_archive.rb +4 -8
- data/test/rbbt/workflow/util/test_orchestrator.rb +5 -15
- data/test/test_helper.rb +25 -1
- metadata +5 -5
- 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
|
-
|
6
|
-
extend Workflow
|
5
|
+
require_relative '../hpc_test_workflows'
|
7
6
|
|
8
|
-
|
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
|
-
|
6
|
-
extend Workflow
|
4
|
+
require_relative '../hpc_test_workflows'
|
7
5
|
|
8
|
-
|
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
|
-
|
6
|
-
extend Workflow
|
5
|
+
require_relative '../hpc_test_workflows'
|
7
6
|
|
8
|
-
|
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
|
---
|
data/test/rbbt/hpc/test_batch.rb
CHANGED
@@ -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
|
-
|
5
|
+
require_relative 'hpc_test_workflows'
|
6
6
|
|
7
|
-
|
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 =
|
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 =
|
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, :
|
29
|
-
|
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 =
|
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, :
|
40
|
-
|
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 =
|
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, :
|
51
|
-
|
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 =
|
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, :
|
62
|
-
|
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
|
data/test/rbbt/hpc/test_pbs.rb
CHANGED
@@ -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
|
-
|
28
|
+
assert_include template, "rbbt workflow task TestWorkflow hello"
|
29
29
|
|
30
30
|
end
|
31
31
|
end
|
data/test/rbbt/hpc/test_slurm.rb
CHANGED
@@ -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
|
7
|
-
|
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
|
-
|
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
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
-
|
39
|
-
|
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
|
|
@@ -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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
44
|
-
|
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
|
7
|
-
|
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
|
11
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
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
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
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
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
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
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
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
|
-
|
29
|
+
test = db.keys.sort{rand}[1..100000]
|
30
30
|
Misc.benchmark(5, "Access #{test.length} random entries") do
|
31
|
-
|
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
|
-
|
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
|
-
|
85
|
+
assert_equal [[1.1], [2.1]], tsv["k1"]
|
86
86
|
end
|
87
87
|
end
|
88
88
|
end
|