Sha256: 812ed6ae28f4d78f90f0f1305644473ffb9df1f0d5f8e118b631abdb3dad16f5

Contents?: true

Size: 1.46 KB

Versions: 180

Compression:

Stored size: 1.46 KB

Contents

require 'rbbt/ner/finder'

module EntityRESTHelpers
  def finder_find(term)
    return [] unless settings.respond_to? :finder and not settings.finder.nil? and not settings.finder.instances.empty?
    results = settings.finder.find(term)

    results.uniq.collect{|r| 
      info = r.info
      format_string = [info[:namespace], info[:format]].compact * ":"

      info[:code] = r

      if not format_string.empty?
        info[:value] = r + " [#{format_string}]" 
      else
        info[:value] = r
      end

      score = info.delete :score

      if Array === score
        info[:score] = score[0]
        info[:best] = score[1]
      end

      info[:format] ||= info[:type]

      info 
    }.sort_by{|i| i[:score] || 0}.reverse
  end

  def find_entity_url(term)
    if term =~ /(.*) \[(.*)\]$/
      term = $1
      namespace, format = $2.split(":")
      format, namespace = namespace, nil if format.nil?

      Entity::REST.entity_url(term, format, :organism => namespace)
    else
      sorted_results = finder_find(term)
      organism = sorted_results.select{|r| r[:type] == 'organism' }.first
      sorted_results = sorted_results.reject{|r| r[:type] == 'organism' }
      i = sorted_results.first
      halt 404, "Term not recognized: #{ term }" if i.nil?
      organism_code = i[:namespace]
      organism_code = organism[:code] unless organism.nil? or organism[:code].nil?
      Entity::REST.entity_url(i[:code], i[:format], :organism => organism_code)
    end
  end
end

Version data entries

180 entries across 180 versions & 1 rubygems

Version Path
rbbt-rest-2.0.1 lib/rbbt/rest/entity/finder.rb
rbbt-rest-2.0.0 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.9.1 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.9.0 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.157 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.156 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.155 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.154 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.152 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.151 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.150 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.148 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.147 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.146 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.145 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.144 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.143 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.142 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.140 lib/rbbt/rest/entity/finder.rb
rbbt-rest-1.8.139 lib/rbbt/rest/entity/finder.rb