rbbt-util 5.14.33 → 5.14.34

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/bin/rbbt +2 -0
  3. data/lib/rbbt/association/database.rb +153 -0
  4. data/lib/rbbt/association/index.rb +89 -20
  5. data/lib/rbbt/association/open.rb +37 -0
  6. data/lib/rbbt/association/util.rb +133 -0
  7. data/lib/rbbt/association.rb +1 -380
  8. data/lib/rbbt/entity/identifiers.rb +106 -0
  9. data/lib/rbbt/entity.rb +1 -0
  10. data/lib/rbbt/knowledge_base/entity.rb +107 -0
  11. data/lib/rbbt/knowledge_base/query.rb +83 -0
  12. data/lib/rbbt/knowledge_base/registry.rb +106 -0
  13. data/lib/rbbt/knowledge_base/syndicate.rb +22 -0
  14. data/lib/rbbt/knowledge_base.rb +6 -359
  15. data/lib/rbbt/tsv/accessor.rb +4 -0
  16. data/lib/rbbt/tsv/change_id.rb +119 -0
  17. data/lib/rbbt/tsv/index.rb +6 -2
  18. data/lib/rbbt/tsv/parser.rb +7 -5
  19. data/lib/rbbt/tsv/util.rb +1 -1
  20. data/lib/rbbt/tsv.rb +2 -1
  21. data/lib/rbbt/util/R/model.rb +1 -1
  22. data/lib/rbbt/util/log.rb +2 -2
  23. data/lib/rbbt/util/misc/bgzf.rb +2 -0
  24. data/lib/rbbt/util/misc/inspect.rb +1 -1
  25. data/lib/rbbt-util.rb +11 -7
  26. data/lib/rbbt.rb +0 -1
  27. data/share/rbbt_commands/app/start +1 -1
  28. data/share/rbbt_commands/tsv/change_id +2 -2
  29. data/test/rbbt/association/test_database.rb +61 -0
  30. data/test/rbbt/association/test_index.rb +67 -22
  31. data/test/rbbt/association/test_open.rb +68 -0
  32. data/test/rbbt/association/test_util.rb +108 -0
  33. data/test/rbbt/entity/test_identifiers.rb +40 -0
  34. data/test/rbbt/knowledge_base/test_entity.rb +0 -0
  35. data/test/rbbt/knowledge_base/test_query.rb +45 -0
  36. data/test/rbbt/knowledge_base/test_registry.rb +52 -0
  37. data/test/rbbt/test_association.rb +3 -3
  38. data/test/rbbt/test_knowledge_base.rb +79 -51
  39. data/test/rbbt/test_monitor.rb +0 -2
  40. data/test/rbbt/test_packed_index.rb +1 -1
  41. data/test/rbbt/test_resource.rb +6 -6
  42. data/test/rbbt/test_tsv.rb +34 -44
  43. data/test/rbbt/tsv/parallel/test_through.rb +2 -4
  44. data/test/rbbt/tsv/parallel/test_traverse.rb +30 -28
  45. data/test/rbbt/tsv/test_change_id.rb +10 -0
  46. data/test/rbbt/util/R/test_model.rb +9 -10
  47. data/test/rbbt/util/test_misc.rb +1 -1
  48. data/test/test_helper.rb +4 -1
  49. metadata +24 -2
data/lib/rbbt/tsv/util.rb CHANGED
@@ -171,7 +171,7 @@ module TSV
171
171
  str = ""
172
172
  str << preamble.strip << "\n" if preamble and not preamble.empty?
173
173
  if fields
174
- str << "#" << (key_field || "ID") << sep << fields * sep << "\n"
174
+ str << "#" << (key_field || "ID").to_s << sep << (fields * sep) << "\n"
175
175
  end
176
176
 
177
177
  str
data/lib/rbbt/tsv.rb CHANGED
@@ -124,7 +124,8 @@ module TSV
124
124
 
125
125
  def self.parse(stream, data, options = {})
126
126
 
127
- parser = TSV::Parser.new stream, options
127
+ parser = Misc.process_options options, :parser
128
+ parser = TSV::Parser.new stream, options if parser.nil?
128
129
 
129
130
  # dump with tchmgr
130
131
  if defined? TokyoCabinet and TokyoCabinet::HDB === data and parser.straight and
@@ -16,7 +16,7 @@ module R
16
16
 
17
17
  self.model_dir = Rbbt.var.R.models
18
18
  class Model
19
- R_METHOD = :debug
19
+ R_METHOD = :eval
20
20
 
21
21
  attr_accessor :name, :formula
22
22
  def initialize(name, formula, options = {})
data/lib/rbbt/util/log.rb CHANGED
@@ -235,8 +235,8 @@ module Log
235
235
 
236
236
  def self.tsv(tsv)
237
237
  STDERR.puts Log.color :magenta, "TSV log: " << Log.last_caller(caller)
238
- iif tsv
239
- ppp tsv.summary
238
+ puts Log.color(:blue, "=> "<< Misc.fingerprint(tsv), true)
239
+ puts Log.color(:cyan, "=> " << tsv.summary)
240
240
  end
241
241
 
242
242
  def self.stack(stack)
@@ -1,3 +1,5 @@
1
+ require 'rbbt/persist'
2
+ require 'set'
1
3
 
2
4
  module Bgzf
3
5
  attr_accessor :data_offset, :compressed_stream, :block_cache_size
@@ -161,7 +161,7 @@ module Misc
161
161
 
162
162
  end
163
163
 
164
- str << "_" << hash2md5(v.info) if defined? Annotated and Annotated === v and not AssociationItem === v
164
+ str << "_" << hash2md5(v.info) if defined? Annotated and Annotated === v and not (defined? AssociationItem and AssociationItem === v)
165
165
  end
166
166
  hash.unnamed = unnamed if hash.respond_to? :unnamed
167
167
 
data/lib/rbbt-util.rb CHANGED
@@ -1,13 +1,17 @@
1
1
  require 'rbbt'
2
+ require 'rbbt/util/misc'
2
3
  require 'rbbt/util/open'
3
- require 'rbbt/util/cmd'
4
- require 'rbbt/util/tmpfile'
5
- require 'rbbt/util/filecache'
6
- require 'rbbt/tsv'
4
+ Open.cachedir = Rbbt.var.cache["open-remote"].find :user
5
+
7
6
  require 'rbbt/persist'
8
- require 'rbbt/util/misc'
7
+ Persist.cachedir = Rbbt.var.cache.persistence
9
8
 
9
+ require 'rbbt/util/filecache'
10
10
  FileCache.cachedir = Rbbt.var.cache.filecache.find :user
11
- Open.cachedir = Rbbt.var.cache["open-remote"].find :user
11
+
12
+ require 'rbbt/util/tmpfile'
12
13
  TmpFile.tmpdir = Rbbt.tmp.find :user
13
- Persist.cachedir = Rbbt.var.cache.persistence
14
+
15
+ require 'rbbt/util/cmd'
16
+ require 'rbbt/tsv'
17
+
data/lib/rbbt.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'rbbt/resource'
2
-
3
2
  module Rbbt
4
3
  extend Resource
5
4
  pkgdir = 'rbbt'
@@ -3,7 +3,7 @@
3
3
  require 'rbbt-util'
4
4
  require 'rbbt/util/simpleopt'
5
5
 
6
- options = SOPT.get "-e--environment*:-p--port*:-s--server*:-f--finder-R--Rserve_session*"
6
+ options = SOPT.get "-e--environment*:-p--port*:-s--server*:-f--finder:-R--Rserve_session*"
7
7
  options[:Port] ||= options[:port]
8
8
 
9
9
 
@@ -11,7 +11,7 @@ $ rbbt command command [options] -f file
11
11
 
12
12
  Use - to read from STDIN. The `field` is the tsv column to change.
13
13
  the `target` is the target format, as appearing in the `identifiers`
14
- file or in `Organism.identifiers("Hsa")`.
14
+ file or in `Organism.identifiers(Organism.default_code("Hsa"))`.
15
15
 
16
16
  -f--file* File to process
17
17
  -f--field* Field to change
@@ -26,7 +26,7 @@ SOPT.require options, :file, :field, :target
26
26
 
27
27
  require 'rbbt/sources/organism'
28
28
 
29
- identifiers = options[:identifiers] || Organism.identifiers("Hsa").find
29
+ identifiers = options[:identifiers] || Organism.identifiers(Organism.default_code("Hsa")).find
30
30
 
31
31
  begin
32
32
  index = TSV.index(identifiers, :persist => true, :target => target, :merge => true)
@@ -0,0 +1,61 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
2
+ require 'rbbt-util'
3
+ require 'rbbt/association'
4
+ require 'rbbt/association'
5
+ require 'rbbt/association/database'
6
+
7
+ class TestAssociationDatabase < Test::Unit::TestCase
8
+
9
+ EFFECT =<<-END
10
+ #: :sep=" "#:type=:double
11
+ #SG TG Effect directed?
12
+ MDM2 TP53 inhibition false
13
+ TP53 NFKB1|GLI1 activation|activation true|true
14
+ END
15
+
16
+ EFFECT_OPTIONS = {
17
+ :source => "SG=~Associated Gene Name",
18
+ :target => "TG=~Associated Gene Name=>Ensembl Gene ID",
19
+ :persist => false,
20
+ :identifiers => datafile_test('identifiers'),
21
+ }
22
+
23
+ EFFECT_TSV = TSV.open EFFECT, EFFECT_OPTIONS.dup
24
+ def test_tsv
25
+ assert_equal %w(NFKB1 GLI1), EFFECT_TSV["TP53"]["TG"]
26
+ end
27
+
28
+ EFFECT_DATABASE = Association.database(EFFECT_TSV, EFFECT_OPTIONS.dup)
29
+
30
+ def test_open_new_tsv
31
+ tsv = Association.database EFFECT_TSV, :fields => ["Effect"], :target => "TG=~Associated Gene Name=>Ensembl Gene ID"
32
+ assert_equal ["Ensembl Gene ID", "Effect"], tsv.fields
33
+ assert_equal "SG", tsv.key_field
34
+ assert tsv.include? "MDM2"
35
+ end
36
+
37
+ def test_open_new_tsv_reverse
38
+ tsv = Association.database EFFECT_TSV, :fields => ["Effect"], :target => "SG=~Associated Gene Name=>Ensembl Gene ID", :zipped => true
39
+ assert_equal ["Ensembl Gene ID", "Effect"], tsv.fields
40
+ assert_equal "TG", tsv.key_field
41
+ assert tsv.include? "NFKB1"
42
+ end
43
+
44
+ def test_database_translate
45
+ database = Association.database(EFFECT_TSV, EFFECT_OPTIONS.merge({:source => "SG=~Associated Gene Name=>Ensembl Gene ID", :target => "TG"}))
46
+ assert_equal %w(inhibition), database["ENSG00000135679"]["Effect"]
47
+ assert_equal %w(activation activation), database["ENSG00000141510"]["Effect"]
48
+ end
49
+
50
+ def test_database
51
+ assert_equal %w(inhibition), EFFECT_DATABASE["MDM2"]["Effect"]
52
+ assert_equal %w(activation activation), EFFECT_DATABASE["TP53"]["Effect"]
53
+ end
54
+
55
+ def test_index_list
56
+ file = datafile_test('gene_ages')
57
+ tsv = Association.database(file)
58
+ assert_equal [["Bilateria"], ["Euteleostomi"], ["Duplicate"]], tsv["ENSG00000000003"]
59
+ end
60
+
61
+ end
@@ -1,37 +1,82 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
2
- require 'rbbt/workflow'
2
+ require 'rbbt/util/misc'
3
3
  require 'rbbt/association'
4
4
  require 'rbbt/association/index'
5
5
 
6
- #Workflow.require_workflow "Genomics"
7
- #require 'rbbt/entity/gene'
8
-
9
6
  class TestAssociationIndex < Test::Unit::TestCase
7
+
8
+ EFFECT =<<-END
9
+ #: :sep=" "#:type=:double
10
+ #SG TG Effect directed?
11
+ MDM2 TP53 inhibition false
12
+ TP53 NFKB1|GLI1 activation|activation true|true
13
+ END
14
+
15
+ EFFECT_OPTIONS = {
16
+ :source => "SG=~Associated Gene Name",
17
+ :target => "TG=~Associated Gene Name=>Ensembl Gene ID",
18
+ :persist => false,
19
+ :identifiers => datafile_test('identifiers'),
20
+ :namespace => "Hsa"
21
+ }
22
+
23
+ EFFECT_TSV = TSV.open EFFECT, EFFECT_OPTIONS.dup
24
+
25
+ def test_index_no_persist_string
26
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:source => "TG", :target => "SG=~Associated Gene Name"), :persist => false)
27
+ tsv.unnamed = false
28
+ assert_equal "inhibition", tsv["TP53~MDM2"]["Effect"]
29
+ end
30
+
31
+ def test_index_no_persist_string_undirected
32
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:undirected => true, :source => "TG", :target => "SG=~Associated Gene Name"), :persist => false)
33
+ tsv.unnamed = false
34
+ assert_equal "inhibition", tsv["TP53~MDM2"]["Effect"]
35
+ end
10
36
 
11
- def setup
37
+ def test_index_persist_string
38
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:source => "SG", :target => "TG=~Associated Gene Name"), :persist => true, :update => true)
39
+ tsv.unnamed = false
40
+ assert_equal "inhibition", tsv["MDM2~TP53"]["Effect"]
41
+ assert_equal %w(TP53~NFKB1 TP53~GLI1).sort, tsv.match("TP53").sort
12
42
  end
13
43
 
14
- def teardown
44
+ def test_index_persist_reverse
45
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:source => "TG", :target => "SG=~Associated Gene Name"), :persist => true, :update => true).reverse
46
+ tsv.unnamed = false
47
+ assert_equal "inhibition", tsv["MDM2~TP53"]["Effect"]
48
+ assert_equal %w(MDM2~TP53), tsv.match("MDM2")
15
49
  end
16
50
 
51
+ def test_index_persist_undirected
52
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:undirected => true, :source => "TG=~Associated Gene Name", :target => "SG=~Associated Gene Name"), :persist => true)
53
+ tsv.unnamed = false
54
+ assert_equal "inhibition", tsv["MDM2~TP53"]["Effect"]
55
+ assert_equal "inhibition", tsv["TP53~MDM2"]["Effect"]
56
+ assert_equal %w(MDM2~TP53), tsv.match("MDM2")
57
+ end
17
58
 
18
- def __test_subset
19
- require 'rbbt/sources/pina'
20
- require 'rbbt/sources/kegg'
21
- tp53 = Gene.setup("TP53", "Associated Gene Name", "Hsa/jan2013").ensembl
22
- index = Association.index(Pina.protein_protein,
23
- {:namespace => tp53.organism,
24
- :target => "Interactor UniProt/SwissProt Accession=~UniProt/SwissProt Accession",
25
- :format => "Ensembl Gene ID",
26
- :undirected => true},
27
- {:dir => '/tmp/test_association3', :update => false})
28
- genes = tp53.pina_interactors.ensembl
29
- genes << tp53
59
+ def test_index_persist_directed_subset
60
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:undirected => true, :source => "TG=~Associated Gene Name", :target => "SG=~Associated Gene Name"), :persist => true)
61
+ tsv.unnamed = false
62
+ assert_equal %w(TP53~GLI1 TP53~MDM2).sort, tsv.subset(["TP53"], ["GLI1","MDM2"]).sort
63
+ assert_equal %w(MDM2~TP53).sort, tsv.subset(["MDM2"], :all).sort
64
+ assert_equal %w(GLI1~TP53).sort, tsv.subset(["GLI1"], :all).sort
65
+ assert_equal %w(TP53~GLI1).sort, tsv.subset(:all, ["GLI1"]).sort
66
+ end
30
67
 
31
- Misc.benchmark(100) do
32
- index.subset_entities("Ensembl Gene ID" => genes).length
33
- end
68
+ def test_index_persist_undirected_subset
69
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:undirected => false, :source => "SG=~Associated Gene Name", :target => "TG=~Associated Gene Name"), :persist => true)
70
+ tsv.unnamed = false
71
+ assert_equal %w(TP53~GLI1 TP53~NFKB1).sort, tsv.subset(["TP53"], ["GLI1","MDM2", "NFKB1"]).sort
72
+ end
34
73
 
35
- assert_equal 204, index.subset_entities("Ensembl Gene ID" => genes).select{|m| m.partition("~")[0] == tp53}.uniq.length
74
+ def test_index_flat
75
+ require 'rbbt/sources/tfacts'
76
+ file = TFacts.regulators
77
+ tsv = Association.index(file, :type => :flat, :source => "Transcription Factor Associated Gene Name=~Associated Gene Name", :merge => true)
78
+ assert tsv.match("TP53").length > 10
36
79
  end
80
+
81
+
37
82
  end
@@ -0,0 +1,68 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
2
+ require 'rbbt/util/misc'
3
+ require 'rbbt/association'
4
+ require 'rbbt/association/open'
5
+
6
+ class TestAssociationOpen < Test::Unit::TestCase
7
+
8
+ EFFECT =<<-END
9
+ #: :sep=" "#:type=:double
10
+ #SG TG Effect directed?
11
+ MDM2 TP53 inhibition false
12
+ TP53 NFKB1|GLI1 activation|activation true|true
13
+ END
14
+
15
+ EFFECT_OPTIONS = {
16
+ :source => "SG=~Associated Gene Name",
17
+ :target => "TG=~Associated Gene Name=>Ensembl Gene ID",
18
+ :persist => false,
19
+ :identifiers => datafile_test('identifiers'),
20
+ :namespace => "Hsa"
21
+ }
22
+
23
+ EFFECT_TSV = TSV.open EFFECT, EFFECT_OPTIONS.dup
24
+
25
+ def test_open_no_persist
26
+ tsv = Association.open(EFFECT_TSV, EFFECT_OPTIONS, :persist => false)
27
+ assert_equal "ENSG00000141510", tsv["MDM2"]["Ensembl Gene ID"].first
28
+ assert_equal ["false"], tsv["MDM2"]["directed?"]
29
+ end
30
+
31
+ def test_open_no_persist_undirected
32
+ tsv = Association.open(EFFECT_TSV, :source => "SG=~Gene", :target => "TG=~Gene", :undirected => true, :persist => false)
33
+ assert_equal "TP53", tsv["MDM2"]["Gene"].first
34
+ assert tsv["TP53"]["Gene"].include? "MDM2"
35
+ end
36
+
37
+ def test_open_persist
38
+ tsv = Association.open(EFFECT_TSV, EFFECT_OPTIONS, :persist => true, :update => true)
39
+ assert_equal "ENSG00000141510", tsv["MDM2"]["Ensembl Gene ID"].first
40
+ assert_equal ["false"], tsv["MDM2"]["directed?"]
41
+ end
42
+
43
+ def test_open_no_persist_string
44
+ tsv = Association.open(EFFECT, EFFECT_OPTIONS.merge(:source => "TG", :target => "SG=~Associated Gene Name"), :persist => false)
45
+ tsv.include? "TP53"
46
+ assert_equal ["MDM2"], tsv["TP53"]["Associated Gene Name"]
47
+ end
48
+
49
+ def test_index_no_persist_string
50
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:source => "TG", :target => "SG=~Associated Gene Name"), :persist => false)
51
+ tsv.unnamed = false
52
+ assert_equal "inhibition", tsv["TP53~MDM2"]["Effect"]
53
+ end
54
+
55
+ def test_index_persist_string
56
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:source => "SG", :target => "TG=~Associated Gene Name"), :persist => true)
57
+ tsv.unnamed = false
58
+ assert_equal "inhibition", tsv["MDM2~TP53"]["Effect"]
59
+ assert_equal %w(TP53~GLI1 TP53~NFKB1), tsv.match("TP53").sort
60
+ end
61
+
62
+ def test_index_persist_reverse
63
+ tsv = Association.index(EFFECT, EFFECT_OPTIONS.merge(:source => "TG", :target => "SG=~Associated Gene Name"), :persist => true).reverse
64
+ tsv.unnamed = false
65
+ assert_equal "inhibition", tsv["MDM2~TP53"]["Effect"]
66
+ assert_equal %w(MDM2~TP53), tsv.match("MDM2")
67
+ end
68
+ end
@@ -0,0 +1,108 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../test_helper')
2
+ require 'rbbt/util/misc'
3
+ require 'rbbt/association'
4
+ require 'rbbt/association'
5
+ require 'rbbt/association/util'
6
+
7
+ class TestAssociationUtil < Test::Unit::TestCase
8
+
9
+ def test_specs
10
+ spec = Association.parse_field_specification "=~Associated Gene Name=>Ensembl Gene ID"
11
+ assert_equal [nil, "Associated Gene Name", "Ensembl Gene ID"], spec
12
+
13
+ spec = Association.parse_field_specification "TG=~Associated Gene Name=>Ensembl Gene ID"
14
+ assert_equal ["TG", "Associated Gene Name", "Ensembl Gene ID"], spec
15
+
16
+ spec = Association.parse_field_specification "TG=~Associated Gene Name"
17
+ assert_equal ["TG", "Associated Gene Name", nil], spec
18
+
19
+ spec = Association.parse_field_specification "Associated Gene Name=>Ensembl Gene ID"
20
+ assert_equal ["Associated Gene Name", nil, "Ensembl Gene ID"], spec
21
+ end
22
+
23
+ def test_normalize_specs
24
+ spec = Association.normalize_specs "TG=~Associated Gene Name=>Ensembl Gene ID", %w(SG TG Effect directed?)
25
+ assert_equal ["TG", "Associated Gene Name", "Ensembl Gene ID"], spec
26
+
27
+ spec = Association.normalize_specs "Ensembl Gene ID", %w(SG TG Effect directed?)
28
+ assert_equal ["Ensembl Gene ID", nil, nil], spec
29
+
30
+ spec = Association.normalize_specs "Ensembl Gene ID"
31
+ assert_equal ["Ensembl Gene ID", nil, nil], spec
32
+ end
33
+
34
+ def test_process_specs
35
+ spec = Association.extract_specs %w(SG TG Effect directed?), :target => "TG=~Associated Gene Name=>Ensembl Gene ID"
36
+ assert_equal ["TG", "Associated Gene Name", "Ensembl Gene ID"], spec[:target]
37
+ assert_equal ["SG", nil, nil], spec[:source]
38
+
39
+ spec = Association.extract_specs %w(SG TG Effect directed?)
40
+ assert_equal ["SG", nil, nil], spec[:source]
41
+ assert_equal ["TG", nil,nil], spec[:target]
42
+
43
+ spec = Association.extract_specs %w(SG TG Effect directed?), :source => "TG"
44
+ assert_equal ["TG", nil, nil], spec[:source]
45
+ assert_equal ["SG", nil,nil], spec[:target]
46
+
47
+ spec = Association.extract_specs %w(SG TG Effect directed?), :source => "SG"
48
+ assert_equal ["SG", nil, nil], spec[:source]
49
+ assert_equal ["TG", nil,nil], spec[:target]
50
+
51
+ spec = Association.extract_specs %w(SG TG Effect directed?), :target => "SG"
52
+ assert_equal ["TG", nil, nil], spec[:source]
53
+ assert_equal ["SG", nil,nil], spec[:target]
54
+ end
55
+
56
+ def test_headers
57
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect)
58
+ assert_equal 0, spec[0]
59
+ assert_equal 1, spec[1][0]
60
+
61
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :source => "SG"
62
+ assert_equal 0, spec[0]
63
+ assert_equal 1, spec[1][0]
64
+
65
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "TG"
66
+ assert_equal 0, spec[0]
67
+ assert_equal 1, spec[1][0]
68
+
69
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "TG", :source => "SG"
70
+ assert_equal 0, spec[0]
71
+ assert_equal 1, spec[1][0]
72
+
73
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :source => "TG"
74
+ assert_equal 1, spec[0]
75
+ assert_equal 0, spec[1][0]
76
+
77
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "SG"
78
+ assert_equal 1, spec[0]
79
+ assert_equal 0, spec[1][0]
80
+
81
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "SG", :source => "TG"
82
+ assert_equal 1, spec[0]
83
+ assert_equal 0, spec[1][0]
84
+
85
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "SG", :source => "TG=~Associated Gene Name=>Ensembl Gene ID"
86
+ assert_equal 1, spec[0]
87
+ assert_equal 0, spec[1][0]
88
+
89
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "SG=~Associated Gene Name=>Ensembl Gene ID", :source => "TG=~Associated Gene Name=>Ensembl Gene ID"
90
+ assert_equal 1, spec[0]
91
+ assert_equal 0, spec[1][0]
92
+
93
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "SG=~Associated Gene Name", :source => "TG=~Associated Gene Name=>Ensembl Gene ID"
94
+ assert_equal 1, spec[0]
95
+ assert_equal 0, spec[1][0]
96
+
97
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "TG=~Associated Gene Name", :source => "SG=~Associated Gene Name", :target_format => "Ensembl Gene ID"
98
+ assert_equal 0, spec[0]
99
+ assert_equal "Ensembl Gene ID", spec[5]
100
+ assert_equal nil, spec[4]
101
+
102
+
103
+ spec = Association.headers %w(SG TG Effect directed?), %w(Effect), :target => "TG=~Associated Gene Name", :source => "SG=~Associated Gene Name", :source_format => "Ensembl Gene ID"
104
+ assert_equal 0, spec[0]
105
+ assert_equal "Ensembl Gene ID", spec[4]
106
+ assert_equal nil, spec[5]
107
+ end
108
+ end
@@ -0,0 +1,40 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'test_helper.rb')
2
+ require 'rbbt-util'
3
+ require 'rbbt/entity'
4
+ require 'rbbt/entity/identifiers'
5
+
6
+ module Gene
7
+ extend Entity
8
+ end
9
+
10
+ require 'rbbt/sources/kegg'
11
+ require 'rbbt/sources/organism'
12
+ Gene.add_identifiers Organism.identifiers("NAMESPACE"), "Ensembl Gene ID", "Associated Gene Name"
13
+ Gene.add_identifiers KEGG.identifiers
14
+ Gene.add_identifiers Organism.identifiers("NAMESPACE"), "Ensembl Gene ID", "Associated Gene Name"
15
+ Gene.add_identifiers KEGG.identifiers
16
+
17
+ class TestEntityIdentifiers < Test::Unit::TestCase
18
+ def test_name
19
+ Gene.add_identifiers datafile_test('identifiers'), "Ensembl Gene ID", "Associated Gene Name"
20
+ assert_equal "TP53", Gene.setup("ENSG00000141510").name
21
+ end
22
+
23
+ def test_name_organism
24
+ assert_equal "TP53", Gene.setup("ENSG00000141510", "Ensembl Gene ID", "Hsa/feb2014").name
25
+ end
26
+
27
+ def test_identifier_files
28
+ assert Gene.identifier_files.any?
29
+ end
30
+
31
+ def test_Entity_identifier_files
32
+ assert Entity.identifier_files("Ensembl Gene ID").any?
33
+ end
34
+
35
+ def test_translate_kegg
36
+ assert_match "hsa", Gene.setup("ENSG00000141510", "Ensembl Gene ID", "Hsa/feb2014").to("KEGG Gene ID")
37
+ assert_match "TP53", Gene.setup("ENSG00000141510", "Ensembl Gene ID", "Hsa/feb2014").to("KEGG Gene ID").to(:name)
38
+ end
39
+ end
40
+
File without changes
@@ -0,0 +1,45 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '../../../test_helper')
2
+ require 'rbbt/util/tmpfile'
3
+ require 'test/unit'
4
+ require 'rbbt/knowledge_base'
5
+ require 'rbbt/knowledge_base/query'
6
+
7
+ class TestKnowledgeBaseQuery < Test::Unit::TestCase
8
+
9
+ EFFECT =StringIO.new <<-END
10
+ #: :sep=" "#:type=:double
11
+ #SG TG Effect
12
+ MDM2 TP53 inhibition
13
+ TP53 NFKB1|GLI1 activation|activation true|true
14
+ END
15
+
16
+ EFFECT_OPTIONS = {
17
+ :source => "SG=~Associated Gene Name",
18
+ :target => "TG=~Associated Gene Name=>Ensembl Gene ID",
19
+ :persist => false,
20
+ :identifiers => datafile_test('identifiers'),
21
+ :undirected => true,
22
+ :namespace => "Hsa"
23
+ }
24
+
25
+ EFFECT_TSV = TSV.open EFFECT, EFFECT_OPTIONS.dup
26
+
27
+ KNOWLEDGE_BASE = KnowledgeBase.new '/tmp/kb.foo2', "Hsa"
28
+ KNOWLEDGE_BASE.format = {"Gene" => "Ensembl Gene ID"}
29
+
30
+ KNOWLEDGE_BASE.register :effects, EFFECT_TSV, EFFECT_OPTIONS.dup
31
+
32
+ def test_subset_all_persist
33
+ Misc.benchmark(1000) do
34
+ assert_equal 6, KNOWLEDGE_BASE.subset(:effects, :all).length
35
+ assert_equal 4, KNOWLEDGE_BASE.subset(:effects, :all).target_entity.uniq.length
36
+ assert_equal %w(Effect), KNOWLEDGE_BASE.subset(:effects, :all).info.first.keys
37
+ end
38
+ end
39
+
40
+ def test_subset_all_persist_format
41
+ assert KNOWLEDGE_BASE.subset(:effects, :all).target_entity.reject{|e| e =~ /^ENS/}.empty?
42
+ end
43
+
44
+ end
45
+
@@ -0,0 +1,52 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '../../../test_helper')
2
+ require 'rbbt/util/tmpfile'
3
+ require 'test/unit'
4
+ require 'rbbt/knowledge_base'
5
+ require 'rbbt/knowledge_base/registry'
6
+
7
+
8
+ class TestKnowledgeBaseRegistry < Test::Unit::TestCase
9
+
10
+ EFFECT =StringIO.new <<-END
11
+ #: :sep=" "#:type=:double
12
+ #SG TG Effect
13
+ MDM2 TP53 inhibition
14
+ TP53 NFKB1|GLI1 activation|activation true|true
15
+ END
16
+
17
+ EFFECT_OPTIONS = {
18
+ :source => "SG=~Associated Gene Name",
19
+ :target => "TG=~Associated Gene Name=>Ensembl Gene ID",
20
+ :persist => false,
21
+ :identifiers => datafile_test('identifiers'),
22
+ :undirected => true,
23
+ :namespace => "Hsa"
24
+ }
25
+
26
+ EFFECT_TSV = TSV.open EFFECT, EFFECT_OPTIONS.dup
27
+
28
+ KNOWLEDGE_BASE = KnowledgeBase.new '/tmp/kb.foo2'
29
+
30
+ KNOWLEDGE_BASE.register :effects, EFFECT_TSV, EFFECT_OPTIONS.dup
31
+
32
+ def test_database
33
+ assert_equal "Associated Gene Name", KNOWLEDGE_BASE.get_database(:effects, :source_format => "Associated Gene Name").key_field
34
+ end
35
+
36
+ def test_index
37
+ assert KNOWLEDGE_BASE.get_index(:effects, :source_format => "Associated Gene Name", :target_format => "Ensembl Gene ID", :persist => false).include? "MDM2~ENSG00000141510"
38
+ end
39
+
40
+ def test_index_persist
41
+ assert KNOWLEDGE_BASE.get_index(:effects, :source_format => "Associated Gene Name", :target_format => "Ensembl Gene ID", :persist => true).include? "MDM2~ENSG00000141510"
42
+ end
43
+
44
+
45
+ def test_index_flat
46
+ require 'rbbt/sources/tfacts'
47
+ file = TFacts.regulators
48
+ KNOWLEDGE_BASE.register :tfacts, file, :type => :flat, :source => "Transcription Factor Associated Gene Name=~Associated Gene Name", :merge => true
49
+ assert KNOWLEDGE_BASE.subset(:tfacts, :source => ["TP53"], :target => :all).length > 10
50
+ end
51
+ end
52
+
@@ -6,7 +6,9 @@ require 'rbbt/workflow'
6
6
  require 'rbbt/entity'
7
7
 
8
8
  require 'rbbt/association'
9
+ require 'rbbt/association/open'
9
10
  require 'rbbt/knowledge_base'
11
+ require 'rbbt/entity'
10
12
 
11
13
 
12
14
  TEST_ASSOCIATIONS =<<-EOF
@@ -57,9 +59,6 @@ class TestAssociations < Test::Unit::TestCase
57
59
  assert_equal ["aa"], database["TP53"].first
58
60
  end
59
61
 
60
- def test_reciprocal
61
- end
62
-
63
62
 
64
63
  def __test_ICGC
65
64
  assoc = Association.open(Open.open('ftp://data.dcc.icgc.org/current/Chronic_Lymphocytic_Leukemia-ISC_MICINN-ES/simple_somatic_mutation.CLLE-ES.tsv.gz'),
@@ -100,4 +99,5 @@ class TestAssociations < Test::Unit::TestCase
100
99
  assert_equal [tp53.ensembl], database["aa"].first
101
100
  end
102
101
 
102
+
103
103
  end