ncbo_annotator 1.0.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,7 +20,6 @@ module NCBO
20
20
  def initialize(results)
21
21
  @root = "/success/data/annotatorResultBean"
22
22
  @results = parse_xml(results)
23
- @result = AnnotatorResult.new
24
23
  end
25
24
 
26
25
  def self.parse_results(results)
@@ -28,6 +27,8 @@ module NCBO
28
27
  end
29
28
 
30
29
  def parse_results
30
+ @result = AnnotatorResult.new
31
+ p @results
31
32
  @result.id = @results.find_first(@root + "/resultID").content
32
33
  @result.statistics = parse_statistics
33
34
  @result.annotations = parse_annotations
@@ -35,6 +36,28 @@ module NCBO
35
36
  @result
36
37
  end
37
38
 
39
+ def self.parse_included_ontologies(ontologies)
40
+ new(ontologies).parse_included_ontologies
41
+ end
42
+
43
+ def parse_included_ontologies
44
+ @root = "/success/data/list"
45
+ ontologies = parse_ontologies("ontologyBean")
46
+ ontologies
47
+ end
48
+
49
+ private
50
+
51
+ def parse_ontologies(ontology_location = "ontologies/ontologyUsedBean")
52
+ ontologies = []
53
+ @results.find(@root + "/#{ontology_location}").each do |ontology|
54
+ ont = {}
55
+ ontology.children.each {|child| ont[child.name.to_sym] = safe_to_i(child.content)}
56
+ ontologies << ont
57
+ end
58
+ ontologies
59
+ end
60
+
38
61
  def parse_statistics
39
62
  statistics = {}
40
63
  @results.find(@root + "/statistics/statisticsBean").each do |statistic|
@@ -55,18 +78,6 @@ module NCBO
55
78
  annotations
56
79
  end
57
80
 
58
- def parse_ontologies
59
- ontologies = []
60
- @results.find(@root + "/ontologies/ontologyUsedBean").each do |ontology|
61
- ont = {}
62
- ontology.children.each {|child| ont[child.name.to_sym] = safe_to_i(child.content)}
63
- ontologies << ont
64
- end
65
- ontologies
66
- end
67
-
68
- private
69
-
70
81
  def parse_concept(annotation, concept_location = "concept")
71
82
  a = {}
72
83
  annotation.find("#{concept_location}/*").each {|child| a[child.name.to_sym] = safe_to_i(child.content) if !child.first.nil? && !child.first.children?}
@@ -2,6 +2,7 @@ require 'rubygems'
2
2
  require 'net/http'
3
3
  require 'xml'
4
4
  require 'uri'
5
+ require 'open-uri'
5
6
  require 'ncbo_annotator/parser'
6
7
 
7
8
  module NCBO
@@ -10,7 +11,7 @@ module NCBO
10
11
  def initialize(args = {})
11
12
  @options = {}
12
13
 
13
- @options[:annotator_location] = "http://rest.bioontology.org/obs/annotator"
14
+ @options[:annotator_location] = "http://rest.bioontology.org/obs"
14
15
  @options[:filterNumber] = true
15
16
  @options[:isStopWordsCaseSensitive] = false
16
17
  @options[:isVirtualOntologyId] = true
@@ -28,6 +29,8 @@ module NCBO
28
29
  @options[:withSynonyms] = true
29
30
 
30
31
  @options.merge!(args)
32
+
33
+ @ontologies = nil
31
34
 
32
35
  raise ArgumentError, ":apikey is required, you can obtain one at http://bioportal.bioontology.org/accounts/new" if @options[:apikey].nil?
33
36
  end
@@ -43,18 +46,31 @@ module NCBO
43
46
 
44
47
  raise ArgumentError, ":textToAnnotate must be included" if @options[:textToAnnotate].nil?
45
48
 
46
- result_xml = post
49
+ result_xml = annotate_post
47
50
  Parser::Annotator.parse_results(result_xml)
48
51
  end
49
52
 
53
+ def self.ontologies(options)
54
+ new(options).ontologies
55
+ end
56
+
57
+ def ontologies
58
+ if @ontologies.nil?
59
+ ontologies_xml = open("#{@options[:annotator_location]}/ontologies?apikey=#{@options[:apikey]}").read
60
+ @ontologies = Parser::Annotator.parse_included_ontologies(ontologies_xml)
61
+ else
62
+ @ontologies
63
+ end
64
+ end
65
+
50
66
  def options
51
67
  @options
52
68
  end
53
69
 
54
70
  private
55
71
 
56
- def post
57
- url = @options[:annotator_location]
72
+ def annotate_post
73
+ url = @options[:annotator_location] + "/annotator"
58
74
  options = @options.clone
59
75
  options.each do |k,v|
60
76
  if v.kind_of?(Array)
@@ -65,4 +81,4 @@ module NCBO
65
81
  return res.body
66
82
  end
67
83
  end # end Annotator class
68
- end # end NCBO module
84
+ end # end NCBO module
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ncbo_annotator
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 1
10
- version: 1.0.1
9
+ - 3
10
+ version: 1.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Paul R Alexander