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.
- data/lib/ncbo_annotator/parser.rb +24 -13
- data/lib/ncbo_annotator.rb +21 -5
- metadata +3 -3
@@ -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?}
|
data/lib/ncbo_annotator.rb
CHANGED
@@ -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
|
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 =
|
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
|
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:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 3
|
10
|
+
version: 1.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Paul R Alexander
|