Module: KnowledgeBaseRESTHelpers

Defined in:
lib/rbbt/rest/knowledge_base/helpers.rb

Class Attribute Summary collapse

Instance Method Summary collapse

Class Attribute Details

.knowledge_base_dirObject

Returns the value of attribute knowledge_base_dir.



6
7
8
# File 'lib/rbbt/rest/knowledge_base/helpers.rb', line 6

def knowledge_base_dir
  @knowledge_base_dir
end

.knowledge_basesObject

Returns the value of attribute knowledge_bases.



6
7
8
# File 'lib/rbbt/rest/knowledge_base/helpers.rb', line 6

def knowledge_bases
  @knowledge_bases
end

Instance Method Details

#get_kb(name) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/rbbt/rest/knowledge_base/helpers.rb', line 28

def get_kb(name)
  @@knowledge_bases ||= IndiferentHash.setup({})
  case name
  when :genomics, "genomics"
    @@knowledge_bases[name] ||= Genomics.knowledge_base
  else
    @@knowledge_bases[name] ||= KnowledgeBase.new File.join(KnowledgeBaseRESTHelpers.knowledge_base_dir, name)
  end
end

#get_knowledge_base(name, namespace = nil) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/rbbt/rest/knowledge_base/helpers.rb', line 55

def get_knowledge_base(name, namespace = nil)
  @@knowledge_bases ||= IndiferentHash.setup({})
  @@knowledge_bases[name] ||= begin
                               kb = case 
                                    when [:genomics, "genomics"].include?(name)
                                      Genomics.knowledge_base
                                    when (Misc.path_relative_to(settings.cache_dir, name) and File.exists?(name))
                                      KnowledgeBase.new name
                                    when KnowledgeBase.registry.include?(name)
                                      KnowledgeBase.registry[name]
                                    when Study.studies.include?(name)
                                      Study.setup(name).knowledge_base
                                    when name.to_s == "user"
                                      user_kb(user)
                                    else
                                      KnowledgeBase.new File.join(KnowledgeBaseRESTHelpers.knowledge_base_dir, name)
                                    end

                               namespace ? kb.version(namespace) : kb
                             end
end

#prepare_entities_for_json(entities) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/rbbt/rest/knowledge_base/helpers.rb', line 11

def prepare_entities_for_json(entities)
  case entities
  when AnnotatedArray
    list_hash(entities)
  when Array
    entities.inject([]){|acc,e| acc << prepare_entities_for_json(e); acc }
  when Hash
    hash = {}
    entities.each do |key,values|
      hash[key] = prepare_entities_for_json(values)
    end
    hash
  when String
    entities
  end
end

#user_kb(user) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rbbt/rest/knowledge_base/helpers.rb', line 38

def user_kb(user)
  @@user_knowledge_bases ||= IndiferentHash.setup({})
  @@user_knowledge_bases[user] ||= begin
                                     kb = KnowledgeBase.new File.join(KnowledgeBaseRESTHelpers.knowledge_base_dir, File.join('user', user)), "Hsa/jan2013"
                                     kb.format["Gene"] = "Ensembl Gene ID"

                                     kb.syndicate Genomics.knowledge_base, :genomics

                                     user_studies[user].each do |study|
                                       next if study.all_mutations.length > 50_000
                                       kb.syndicate study.knowledge_base, study
                                     end

                                     kb
                                   end
end