opentox-ruby-api-wrapper 1.2.7 → 1.3.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 CHANGED
@@ -10,12 +10,14 @@ begin
10
10
  gem.email = "helma@in-silico.ch"
11
11
  gem.homepage = "http://github.com/helma/opentox-ruby-api-wrapper"
12
12
  gem.authors = ["Christoph Helma"]
13
- ["sinatra", "rest-client", "rack", "rack-contrib", "rack-flash", "thin", "emk-sinatra-url-for", "cehoffman-sinatra-respond_to", "dm-more", "dm-core", "sinatra-static-assets", "do_sqlite3", "do_postgres"].each do |dep|
13
+ ["sinatra", "rest-client", "rack", "rack-contrib", "rack-flash", "emk-sinatra-url-for", "cehoffman-sinatra-respond_to", "dm-more", "dm-core", "sinatra-static-assets"].each do |dep|
14
14
  gem.add_dependency dep
15
15
  end
16
- gem.add_development_dependency "cucumber"
16
+ ['cucumber','jeweler', "thin"].each do |dep|
17
+ gem.add_development_dependency dep
18
+ end
17
19
  gem.files = FileList["[A-Z]*", "{bin,generators,lib,test}/**/*", 'lib/jeweler/templates/.gitignore']
18
- gem.files.include %w(lib/tasks/owl.rb, lib/environment.rb, lib/algorithm.rb, lib/compound.rb, lib/dataset.rb, lib/model.rb, lib/utils.rb, lib/templates/*)
20
+ gem.files.include %w(lib/tasks/owl.rb, lib/environment.rb, lib/algorithm.rb, lib/compound.rb, lib/dataset.rb, lib/model.rb, lib/utils.rb, lib/validation.rb, lib/templates/*)
19
21
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
20
22
  end
21
23
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.7
1
+ 1.3.0
@@ -0,0 +1,375 @@
1
+ #!/bin/bash
2
+ #Installation is tested on Debian Ubuntu 9.10
3
+ #Update the system
4
+
5
+ FAILED=0
6
+ STARTPATH=$PWD
7
+ ERRLOG=$PWD/'install_err.log'
8
+ INSTALLLOG=$PWD/'install_log.log'
9
+ DATE=$(date +%Y/%m/%d\ %H:%M:%S)
10
+ BRANCH=$1
11
+ GEMVERSION="1.3.5"
12
+ GITVERSION="1.6.5.2"
13
+ RAPTORVERSION="1.4.20"
14
+ RASQALVERSION="0.9.16"
15
+ RASQALVERSION2="0.9.15"
16
+ REDLANDVERSION="1.0.7"
17
+ REDBINDVERSION="1.0.7.1"
18
+
19
+ if [ "$BRANCH" = '' ]
20
+ then
21
+ echo "Please enter: sudo ./[filename] [brunchtpy]"
22
+ exit 1
23
+ fi
24
+ echo "================================================="
25
+ echo "Selected branch is: $BRANCH"
26
+ echo "================================================="
27
+ echo "Please enshure that the sudo package is installed"
28
+ echo "on your system. "
29
+ echo "On Ubuntu Linux sudo is installed by default."
30
+ echo "If you are unsure check with it 'sudo ls'"
31
+ echo "and installed it with 'apt-get install sudo'"
32
+ echo "and add your username with visudo."
33
+ echo "================================================="
34
+ echo "Some programs and the OpenTox webservices will be installed in the current folder."
35
+ echo "================================================="
36
+ echo -n "To continue installation press y: "
37
+ read answer
38
+ if [ "$answer" != "y" ]
39
+ then
40
+ echo "exiting the script..."
41
+ exit 1
42
+ fi
43
+
44
+ echo "opentox webservice install log - " $DATE > $INSTALLLOG
45
+ echo "opentox webservice install err log - " $DATE > $ERRLOG
46
+ echo "Installing: build-essential"
47
+ sudo apt-get install build-essential | tee -a $INSTALLLOG
48
+
49
+ echo "Installing: ruby 1.8 with its dev files"
50
+ sudo apt-get install ruby ruby1.8-dev | tee -a $INSTALLLOG
51
+
52
+ echo "Installing: gems rdoc rubygems libxml-parser-ruby1.8 libxml++2.6-dev libyaml-ruby libzlib-ruby sqlite3 libsqlite3-dev libsqlite3-ruby1.8 and rake"
53
+ sudo apt-get install gems rdoc rubygems libxml-parser-ruby1.8 libxml++2.6-dev libyaml-ruby libzlib-ruby rake sqlite3 libsqlite3-dev libsqlite3-ruby1.8 | tee -a $INSTALLLOG
54
+
55
+ #RUBYGEMS
56
+ echo "Installing rubygems from source. This may take some time"
57
+ if [ ! -d $STARTPATH/rubygems-$GEMVERSION ];
58
+ then
59
+ wget http://rubyforge.org/frs/download.php/60718/rubygems-$GEMVERSION.tgz >>$INSTALLLOG 2>>$ERRLOG
60
+ tar xzfv rubygems-$GEMVERSION.tgz >>$INSTALLLOG 2>>$ERRLOG
61
+ cd rubygems-$GEMVERSION
62
+ sudo ruby setup.rb >>$INSTALLLOG 2>>$ERRLOG
63
+ cd ..
64
+ sudo rm rubygems-$GEMVERSION.tgz
65
+ CHECKGEM=`gem -v`
66
+ if [ "$CHECKGEM" == "$GEMVERSION" ]
67
+ then
68
+ echo "Adding http://gems.github.com to ruby gem sources"
69
+ sudo gem sources -a http://gems.github.com >>$INSTALLLOG 2>>$ERRLOG
70
+
71
+ echo "================================================="
72
+ echo "Rubygems version $GEMVERSION successfully installed."
73
+ echo "================================================="
74
+ else
75
+ echo "Rubygems version $GEMVERSION installation failed."
76
+ FAILED=1
77
+ exit $FAILED
78
+ fi
79
+ else
80
+ echo "rubygems-$GEMVERSION folder already exist. "
81
+ fi
82
+
83
+ echo "Installing packages: zlib1g-dev tcl curl perl ssh tcl tk8.5 libopenssl-ruby libgsl0-dev swig r-base rinruby"
84
+ sudo apt-get install zlib1g-dev tcl curl perl libopenssl-ruby libgsl0-dev r-base | tee -a $INSTALLLOG
85
+ sudo apt-get install ssh tcl tk8.5 | tee -a $INSTALLLOG
86
+ sudo apt-get install swig | tee -a $INSTALLLOG
87
+ sudo apt-get install postgresql-server-dev-8.4 | tee -a $INSTALLLOG
88
+
89
+
90
+ #echo "Installing gems jeweler sinatra emk-sinatra-url-for dm-core cehoffman-sinatra-respond_to rest-client rack-contrib thin cucumber datamapper data_objects do_sqlite3 rinruby"
91
+ sudo gem install jeweler | tee -a $INSTALLLOG
92
+ sudo gem install sinatra | tee -a $INSTALLLOG
93
+ sudo gem install emk-sinatra-url-for -s http://gems.github.com | tee -a $INSTALLLOG
94
+ sudo gem install dm-core | tee -a $INSTALLLOG
95
+ sudo gem install cehoffman-sinatra-respond_to -s http://gems.github.com | tee -a $INSTALLLOG
96
+ sudo gem install rest-client | tee -a $INSTALLLOG
97
+ sudo gem install rack-contrib | tee -a $INSTALLLOG
98
+ sudo gem install thin | tee -a $INSTALLLOG
99
+ sudo gem install cucumber | tee -a $INSTALLLOG
100
+ sudo gem install datamapper | tee -a $INSTALLLOG
101
+ sudo gem install data_objects | tee -a $INSTALLLOG
102
+ sudo gem install do_sqlite3 | tee -a $INSTALLLOG
103
+ sudo gem install rinruby | tee -a $INSTALLLOG
104
+ sudo gem cleanup | tee -a $INSTALLLOG
105
+
106
+ echo "Installing LibRDF-ruby"
107
+ sudo apt-get install librdf0 librdf-ruby | tee -a $INSTALLLOG
108
+
109
+ #GIT
110
+ echo "Installing git from source"
111
+ echo "This could take a while..."
112
+ if [ ! -d $STARTPATH/git-$GITVERSION ];
113
+ then
114
+ wget http://www.kernel.org/pub/software/scm/git/git-$GITVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
115
+ tar xzfv git-$GITVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
116
+ cd git-$GITVERSION
117
+ ./configure >>$INSTALLLOG 2>>$ERRLOG
118
+ make >>$INSTALLLOG 2>>$ERRLOG
119
+ sudo make install >>$INSTALLLOG 2>>$ERRLOG
120
+ cd ..
121
+ sudo rm git-$GITVERSION.tar.gz
122
+ CHECKGIT=`git --version`
123
+ if [ "$CHECKGIT" == "git version $GITVERSION" ]
124
+ then
125
+ echo "================================================="
126
+ echo "Git version $GITVERSION successfully installed."
127
+ echo "================================================="
128
+ else
129
+ echo "Git version $GITVERSION installation failed."
130
+ FAILED=1
131
+ exit $FAILED
132
+ fi
133
+ else
134
+ echo "git-$GITVERSION folder exists."
135
+ fi
136
+
137
+ #REDLAND
138
+ if [ ! -d $STARTPATH/redland ];
139
+ then
140
+ echo "Making Redland folder."
141
+ mkdir redland >>$INSTALLLOG 2>>$ERRLOG
142
+ cd redland
143
+ echo "Installing Redland raptor"
144
+ if [ ! -d $STARTPATH/redland/raptor-$RAPTORVERSION ];
145
+ then
146
+ wget wget http://download.librdf.org/source/raptor-$RAPTORVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
147
+ tar xzfv raptor-$RAPTORVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
148
+ cd raptor-$RAPTORVERSION
149
+ ./configure >>$INSTALLLOG 2>>$ERRLOG
150
+ sudo make >>$INSTALLLOG 2>>$ERRLOG
151
+ sudo make install >>$INSTALLLOG 2>>$ERRLOG
152
+ cd ..
153
+ sudo rm raptor-$RAPTORVERSION.tar.gz
154
+ CHECKRAPTOR=`raptor-config --version`
155
+ if [ "$CHECKRAPTOR" == "$RAPTORVERSION" ]
156
+ then
157
+ echo "================================================="
158
+ echo "Raptor version $RAPTORVERSION successfully installed."
159
+ echo "================================================="
160
+ else
161
+ echo "Raptor version $RAPTORVERSION installation failed."
162
+ FAILED=1
163
+ exit $FAILED
164
+ fi
165
+ else
166
+ echo "raptor-$RAPTORVERSION folder exists."
167
+ fi
168
+
169
+ echo "Installing Redland rasqal"
170
+ wget wget http://download.librdf.org/source/rasqal-$RASQALVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
171
+ tar xzfv rasqal-$RASQALVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
172
+ cd rasqal-$RASQALVERSION
173
+ ./configure >>$INSTALLLOG 2>>$ERRLOG
174
+ sudo make >>$INSTALLLOG 2>>$ERRLOG
175
+ sudo make install >>$INSTALLLOG 2>>$ERRLOG
176
+ cd ..
177
+ sudo rm rasqal-$RASQALVERSION.tar.gz
178
+ CHECKRASQAL=`rasqal-config --version`
179
+ if [ "$CHECKRASQAL" == "$RASQALVERSION2" -o "$CHECKRASQAL" == "$RASQALVERSION" ]
180
+ then
181
+ echo "================================================="
182
+ echo "Raptor version $RASQALVERSION2 or higher successfully installed."
183
+ echo "================================================="
184
+ else
185
+ echo "Raptor version $RASQALVERSION2 or higher installation failed."
186
+ FAILED=1
187
+ exit $FAILED
188
+ fi
189
+
190
+ echo "Installing Redland redland"
191
+ wget wget http://download.librdf.org/source/redland-$REDLANDVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
192
+ tar xzfv redland-$REDLANDVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
193
+ cd redland-$REDLANDVERSION
194
+ ./configure >>$INSTALLLOG 2>>$ERRLOG
195
+ sudo make >>$INSTALLLOG 2>>$ERRLOG
196
+ sudo make install >>$INSTALLLOG 2>>$ERRLOG
197
+ cd ..
198
+ sudo rm redland-$REDLANDVERSION.tar.gz
199
+ CHECKREDLAND=`redland-config --version`
200
+ if [ "$CHECKREDLAND" == "$REDLANDVERSION" ]
201
+ then
202
+ echo "================================================="
203
+ echo "Redland version $REDLANDVERSION successfully installed."
204
+ echo "================================================="
205
+ else
206
+ echo "Redland version $REDLANDVERSION installation failed."
207
+ FAILED=1
208
+ exit $FAILED
209
+ fi
210
+
211
+
212
+ echo "Installing Redland Bindings with ruby"
213
+ wget http://download.librdf.org/source/redland-bindings-$REDBINDVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
214
+ tar xzfv redland-bindings-$REDBINDVERSION.tar.gz >>$INSTALLLOG 2>>$ERRLOG
215
+ cd redland-bindings-$REDBINDVERSION
216
+ ./configure --with-ruby >>$INSTALLLOG 2>>$ERRLOG
217
+ sudo make >>$INSTALLLOG 2>>$ERRLOG
218
+ sudo make install >>$INSTALLLOG 2>>$ERRLOG
219
+ cd ..
220
+ sudo rm redland-bindings-$REDBINDVERSION.tar.gz
221
+ cd ..
222
+ #CHECKREDBIND=`??? --version`
223
+ #if [ "$CHECKREDBIND" == "$REDBINDVERSION" ]
224
+ #then
225
+ # echo "================================================="
226
+ # echo "Redland Bindings version $REDBINDVERSION successfully installed."
227
+ # echo "================================================="
228
+ #else
229
+ # echo "Redland Bindings version $REDBINDVERSION installation failed."
230
+ # FAILED=1
231
+ # exit $FAILED
232
+ #fi
233
+ else
234
+ echo "Redland folder exists."
235
+ fi
236
+
237
+ echo "Installing the opentox webservices"
238
+ mkdir webservices
239
+ cd webservices
240
+
241
+ echo "Install the opentox-ruby-api-wrapper"
242
+ echo "This could take a while..."
243
+ git clone git://github.com/helma/opentox-ruby-api-wrapper.git >>$INSTALLLOG 2>>$ERRLOG
244
+ cd opentox-ruby-api-wrapper
245
+ git checkout -b $BRANCH origin/$BRANCH >>$INSTALLLOG 2>>$ERRLOG
246
+ OTAPIVERSION=`cat VERSION`
247
+ sudo rake install | tee -a $INSTALLLOG
248
+ cd ..
249
+ CHECKOTAPI=`gem list | grep "opentox-ruby-api-wrapper" | grep "$OTAPIVERSION"`
250
+ if [ ! "$CHECKOTAPI" = '' ]
251
+ then
252
+ echo "================================================="
253
+ echo "opentox-ruby-api-wrapper ($OTAPIVERSION) successfully installed."
254
+ echo "================================================="
255
+ else
256
+ echo "opentox-ruby-api-wrapper ($OTAPIVERSION) installation failed."
257
+ FAILED=1
258
+ exit $FAILED
259
+ fi
260
+
261
+ echo "Installing the webservices: compound, dataset, algorithm, model, task, feature"
262
+ git clone git://github.com/helma/opentox-compound.git >>$INSTALLLOG 2>>$ERRLOG
263
+ git clone git://github.com/helma/opentox-dataset.git >>$INSTALLLOG 2>>$ERRLOG
264
+ git clone git://github.com/helma/opentox-algorithm.git >>$INSTALLLOG 2>>$ERRLOG
265
+ git clone git://github.com/helma/opentox-model.git >>$INSTALLLOG 2>>$ERRLOG
266
+ git clone git://github.com/helma/opentox-task.git >>$INSTALLLOG 2>>$ERRLOG
267
+ git clone git://github.com/helma/opentox-feature.git >>$INSTALLLOG 2>>$ERRLOG
268
+
269
+ cd opentox-compound
270
+ git checkout -b $BRANCH origin/$BRANCH >>$INSTALLLOG 2>>$ERRLOG
271
+ cd ../opentox-dataset
272
+ git checkout -b $BRANCH origin/$BRANCH >>$INSTALLLOG 2>>$ERRLOG
273
+ cd ../opentox-algorithm
274
+ git checkout -b $BRANCH origin/$BRANCH >>$INSTALLLOG 2>>$ERRLOG
275
+ cd ../opentox-model
276
+ git checkout -b $BRANCH origin/$BRANCH >>$INSTALLLOG 2>>$ERRLOG
277
+ cd ../opentox-task
278
+ git checkout -b $BRANCH origin/$BRANCH >>$INSTALLLOG 2>>$ERRLOG
279
+ cd ../opentox-task
280
+ git checkout -b development origin/development >>$INSTALLLOG 2>>$ERRLOG
281
+ cd ..
282
+
283
+ #edit /home/[username]/.opentox/config/test.yaml set :base_dir: /home/[username]/webservices
284
+
285
+ echo "Installing the tests"
286
+ git clone git://github.com/helma/opentox-test.git >>$INSTALLLOG 2>>$ERRLOG
287
+ cd opentox-test
288
+ git checkout -b $BRANCH origin/$BRANCH >>$INSTALLLOG 2>>$ERRLOG
289
+
290
+ echo "Installing openbabel"
291
+ cd ../opentox-compound
292
+ sudo rake openbabel:install | tee -a $INSTALLLOG
293
+ sudo ldconfig >>$INSTALLLOG 2>>$ERRLOG
294
+
295
+ ln -s /usr/local/lib/libopenbabel.so.3 /usr/lib/libopenbabel.so.3 >> $INSTALLLOG 2>>$ERR
296
+ #VERSION=` --version`
297
+ #if [ "$VERSION" == "$RAPTORVERSION" ]
298
+ #then
299
+ # echo "================================================="
300
+ # echo "Raptor version $RAPTORVERSION successfully installed."
301
+ # echo "================================================="
302
+ #else
303
+ # echo "Raptor version $RAPTORVERSION installation failed."
304
+ # FAILED=1
305
+ # exit $FAILED
306
+ #fi
307
+
308
+
309
+ #check /webservices/opentox-algorithm/fminer.rb for 1,0/ture,false bug
310
+ BUGCHECK1=`grep "@@fminer.AddActivity(true, id)" $STARTPATH/webservices/opentox-algorithm/fminer.rb`
311
+ BUGCHECK2=`grep "@@fminer.AddActivity(false, id)" $STARTPATH/webservices/opentox-algorithm/fminer.rb`
312
+ if [ -z "$BUGCHECK1$BUGCHECK2" ]
313
+ then
314
+ echo "fminer.rb is correct."
315
+ else
316
+ sed -i 's/@@fminer.AddActivity(true, id)/@@fminer.AddActivity(1, id)/g' $STARTPATH/webservices/opentox-algorithm/fminer.rb
317
+ sed -i 's/@@fminer.AddActivity(false, id)/@@fminer.AddActivity(0, id)/g' $STARTPATH/webservices/opentox-algorithm/fminer.rb
318
+ echo "fminer.rb updated."
319
+ fi
320
+
321
+ #todo: configure libfminer Makefile (location of ruby.h)
322
+ #-> fixed by using davor's repository
323
+
324
+
325
+ cd ../opentox-algorithm
326
+ echo "Installing fminer"
327
+ echo "This could take a while..."
328
+ sudo updatedb
329
+ sudo rake fminer:install | tee -a $INSTALLLOG
330
+ cd ..
331
+ FMINERVERSION=`ls $STARTPATH/webservices/opentox-algorithm/libfminer | grep "fminer.so"`
332
+ if [ "$FMINERVERSION" == "fminer.so" ]
333
+ then
334
+ echo "================================================="
335
+ echo "Fminer successfully installed."
336
+ echo "================================================="
337
+ else
338
+ echo "Fminer installation failed."
339
+ FAILED=1
340
+ exit $FAILED
341
+ fi
342
+
343
+ if [ $FAILED == 0 ]
344
+ then
345
+ #get username
346
+ echo "Please enter username:"
347
+ read USERNAME
348
+
349
+ #change rights from root to user
350
+ sudo chown -R $USERNAME: $STARTPATH/webservices/
351
+ sudo chown -R $USERNAME: ~/.opentox/
352
+ fi
353
+
354
+ if [ "$FAILED" == "1" ]
355
+ then
356
+ echo "================================================="
357
+ echo "Installation script failed!"
358
+ echo "================================================="
359
+ exit 1
360
+ else
361
+ echo "================================================="
362
+ echo "opentox-install-script is completed."
363
+ echo "================================================="
364
+ echo "Configuration:"
365
+ echo "Edit the settings in $HOME/.opentox/config/{development|production|test}.yaml for your environment."
366
+ echo "================================================="
367
+ echo "Start the webservices local:"
368
+ echo "cd webservices/opentox-test/"
369
+ echo "rake opentox:services:start"
370
+ echo "================================================="
371
+ echo "Test local webservices:"
372
+ echo "rake features"
373
+ echo "================================================="
374
+ fi
375
+ exit 0
@@ -1,27 +1,35 @@
1
+ LOGGER.progname = File.expand_path(__FILE__)
2
+
1
3
  module OpenTox
2
- module Algorithm
4
+ module Algorithm
3
5
 
4
- class Fminer
5
- include Owl
6
+ class Fminer
7
+ include Owl
6
8
 
7
- def initialize
8
- super
9
- self.uri = File.join(@@config[:services]["opentox-algorithm"],'fminer')
10
- self.title = "fminer"
11
- self.source = "http://github.com/amaunz/libfminer"
12
- self.parameters = {
13
- "Dataset URI" => { :scope => "mandatory", :value => "dataset_uri" },
14
- "Feature URI for dependent variable" => { :scope => "mandatory", :value => "feature_uri" }
15
- }
16
- end
9
+ def initialize
10
+ super
11
+ self.uri = File.join(@@config[:services]["opentox-algorithm"],'fminer')
12
+ self.title = "fminer"
13
+ self.source = "http://github.com/amaunz/libfminer"
14
+ self.parameters = {
15
+ "Dataset URI" => { :scope => "mandatory", :value => "dataset_uri" },
16
+ "Feature URI for dependent variable" => { :scope => "mandatory", :value => "feature_uri" }
17
+ }
18
+ end
19
+
20
+ def self.create_feature_dataset(params)
21
+ LOGGER.debug File.basename(__FILE__) + ": creating feature dataset"
22
+ resource = RestClient::Resource.new(params[:feature_generation_uri], :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
23
+ resource.post :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri]
24
+ end
17
25
 
18
- def self.create_feature_dataset(params)
19
- RestClient.post params[:feature_generation_uri], :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri]
26
+ def self.uri
27
+ File.join(@@config[:services]["opentox-algorithm"], "fminer")
20
28
  end
21
- end
29
+ end
22
30
 
23
- class Lazar
24
- include Owl
31
+ class Lazar
32
+ include Owl
25
33
 
26
34
  def initialize
27
35
  super
@@ -40,26 +48,33 @@ module OpenTox
40
48
 
41
49
  def self.create_model(params)
42
50
  LOGGER.debug params
43
- @uri = RestClient.post File.join(@@config[:services]["opentox-algorithm"], "lazar"), :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri], :feature_generation_uri => File.join(@@config[:services]["opentox-algorithm"], "fminer")
51
+ LOGGER.debug File.basename(__FILE__) + ": creating model"
52
+ #@uri = RestClient.post File.join(@@config[:services]["opentox-algorithm"], "lazar"), :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri], :feature_generation_uri => File.join(@@config[:services]["opentox-algorithm"], "fminer")
53
+ resource = RestClient::Resource.new(File.join(@@config[:services]["opentox-algorithm"], "lazar"), :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
54
+ @uri = resource.post :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri], :feature_generation_uri => File.join(@@config[:services]["opentox-algorithm"], "fminer")
44
55
  end
45
56
 
46
- end
47
-
48
- class Similarity
49
- def self.weighted_tanimoto(fp_a,fp_b,p)
50
- common_features = fp_a & fp_b
51
- all_features = fp_a + fp_b
52
- common_p_sum = 0.0
53
- if common_features.size > 0
54
- common_features.each{|f| common_p_sum += p[f]}
55
- all_p_sum = 0.0
56
- all_features.each{|f| all_p_sum += p[f]}
57
- common_p_sum/all_p_sum
58
- else
59
- 0.0
60
- end
57
+ def self.uri
58
+ File.join(@@config[:services]["opentox-algorithm"], "lazar")
61
59
  end
62
- end
63
60
 
64
- end
61
+ end
62
+
63
+ class Similarity
64
+ def self.weighted_tanimoto(fp_a,fp_b,p)
65
+ common_features = fp_a & fp_b
66
+ all_features = fp_a + fp_b
67
+ common_p_sum = 0.0
68
+ if common_features.size > 0
69
+ common_features.each{|f| common_p_sum += p[f]}
70
+ all_p_sum = 0.0
71
+ all_features.each{|f| all_p_sum += p[f]}
72
+ common_p_sum/all_p_sum
73
+ else
74
+ 0.0
75
+ end
76
+ end
77
+ end
78
+
79
+ end
65
80
  end
@@ -0,0 +1,24 @@
1
+ helpers do
2
+
3
+ def protected!
4
+ response['WWW-Authenticate'] = %(Basic realm="Opentox Webservice Authentication") and \
5
+ throw(:halt, [401, "Not authorized\n"]) and \
6
+ return unless authorized?
7
+ end
8
+
9
+ def authorized?
10
+ @auth ||= Rack::Auth::Basic::Request.new(request.env)
11
+ @auth.provided? && @auth.basic? && @auth.credentials && valid_user?
12
+ end
13
+
14
+ def valid_user?
15
+ users = @@users[:users]
16
+ return @auth.credentials == [@auth.username, users.fetch(@auth.username)] if users.has_key?(@auth.username)
17
+ return false
18
+ end
19
+
20
+ end
21
+
22
+ before do
23
+ #protected! unless env['REQUEST_METHOD'] == "GET"
24
+ end
@@ -17,7 +17,8 @@ module OpenTox
17
17
  @inchi = sdf2inchi(params[:sdf])
18
18
  @uri = File.join(@@config[:services]["opentox-compound"],URI.escape(@inchi))
19
19
  elsif params[:name]
20
- @inchi = RestClient.get("#{@@cactus_uri}#{params[:name]}/stdinchi").chomp
20
+ # paranoid URI encoding to keep SMILES charges and brackets
21
+ @inchi = RestClient.get("#{@@cactus_uri}#{URI.encode(params[:name], Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}/stdinchi").chomp
21
22
  @uri = File.join(@@config[:services]["opentox-compound"],URI.escape(@inchi))
22
23
  elsif params[:uri]
23
24
  @uri = params[:uri]
@@ -10,6 +10,7 @@ $stdout.reopen(log)
10
10
  $stderr.reopen(log)
11
11
  $stdout.sync = true
12
12
  $stderr.sync = true
13
+ set :logging, false
13
14
  set :raise_errors, true
14
15
 
15
16
  ['public','tmp'].each do |dir|
@@ -1,3 +1,5 @@
1
+ LOGGER.progname = File.expand_path(__FILE__)
2
+
1
3
  module OpenTox
2
4
 
3
5
  class Dataset
@@ -14,6 +16,8 @@ module OpenTox
14
16
  data_entry = @model.subject OT['compound'], compound
15
17
  if data_entry.nil?
16
18
  data_entry = @model.create_resource
19
+ dataset = @model.subject(RDF['type'],OT[self.owl_class])
20
+ @model.add dataset, OT['dataEntry'], data_entry
17
21
  @model.add data_entry, RDF['type'], OT["DataEntry"]
18
22
  @model.add data_entry, OT['compound'], compound
19
23
  end
@@ -29,6 +33,8 @@ module OpenTox
29
33
  data_entry = @model.subject OT['compound'], compound
30
34
  if data_entry.nil?
31
35
  data_entry = @model.create_resource
36
+ dataset = @model.subject(RDF['type'],OT[self.owl_class])
37
+ @model.add dataset, OT['dataEntry'], data_entry
32
38
  @model.add data_entry, RDF['type'], OT["DataEntry"]
33
39
  @model.add data_entry, OT['compound'], compound
34
40
  end
@@ -57,7 +63,7 @@ module OpenTox
57
63
  def find_or_create_compound(uri)
58
64
  compound = @model.subject(DC["identifier"], uri)
59
65
  if compound.nil?
60
- compound = @model.create_resource
66
+ compound = @model.create_resource(uri)
61
67
  @model.add compound, RDF['type'], OT["Compound"]
62
68
  @model.add compound, DC["identifier"], uri
63
69
  end
@@ -68,7 +74,7 @@ module OpenTox
68
74
  def find_or_create_feature(uri)
69
75
  feature = @model.subject(DC["identifier"], uri)
70
76
  if feature.nil?
71
- feature = @model.create_resource
77
+ feature = @model.create_resource(uri)
72
78
  @model.add feature, RDF['type'], OT["Feature"]
73
79
  @model.add feature, DC["identifier"], uri
74
80
  @model.add feature, DC["title"], File.basename(uri).split(/#/)[1]
@@ -78,7 +84,8 @@ module OpenTox
78
84
  end
79
85
 
80
86
  def self.create(data, content_type = 'application/rdf+xml')
81
- uri = RestClient.post @@config[:services]["opentox-dataset"], data, :content_type => content_type
87
+ resource = RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
88
+ uri = resource.post data, :content_type => content_type
82
89
  dataset = Dataset.new
83
90
  dataset.read uri.to_s
84
91
  dataset
@@ -86,7 +93,9 @@ module OpenTox
86
93
 
87
94
  def self.find(uri)
88
95
  dataset = Dataset.new
96
+ LOGGER.debug "Getting data from #{uri}"
89
97
  data = `curl "#{uri}"`
98
+ #LOGGER.debug data
90
99
  #data = RestClient.get(uri, :accept => 'application/rdf+xml') # unclear why this does not work for complex uris, Dataset.find works from irb
91
100
  dataset.rdf = data
92
101
  dataset
@@ -152,11 +161,24 @@ module OpenTox
152
161
 
153
162
  # Delete a dataset
154
163
  def delete
155
- RestClient.delete @uri
156
- end
164
+ resource = RestClient::Resource.new(@uri, :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
165
+ resource.delete
166
+ end
157
167
 
158
168
  def save
159
- RestClient.post(@@config[:services]["opentox-dataset"], self.rdf, :content_type => "application/rdf+xml").to_s
169
+ LOGGER.debug "Saving dataset"
170
+ #task_uri = RestClient.post(@@config[:services]["opentox-dataset"], self.rdf, :content_type => "application/rdf+xml").to_s
171
+ task_uri = RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]).post(self.rdf, :content_type => "application/rdf+xml").to_s
172
+ task = OpenTox::Task.find(task_uri)
173
+ LOGGER.debug "Waiting for task #{task_uri}"
174
+ task.wait_for_completion
175
+ LOGGER.debug "Dataset task #{task_uri} completed"
176
+ if task.failed?
177
+ LOGGER.error "Saving dataset failed"
178
+ task.failed
179
+ exit
180
+ end
181
+ task.resource
160
182
  end
161
183
 
162
184
  def to_yaml
@@ -6,6 +6,7 @@ ENV['RACK_ENV'] = 'test' unless ENV['RACK_ENV']
6
6
  basedir = File.join(ENV['HOME'], ".opentox")
7
7
  config_dir = File.join(basedir, "config")
8
8
  config_file = File.join(config_dir, "#{ENV['RACK_ENV']}.yaml")
9
+ user_file = File.join(config_dir, "users.yaml")
9
10
 
10
11
  TMP_DIR = File.join(basedir, "tmp")
11
12
  LOG_DIR = File.join(basedir, "log")
@@ -15,6 +16,7 @@ if File.exist?(config_file)
15
16
  else
16
17
  FileUtils.mkdir_p TMP_DIR
17
18
  FileUtils.mkdir_p LOG_DIR
19
+ FileUtils.mkdir_p config_dir
18
20
  FileUtils.cp(File.join(File.dirname(__FILE__), 'templates/config.yaml'), config_file)
19
21
  puts "Please edit #{config_file} and restart your application."
20
22
  exit
@@ -43,6 +45,21 @@ logfile = "#{LOG_DIR}/#{ENV["RACK_ENV"]}.log"
43
45
  LOGGER = Logger.new(logfile,'daily') # daily rotation
44
46
  LOGGER.level = Logger::DEBUG
45
47
 
48
+ if File.exist?(user_file)
49
+ @@users = YAML.load_file(user_file)
50
+ else
51
+ FileUtils.cp(File.join(File.dirname(__FILE__), 'templates/users.yaml'), user_file)
52
+ puts "Please edit #{user_file} and restart your application."
53
+ exit
54
+ end
55
+
56
+ begin
57
+ 0 < @@users[:users].keys.length
58
+ rescue
59
+ puts "Please edit #{user_file} and restart your application. Create at least one user with password."
60
+ exit
61
+ end
62
+
46
63
  # RDF namespaces
47
64
  RDF = Redland::Namespace.new 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'
48
65
  OWL = Redland::Namespace.new 'http://www.w3.org/2002/07/owl#'
@@ -24,7 +24,7 @@ module OpenTox
24
24
  lazar.algorithm = File.join(@@config[:services]["opentox-algorithm"],"lazar")
25
25
  lazar.trainingDataset = yaml[:activity_dataset]
26
26
  lazar.dependentVariables = yaml[:endpoint]
27
- lazar.predictedVariables = yaml[:endpoint] #+ " lazar prediction"
27
+ lazar.predictedVariables = yaml[:endpoint] + "_lazar_prediction"
28
28
  lazar
29
29
  end
30
30
 
@@ -39,15 +39,25 @@ module OpenTox
39
39
 
40
40
  # Predict a compound
41
41
  def predict(compound)
42
- RestClient.post(@uri, :compound_uri => compound.uri)
42
+ # nicht absichern??
43
+ resource = RestClient::Resource.new(@uri, :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
44
+ resource.post(:compound_uri => compound.uri)
43
45
  end
44
46
 
45
47
  def self.base_uri
46
- @@config[:services]["opentox-model"]
48
+ File.join @@config[:services]["opentox-model"],'lazar'
47
49
  end
48
50
 
49
51
  def self.create(data)
50
- RestClient.post(@@config[:services]["opentox-model"], data, :content_type => "application/x-yaml").to_s
52
+ resource = RestClient::Resource.new(@@config[:services]["opentox-model"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
53
+ resource.post(data, :content_type => "application/x-yaml").to_s
54
+ end
55
+
56
+ def delete
57
+ resource = RestClient::Resource.new(self.uri, :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
58
+ resource.delete
59
+ #RestClient.delete @uri if @uri
60
+ #RestClient.delete model.task_uri if model.task_uri
51
61
  end
52
62
 
53
63
  # def self.create(task)
@@ -8,6 +8,6 @@ rescue LoadError
8
8
  puts "Please install Openbabel with 'rake openbabel:install' in the compound component"
9
9
  end
10
10
 
11
- ['owl', 'compound','dataset','algorithm','model','task','utils'].each do |lib|
11
+ ['owl', 'compound','dataset','algorithm','model','task','validation','utils','authorization'].each do |lib|
12
12
  require lib
13
13
  end
data/lib/owl.rb CHANGED
@@ -16,7 +16,6 @@ module OpenTox
16
16
  # reate an anonymous resource for metadata
17
17
  # this has to be rewritten with an URI as soon as the resource has been saved at an definitive location
18
18
  tmp = @model.create_resource
19
- @model.add tmp, RDF['type'], OWL['Ontology']
20
19
  @model.add tmp, RDF['type'], OT[self.owl_class]
21
20
  end
22
21
 
@@ -1,3 +1,5 @@
1
+ LOGGER.progname = File.expand_path(__FILE__)
2
+
1
3
  module OpenTox
2
4
 
3
5
  class Task
@@ -10,7 +12,10 @@ module OpenTox
10
12
  end
11
13
 
12
14
  def self.create
13
- uri = RestClient.post @@config[:services]["opentox-task"], {}
15
+ #uri = RestClient.post @@config[:services]["opentox-task"], {}
16
+ resource = RestClient::Resource.new(@@config[:services]["opentox-task"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
17
+ #uri = resource.post(nil)
18
+ uri = resource.post({})
14
19
  Task.new(uri)
15
20
  end
16
21
 
@@ -26,7 +31,7 @@ module OpenTox
26
31
  task_uris = RestClient.get(@@config[:services]["opentox-task"]).split(/\n/)
27
32
  task_uris.collect{|uri| Task.new(uri)}
28
33
  end
29
-
34
+
30
35
  def created_at
31
36
  RestClient.get File.join(@uri, 'created_at')
32
37
  end
@@ -42,7 +47,24 @@ module OpenTox
42
47
  def resource
43
48
  RestClient.get File.join(@uri, 'resource')
44
49
  end
50
+
51
+ def started
52
+ LOGGER.info File.join(@uri,'started')
53
+ resource = RestClient::Resource.new(File.join(@uri,'started'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
54
+ resource.put({})
55
+ end
56
+
57
+ def cancel
58
+ resource = RestClient::Resource.new(@File.join(@uri,'cancelled'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
59
+ resource.put({})
60
+ end
61
+
62
+ def completed(uri)
63
+ resource = RestClient::Resource.new(File.join(@uri,'completed'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
64
+ resource.put :resource => uri
65
+ end
45
66
 
67
+ =begin
46
68
  def started
47
69
  RestClient.put File.join(@uri,'started'), {}
48
70
  end
@@ -51,20 +73,27 @@ module OpenTox
51
73
  RestClient.put File.join(@uri,'cancelled'), {}
52
74
  end
53
75
 
54
- def failed
55
- RestClient.put File.join(@uri,'failed'), {}
76
+ def completed(uri)
77
+ RestClient.put File.join(@uri,'completed'), :resource => uri
56
78
  end
57
79
 
58
- def parent=(task)
59
- RestClient.put File.join(@uri,'parent'), {:uri => task.uri}
80
+ =end
81
+ def failed
82
+ #RestClient.put File.join(@uri,'failed'), {}
83
+ resource = RestClient::Resource.new(@File.join(@uri,'failed'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
84
+ resource.put({})
60
85
  end
61
86
 
62
- def completed(uri)
63
- RestClient.put File.join(@uri,'completed'), :resource => uri
87
+ def parent=(task)
88
+ #RestClient.put File.join(@uri,'parent'), {:uri => task.uri}
89
+ resource = RestClient::Resource.new(File.join(@uri,'parent'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
90
+ LOGGER.debug "task.rb: #{resource}"
91
+ resource.put :uri => task.uri
64
92
  end
65
93
 
66
94
  def pid=(pid)
67
- RestClient.put File.join(@uri, 'pid'), :pid => pid
95
+ resource = RestClient::Resource.new(File.join(@uri,'pid'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
96
+ resource.put :pid => pid
68
97
  end
69
98
 
70
99
  def completed?
@@ -0,0 +1,5 @@
1
+ # please insert users and passwords here.
2
+ # one user and password each line. uncomment the line.
3
+ :users:
4
+ # username: "secretpassword"
5
+ # exampleuser: "ih9aiTog"
@@ -0,0 +1,21 @@
1
+ module OpenTox
2
+ class Validation
3
+
4
+ attr_accessor :uri
5
+
6
+ def initialize(params)
7
+ resource = RestClient::Resource.new(params[:uri], :user => @@users[:users].keys[0], :password => @@users[:users].values[0])
8
+ @uri = resource.post(params).to_s
9
+ end
10
+
11
+ def self.crossvalidation(params)
12
+ params[:uri] = File.join(@@config[:services]['opentox-validation'], "crossvalidation")
13
+ params[:num_folds] = 10 unless params[:num_folds]
14
+ params[:random_seed] = 2 unless params[:random_seed]
15
+ params[:stratified] = false unless params[:stratified]
16
+ OpenTox::Validation.new(params)
17
+ end
18
+
19
+ end
20
+ end
21
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opentox-ruby-api-wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Helma
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-08 00:00:00 +01:00
12
+ date: 2010-03-01 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -62,16 +62,6 @@ dependencies:
62
62
  - !ruby/object:Gem::Version
63
63
  version: "0"
64
64
  version:
65
- - !ruby/object:Gem::Dependency
66
- name: thin
67
- type: :runtime
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: "0"
74
- version:
75
65
  - !ruby/object:Gem::Dependency
76
66
  name: emk-sinatra-url-for
77
67
  type: :runtime
@@ -123,8 +113,8 @@ dependencies:
123
113
  version: "0"
124
114
  version:
125
115
  - !ruby/object:Gem::Dependency
126
- name: do_sqlite3
127
- type: :runtime
116
+ name: cucumber
117
+ type: :development
128
118
  version_requirement:
129
119
  version_requirements: !ruby/object:Gem::Requirement
130
120
  requirements:
@@ -133,8 +123,8 @@ dependencies:
133
123
  version: "0"
134
124
  version:
135
125
  - !ruby/object:Gem::Dependency
136
- name: do_postgres
137
- type: :runtime
126
+ name: jeweler
127
+ type: :development
138
128
  version_requirement:
139
129
  version_requirements: !ruby/object:Gem::Requirement
140
130
  requirements:
@@ -143,7 +133,7 @@ dependencies:
143
133
  version: "0"
144
134
  version:
145
135
  - !ruby/object:Gem::Dependency
146
- name: cucumber
136
+ name: thin
147
137
  type: :development
148
138
  version_requirement:
149
139
  version_requirements: !ruby/object:Gem::Requirement
@@ -155,6 +145,7 @@ dependencies:
155
145
  description: Ruby wrapper for the OpenTox REST API (http://www.opentox.org)
156
146
  email: helma@in-silico.ch
157
147
  executables:
148
+ - opentox-install-ubuntu.sh
158
149
  - opentox-install-debian.sh
159
150
  - yaml2owl.rb
160
151
  extensions: []
@@ -168,11 +159,12 @@ files:
168
159
  - Rakefile
169
160
  - VERSION
170
161
  - bin/opentox-install-debian.sh
162
+ - bin/opentox-install-ubuntu.sh
171
163
  - bin/yaml2owl.rb
172
164
  - lib/algorithm.rb
165
+ - lib/authorization.rb
173
166
  - lib/compound.rb
174
167
  - lib/config/config_ru.rb
175
- - lib/config/database.rb
176
168
  - lib/dataset.rb
177
169
  - lib/environment.rb
178
170
  - lib/helper.rb
@@ -184,7 +176,9 @@ files:
184
176
  - lib/task.rb
185
177
  - lib/tasks/opentox.rb
186
178
  - lib/templates/config.yaml
179
+ - lib/templates/users.yaml
187
180
  - lib/utils.rb
181
+ - lib/validation.rb
188
182
  has_rdoc: true
189
183
  homepage: http://github.com/helma/opentox-ruby-api-wrapper
190
184
  licenses: []
@@ -1,21 +0,0 @@
1
- # database
2
- if @@config[:database]
3
- require 'dm-core'
4
- require 'dm-serializer'
5
- require 'dm-timestamps'
6
- require 'dm-types'
7
- case @@config[:database][:adapter]
8
- when /sqlite/i
9
- db_dir = File.join(ENV['HOME'], ".opentox", "db")
10
- FileUtils.mkdir_p db_dir
11
- DataMapper::setup(:default, "sqlite3://#{db_dir}/opentox.sqlite3")
12
- else
13
- DataMapper.setup(:default, {
14
- :adapter => @@config[:database][:adapter],
15
- :database => @@config[:database][:database],
16
- :username => @@config[:database][:username],
17
- :password => @@config[:database][:password],
18
- :host => @@config[:database][:host]})
19
- end
20
- end
21
-