opentox-ruby-api-wrapper 1.5.7 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +2 -1
- data/VERSION +1 -1
- data/lib/compound.rb +16 -3
- data/lib/dataset.rb +31 -4
- data/lib/environment.rb +9 -9
- data/lib/features.rb +5 -1
- data/lib/model.rb +3 -1
- data/lib/templates/config.yaml +1 -1
- metadata +35 -21
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.6.0
|
data/lib/compound.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
@@cactus_uri="http://cactus.nci.nih.gov/chemical/structure/"
|
2
|
+
@@ambit_uri="http://ambit.uni-plovdiv.bg:8080/ambit2/depict/cdk?search="
|
3
|
+
|
1
4
|
module OpenTox
|
2
5
|
|
3
6
|
class Compound #< OpenTox
|
@@ -6,7 +9,6 @@ module OpenTox
|
|
6
9
|
|
7
10
|
# Initialize with <tt>:uri => uri</tt>, <tt>:smiles => smiles</tt> or <tt>:name => name</tt> (name can be also an InChI/InChiKey, CAS number, etc)
|
8
11
|
def initialize(params)
|
9
|
-
@@cactus_uri="http://cactus.nci.nih.gov/chemical/structure/"
|
10
12
|
if params[:smiles]
|
11
13
|
@inchi = smiles2inchi(params[:smiles])
|
12
14
|
@uri = File.join(@@config[:services]["opentox-compound"],URI.escape(@inchi))
|
@@ -45,12 +47,17 @@ module OpenTox
|
|
45
47
|
obconversion(@inchi,'inchi','sdf')
|
46
48
|
end
|
47
49
|
|
48
|
-
def
|
50
|
+
def gif
|
49
51
|
RestClientWrapper.get("#{@@cactus_uri}#{@inchi}/image")
|
50
52
|
end
|
51
53
|
|
54
|
+
def png
|
55
|
+
RestClientWrapper.get("#{@@ambit_uri}#{smiles}")
|
56
|
+
end
|
57
|
+
|
52
58
|
def image_uri
|
53
|
-
"#{@@
|
59
|
+
"#{@@ambit_uri}#{smiles}"
|
60
|
+
#"#{@@cactus_uri}#{@inchi}/image"
|
54
61
|
end
|
55
62
|
|
56
63
|
# Matchs a smarts string
|
@@ -69,6 +76,12 @@ module OpenTox
|
|
69
76
|
smarts_array.collect{|s| s if match?(s)}.compact
|
70
77
|
end
|
71
78
|
|
79
|
+
# AM
|
80
|
+
# Match an array of smarts features, returns (0)1 for (non)matching features at each pos
|
81
|
+
def match_all(smarts_array)
|
82
|
+
smarts_array.collect{|s| match?(s) ? 1 : 0 }
|
83
|
+
end
|
84
|
+
|
72
85
|
def sdf2inchi(sdf)
|
73
86
|
obconversion(sdf,'sdf','inchi')
|
74
87
|
end
|
data/lib/dataset.rb
CHANGED
@@ -86,8 +86,10 @@ module OpenTox
|
|
86
86
|
def get_predicted_class(compound, feature)
|
87
87
|
v = get_value(compound, feature)
|
88
88
|
if v.is_a?(Hash)
|
89
|
-
|
90
|
-
|
89
|
+
k = v.keys.grep(/classification/).first
|
90
|
+
unless k.empty?
|
91
|
+
#if v.has_key?(:classification)
|
92
|
+
return v[k]
|
91
93
|
else
|
92
94
|
return "no classification key"
|
93
95
|
end
|
@@ -103,12 +105,37 @@ module OpenTox
|
|
103
105
|
end
|
104
106
|
end
|
105
107
|
|
108
|
+
# returns regression value
|
109
|
+
def get_predicted_regression(compound, feature)
|
110
|
+
v = get_value(compound, feature)
|
111
|
+
if v.is_a?(Hash)
|
112
|
+
k = v.keys.grep(/regression/).first
|
113
|
+
unless k.empty?
|
114
|
+
return v[k]
|
115
|
+
else
|
116
|
+
return "no regression key"
|
117
|
+
end
|
118
|
+
elsif v.is_a?(Array)
|
119
|
+
raise "predicted regression value is an array\n"+
|
120
|
+
"value "+v.to_s+"\n"+
|
121
|
+
"value-class "+v.class.to_s+"\n"+
|
122
|
+
"dataset "+@uri.to_s+"\n"+
|
123
|
+
"compound "+compound.to_s+"\n"+
|
124
|
+
"feature "+feature.to_s+"\n"
|
125
|
+
else
|
126
|
+
return v
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
106
130
|
# returns prediction confidence if available
|
107
131
|
def get_prediction_confidence(compound, feature)
|
108
132
|
v = get_value(compound, feature)
|
109
133
|
if v.is_a?(Hash)
|
110
|
-
|
111
|
-
|
134
|
+
k = v.keys.grep(/confidence/).first
|
135
|
+
unless k.empty?
|
136
|
+
#if v.has_key?(:confidence)
|
137
|
+
return v[k].abs
|
138
|
+
#return v["http://ot-dev.in-silico.ch/model/lazar#confidence"].abs
|
112
139
|
else
|
113
140
|
# PENDING: return nil isntead of raising an exception
|
114
141
|
raise "no confidence key"
|
data/lib/environment.rb
CHANGED
@@ -41,7 +41,7 @@ if @@config[:database]
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
# mail for error messages
|
44
|
+
# load mail settings for error messages
|
45
45
|
load File.join config_dir,"mail.rb" if File.exists?(File.join config_dir,"mail.rb")
|
46
46
|
|
47
47
|
# hack: store sinatra in global var to make url_for and halt methods accessible
|
@@ -107,12 +107,12 @@ end
|
|
107
107
|
|
108
108
|
logfile = "#{LOG_DIR}/#{ENV["RACK_ENV"]}.log"
|
109
109
|
LOGGER = MyLogger.new(logfile,'daily') # daily rotation
|
110
|
-
LOGGER.
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
110
|
+
LOGGER.formatter = Logger::Formatter.new #this is neccessary to restore the formating in case active-record is loaded
|
111
|
+
if @@config[:logger] and @@config[:logger] == "debug"
|
112
|
+
LOGGER.level = Logger::DEBUG
|
113
|
+
else
|
114
|
+
LOGGER.level = Logger::WARN
|
115
|
+
end
|
116
116
|
|
117
117
|
if File.exist?(user_file)
|
118
118
|
@@users = YAML.load_file(user_file)
|
@@ -137,8 +137,8 @@ OT = Redland::Namespace.new 'http://www.opentox.org/api/1.1#'
|
|
137
137
|
XML = Redland::Namespace.new 'http://www.w3.org/2001/XMLSchema#'
|
138
138
|
|
139
139
|
# Regular expressions for parsing classification data
|
140
|
-
TRUE_REGEXP = /^(true|active
|
141
|
-
FALSE_REGEXP = /^(false|inactive
|
140
|
+
TRUE_REGEXP = /^(true|active|1|1.0)$/i
|
141
|
+
FALSE_REGEXP = /^(false|inactive|0|0.0)$/i
|
142
142
|
|
143
143
|
# Task durations
|
144
144
|
DEFAULT_TASK_MAX_DURATION = @@config[:default_task_max_duration]
|
data/lib/features.rb
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
# CH: should go into validation service
|
2
|
+
# - not a complete OT object
|
3
|
+
# - only used twice
|
4
|
+
# - what about ./validation/validation/validation_service.rb:241: value = OpenTox::Feature.new(:uri => a.uri).value(prediction_feature).to_s
|
1
5
|
module OpenTox
|
2
6
|
|
3
7
|
module Feature
|
@@ -12,4 +16,4 @@ module OpenTox
|
|
12
16
|
end
|
13
17
|
|
14
18
|
end
|
15
|
-
end
|
19
|
+
end
|
data/lib/model.rb
CHANGED
@@ -61,8 +61,10 @@ module OpenTox
|
|
61
61
|
|
62
62
|
def classification?
|
63
63
|
#HACK replace with request to ontology server
|
64
|
-
if @title =~ /
|
64
|
+
if @title =~ /(?i)classification/
|
65
65
|
return true
|
66
|
+
elsif @title =~ /(?i)regression/
|
67
|
+
return false
|
66
68
|
elsif @uri =~/ntua/ and @title =~ /mlr/
|
67
69
|
return false
|
68
70
|
elsif @uri =~/tu-muenchen/ and @title =~ /regression|M5P|GaussP/
|
data/lib/templates/config.yaml
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
opentox-algorithm: "http://localhost/algorithm/"
|
31
31
|
opentox-model: "http://localhost/model/"
|
32
32
|
opentox-task: "http://localhost/task/"
|
33
|
-
opentox-validation: "http://
|
33
|
+
opentox-validation: "http://localhost/validation/"
|
34
34
|
#
|
35
35
|
# Accept headers:
|
36
36
|
#
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opentox-ruby-api-wrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 6
|
9
|
+
- 0
|
10
|
+
version: 1.6.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Christoph Helma, Martin Guetlein
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-07-19 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -229,21 +229,21 @@ dependencies:
|
|
229
229
|
type: :runtime
|
230
230
|
version_requirements: *id015
|
231
231
|
- !ruby/object:Gem::Dependency
|
232
|
-
name:
|
232
|
+
name: rinruby
|
233
233
|
prerelease: false
|
234
234
|
requirement: &id016 !ruby/object:Gem::Requirement
|
235
235
|
none: false
|
236
236
|
requirements:
|
237
237
|
- - ">="
|
238
238
|
- !ruby/object:Gem::Version
|
239
|
-
hash:
|
239
|
+
hash: 3
|
240
240
|
segments:
|
241
|
-
-
|
242
|
-
version: "
|
241
|
+
- 0
|
242
|
+
version: "0"
|
243
243
|
type: :runtime
|
244
244
|
version_requirements: *id016
|
245
245
|
- !ruby/object:Gem::Dependency
|
246
|
-
name: dm-
|
246
|
+
name: dm-core
|
247
247
|
prerelease: false
|
248
248
|
requirement: &id017 !ruby/object:Gem::Requirement
|
249
249
|
none: false
|
@@ -257,7 +257,7 @@ dependencies:
|
|
257
257
|
type: :runtime
|
258
258
|
version_requirements: *id017
|
259
259
|
- !ruby/object:Gem::Dependency
|
260
|
-
name: dm-
|
260
|
+
name: dm-serializer
|
261
261
|
prerelease: false
|
262
262
|
requirement: &id018 !ruby/object:Gem::Requirement
|
263
263
|
none: false
|
@@ -271,7 +271,7 @@ dependencies:
|
|
271
271
|
type: :runtime
|
272
272
|
version_requirements: *id018
|
273
273
|
- !ruby/object:Gem::Dependency
|
274
|
-
name: dm-
|
274
|
+
name: dm-timestamps
|
275
275
|
prerelease: false
|
276
276
|
requirement: &id019 !ruby/object:Gem::Requirement
|
277
277
|
none: false
|
@@ -285,7 +285,7 @@ dependencies:
|
|
285
285
|
type: :runtime
|
286
286
|
version_requirements: *id019
|
287
287
|
- !ruby/object:Gem::Dependency
|
288
|
-
name: dm-
|
288
|
+
name: dm-types
|
289
289
|
prerelease: false
|
290
290
|
requirement: &id020 !ruby/object:Gem::Requirement
|
291
291
|
none: false
|
@@ -299,7 +299,7 @@ dependencies:
|
|
299
299
|
type: :runtime
|
300
300
|
version_requirements: *id020
|
301
301
|
- !ruby/object:Gem::Dependency
|
302
|
-
name: dm-
|
302
|
+
name: dm-migrations
|
303
303
|
prerelease: false
|
304
304
|
requirement: &id021 !ruby/object:Gem::Requirement
|
305
305
|
none: false
|
@@ -313,9 +313,23 @@ dependencies:
|
|
313
313
|
type: :runtime
|
314
314
|
version_requirements: *id021
|
315
315
|
- !ruby/object:Gem::Dependency
|
316
|
-
name:
|
316
|
+
name: dm-mysql-adapter
|
317
317
|
prerelease: false
|
318
318
|
requirement: &id022 !ruby/object:Gem::Requirement
|
319
|
+
none: false
|
320
|
+
requirements:
|
321
|
+
- - ">="
|
322
|
+
- !ruby/object:Gem::Version
|
323
|
+
hash: 1
|
324
|
+
segments:
|
325
|
+
- 1
|
326
|
+
version: "1"
|
327
|
+
type: :runtime
|
328
|
+
version_requirements: *id022
|
329
|
+
- !ruby/object:Gem::Dependency
|
330
|
+
name: haml
|
331
|
+
prerelease: false
|
332
|
+
requirement: &id023 !ruby/object:Gem::Requirement
|
319
333
|
none: false
|
320
334
|
requirements:
|
321
335
|
- - ">="
|
@@ -325,11 +339,11 @@ dependencies:
|
|
325
339
|
- 3
|
326
340
|
version: "3"
|
327
341
|
type: :runtime
|
328
|
-
version_requirements: *
|
342
|
+
version_requirements: *id023
|
329
343
|
- !ruby/object:Gem::Dependency
|
330
344
|
name: cucumber
|
331
345
|
prerelease: false
|
332
|
-
requirement: &
|
346
|
+
requirement: &id024 !ruby/object:Gem::Requirement
|
333
347
|
none: false
|
334
348
|
requirements:
|
335
349
|
- - ">="
|
@@ -339,11 +353,11 @@ dependencies:
|
|
339
353
|
- 0
|
340
354
|
version: "0"
|
341
355
|
type: :development
|
342
|
-
version_requirements: *
|
356
|
+
version_requirements: *id024
|
343
357
|
- !ruby/object:Gem::Dependency
|
344
358
|
name: jeweler
|
345
359
|
prerelease: false
|
346
|
-
requirement: &
|
360
|
+
requirement: &id025 !ruby/object:Gem::Requirement
|
347
361
|
none: false
|
348
362
|
requirements:
|
349
363
|
- - ">="
|
@@ -353,12 +367,12 @@ dependencies:
|
|
353
367
|
- 0
|
354
368
|
version: "0"
|
355
369
|
type: :development
|
356
|
-
version_requirements: *
|
370
|
+
version_requirements: *id025
|
357
371
|
description: Ruby wrapper for the OpenTox REST API (http://www.opentox.org)
|
358
372
|
email: helma@in-silico.ch
|
359
373
|
executables:
|
360
|
-
- yaml2owl.rb
|
361
374
|
- opentox-install-ubuntu.sh
|
375
|
+
- yaml2owl.rb
|
362
376
|
- opentox-install-debian.sh
|
363
377
|
extensions: []
|
364
378
|
|