rbbt-util 5.5.6 → 5.5.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGQwMjZkMjVjNGY1NDQwZWRhOTk2MzBiMmE5ZDE5MTM3YjZjOWFhOA==
4
+ OTU3NGViM2M2ODk0ODA1MzA2OTU4ZDUyYzg4ODAxNWU2YzdmYTY1NQ==
5
5
  data.tar.gz: !binary |-
6
- YjBmMDgyOThhMDYyZTVkMjdkOTdlMTJlYmZlYjEyNDNmNmM1ZDdiNQ==
6
+ MzhkMWQwMmZlMjA1MjQ5YTQwM2QzN2M2NWNlZmE1OGVmYzg3NDM2ZA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YWMyNGU5NGE0ODhkYWZlZmU2OTFhMDM1MjIwMGU2ODNlMWQ2YTA3YzhlNmVj
10
- OWZjN2FkMjNiZDBhN2QwMGEyZTc0NTBhOGI4MzZhNzA0MjNmYWUxYTMzZWZj
11
- MzEwZDQ4ZWQyYTE1NzI2MTdiZGQwYTE1NDZjOTMxMjdjNThkZDc=
9
+ ZGZlMWVlODIxN2M4NjQ0MTJiYTIzNWE3MGFjZThmMmJjY2M5OWMwMmZjNWE1
10
+ ODllNjA3NDZlZGRhOTBmYTY0ZGVjOGRlZWNkM2Y2MWE0YzQyNGEzYTk3NWYx
11
+ MzQ4MTk4NDlhZWU4ZTY2YTIzZWM2MjUwMjUzNDI3NzdlMmZlODE=
12
12
  data.tar.gz: !binary |-
13
- OGJlNGE2Yzk2OTY4NjRlMzg5MWJhNTNjZWZhNjc1YjU0MWQ1Y2EyNjc0Mjgy
14
- MTYwYWQ0MTVmM2ZiOTcxYjNhMWIxNjkxYTY4NzYzZGZlYjExMzg2YmEwZjg1
15
- MDY1YjJlNjIyY2UxYjU2N2QyYzg3NDg1NGNjNTJkYWE4ZWNhZDM=
13
+ ZmRhY2QyOGIyZjRjZTYwNzY4OThhNjUyZGM2ZWZiOTA0MmI2OTVhYWE4MmM1
14
+ OTA5NGU2OGYxODYzODZjMDk0MTU4ZDczYTdhZjljODU0ZmM5MzcwYTBhM2Qz
15
+ MTczYWYwYjg4MDNjYjU2NWQ2MWI0YjljNTFlNzY1OTUxMWM3ODU=
@@ -68,7 +68,7 @@ module Association
68
68
 
69
69
  def self.open_tsv(file, source, source_header, target, target_header, all_fields, options)
70
70
  fields = all_fields.dup
71
- fields.delete source
71
+ fields.delete source
72
72
  fields.delete target
73
73
  fields.unshift target
74
74
 
@@ -87,9 +87,11 @@ module Association
87
87
 
88
88
  tsv = case file
89
89
  when TSV
90
- file.fields == field_headers ?
91
- file :
90
+ if file.fields == field_headers
91
+ file
92
+ else
92
93
  file.reorder(source, field_headers)
94
+ end
93
95
  else
94
96
  TSV.open(file, open_options)
95
97
  end
@@ -169,7 +171,7 @@ module Association
169
171
 
170
172
  target, target_header, orig_target_format = calculate_headers(key_field, fields, target_spec)
171
173
  target_format ||= orig_target_format
172
- target = (([key_field] + fields) - [source]).first if target.nil?
174
+ target = (key_field == source ? fields.first : (([key_field] + fields) - [source]).first) if target.nil?
173
175
  target = key_field if target == :key
174
176
  target_header ||= target
175
177
 
@@ -201,9 +203,9 @@ module Association
201
203
 
202
204
  source, source_header, source_format, target, target_header, target_format = specs(all_fields, options)
203
205
 
204
- Log.info("Loading associations from: #{ Misc.fingerprint file }")
205
- Log.info("sources: #{ [source, source_header, source_format].join(", ") }")
206
- Log.info("targets: #{ [target, target_header, target_format].join(", ") }")
206
+ Log.low("Loading associations from: #{ Misc.fingerprint file }")
207
+ Log.low("sources: #{ [source, source_header, source_format].join(", ") }")
208
+ Log.low("targets: #{ [target, target_header, target_format].join(", ") }")
207
209
 
208
210
  tsv = open_tsv(file, source, source_header, target, target_header, all_fields, options)
209
211
 
@@ -229,8 +231,13 @@ module Association
229
231
 
230
232
  tsv.annotate(data)
231
233
  data.serializer = tsv.type if TokyoCabinet::HDB === data
232
- data.merge! tsv
233
- tsv.annotate data
234
+
235
+ tsv.with_unnamed do
236
+ tsv.each do |k,v|
237
+ next if v.nil?
238
+ data[k] = v
239
+ end
240
+ end
234
241
 
235
242
  data
236
243
  end
@@ -238,9 +245,9 @@ module Association
238
245
 
239
246
  #{{{ Index
240
247
 
241
- def self.get_index(index_file, write = false)
242
- Persist.open_tokyocabinet(index_file, write, :list, TokyoCabinet::BDB).tap{|r| r.unnamed = true; Association::Index.setup r }
243
- end
248
+ #def self.get_index(index_file, write = false)
249
+ # Persist.open_tokyocabinet(index_file, write, :list, TokyoCabinet::BDB).tap{|r| r.unnamed = true; Association::Index.setup r }
250
+ #end
244
251
 
245
252
  def self.index(file, options = {}, persist_options = {})
246
253
  options = {} if options.nil?
@@ -45,6 +45,7 @@ class KnowledgeBase
45
45
 
46
46
  def register(name, file = nil, options = {}, &block)
47
47
  if block_given?
48
+ block.define_singleton_method(:filename) do name.to_s end
48
49
  Log.debug("Registering #{ name } from code block")
49
50
  @registry[name] = [block, options]
50
51
  else
@@ -53,10 +54,20 @@ class KnowledgeBase
53
54
  end
54
55
  end
55
56
 
57
+ def syndicate(kb, name)
58
+ kb.all_databases.each do |database|
59
+ db_name = [database, name] * "@"
60
+ register(db_name) do
61
+ kb.get_database(database)
62
+ end
63
+ end
64
+ end
65
+
56
66
  def all_databases
57
67
  (@indices.keys + @registry.keys).uniq
58
68
  end
59
69
 
70
+
60
71
  def description(name)
61
72
  @descriptions[name] ||= get_index(name).key_field.split("~")
62
73
  end
@@ -100,6 +111,7 @@ class KnowledgeBase
100
111
  end
101
112
 
102
113
  def get_database(name, options = {})
114
+ options = Misc.add_defaults options, :persist_dir => dir.databases
103
115
  persist_options = Misc.pull_keys options, :persist
104
116
 
105
117
  file, registered_options = registry[name]
@@ -107,7 +119,7 @@ class KnowledgeBase
107
119
  raise "Repo #{ name } not found and not registered" if file.nil?
108
120
 
109
121
  @databases[name] ||= begin
110
- Log.debug "Opening database #{ name } from #{ Misc.fingerprint file }. #{options}"
122
+ Log.low "Opening database #{ name } from #{ Misc.fingerprint file }. #{options}"
111
123
  Association.open(file, options, persist_options).
112
124
  tap{|tsv| tsv.namespace = self.namespace}
113
125
  end
@@ -115,6 +127,7 @@ class KnowledgeBase
115
127
 
116
128
 
117
129
  def get_index(name, options = {})
130
+ options = Misc.add_defaults options, :persist_dir => dir.indices
118
131
  persist_options = Misc.pull_keys options, :persist
119
132
 
120
133
  file, registered_options = registry[name]
@@ -122,7 +135,7 @@ class KnowledgeBase
122
135
  raise "Repo #{ name } not found and not registered" if file.nil?
123
136
 
124
137
  @indices[name] ||= begin
125
- Log.debug "Opening index #{ name } from #{ Misc.fingerprint file }. #{options}"
138
+ Log.low "Opening index #{ name } from #{ Misc.fingerprint file }. #{options}"
126
139
  Association.index(file, options, persist_options).
127
140
  tap{|tsv| tsv.namespace = self.namespace}
128
141
  end
data/lib/rbbt/util/log.rb CHANGED
@@ -19,7 +19,7 @@ module Log
19
19
 
20
20
  WHITE, DARK, GREEN, YELLOW, RED = ["0;37m", "0m", "0;32m", "0;33m", "0;31m"].collect{|e| "\033[#{e}"}
21
21
 
22
- SEVERITY_COLOR = [WHITE, GREEN, YELLOW, RED,WHITE, GREEN, YELLOW].collect{|e| "\033[#{e}"}
22
+ SEVERITY_COLOR = [WHITE, GREEN, YELLOW, RED, GREEN, YELLOW, ERROR].collect{|e| "\033[#{e}"}
23
23
 
24
24
  def self.log(message = nil, severity = MEDIUM, &block)
25
25
  message ||= block
@@ -91,7 +91,6 @@ class TestKnowledgeBase < Test::Unit::TestCase
91
91
  found = Genomics.knowledge_base.identify :pina, gene
92
92
  p53_interactors = Misc.profile{ Genomics.knowledge_base.children(:pina, found).target_entity }
93
93
 
94
- ddd p53_interactors.length
95
94
 
96
95
  Misc.profile do
97
96
  puts Genomics.knowledge_base.subset(:pina,{"Gene" => p53_interactors}).length
@@ -100,5 +99,13 @@ class TestKnowledgeBase < Test::Unit::TestCase
100
99
  #assert Genomics.knowledge_base.subset(:pina,{"Gene" => p53_interactors}).target_entities.name.include? "MDM2"
101
100
  end
102
101
 
102
+ def test_syndication
103
+ kb = KnowledgeBase.new Rbbt.tmp.test.kb2, "Hsa/jan2013"
104
+ kb.syndicate @kb, :genomics
105
+
106
+ gene = "TP53"
107
+ found = kb.identify "pina@genomics", gene
108
+ assert found =~ /ENSG/
109
+ end
103
110
  end
104
111
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.6
4
+ version: 5.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez