From a165822a7bd663916cff9484a76e6bb6bcf9a353 Mon Sep 17 00:00:00 2001 From: mr Date: Mon, 25 Jan 2010 09:29:21 +0100 Subject: internal authorization with first user of users.yaml --- lib/algorithm.rb | 112 ++++++++++++++++++++++++------------------------ lib/authorization.rb | 2 +- lib/dataset.rb | 7 +-- lib/environment.rb | 4 ++ lib/model.rb | 6 ++- lib/task.rb | 14 +++--- lib/templates/config.ru | 4 ++ 7 files changed, 82 insertions(+), 67 deletions(-) diff --git a/lib/algorithm.rb b/lib/algorithm.rb index 6ae9e72..d5f85c7 100644 --- a/lib/algorithm.rb +++ b/lib/algorithm.rb @@ -1,66 +1,66 @@ module OpenTox - module Algorithm + module Algorithm - class Fminer - include Owl + class Fminer + include Owl - def initialize - super - self.uri = File.join(@@config[:services]["opentox-algorithm"],'fminer') - self.title = "fminer" - self.source = "http://github.com/amaunz/libfminer" - self.parameters = { - "Dataset URI" => { :scope => "mandatory", :value => "dataset_uri" }, - "Feature URI for dependent variable" => { :scope => "mandatory", :value => "feature_uri" } - } - end + def initialize + super + self.uri = File.join(@@config[:services]["opentox-algorithm"],'fminer') + self.title = "fminer" + self.source = "http://github.com/amaunz/libfminer" + self.parameters = { + "Dataset URI" => { :scope => "mandatory", :value => "dataset_uri" }, + "Feature URI for dependent variable" => { :scope => "mandatory", :value => "feature_uri" } + } + end - def self.create_feature_dataset(params) - resource = RestClient::Resource.new(params[:feature_generation_uri], :user => request.username, :password => request.password) - resource.post :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri] - end - end + def self.create_feature_dataset(params) + resource = RestClient::Resource.new(params[:feature_generation_uri], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + resource.post :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri] + end + end - class Lazar - include Owl + class Lazar + include Owl - def initialize - super - self.uri = File.join(@@config[:services]["opentox-algorithm"],'lazar') - self.title = "lazar" - self.source = "http://github.com/helma/opentox-algorithm" - self.parameters = { - "Dataset URI" => - { :scope => "mandatory", :value => "dataset_uri" }, - "Feature URI for dependent variable" => - { :scope => "mandatory", :value => "feature_uri" }, - "Feature generation URI" => - { :scope => "mandatory", :value => "feature_generation_uri" } - } - end - - def self.create_model(params) - resource = RestClient::Resource.new(File.join(@@config[:services]["opentox-algorithm"], "lazar"), :user => request.username, :password => request.password) - @uri = resource.post :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri], :feature_generation_uri => File.join(@@config[:services]["opentox-algorithm"], "fminer") - end + def initialize + super + self.uri = File.join(@@config[:services]["opentox-algorithm"],'lazar') + self.title = "lazar" + self.source = "http://github.com/helma/opentox-algorithm" + self.parameters = { + "Dataset URI" => + { :scope => "mandatory", :value => "dataset_uri" }, + "Feature URI for dependent variable" => + { :scope => "mandatory", :value => "feature_uri" }, + "Feature generation URI" => + { :scope => "mandatory", :value => "feature_generation_uri" } + } + end + + def self.create_model(params) + resource = RestClient::Resource.new(File.join(@@config[:services]["opentox-algorithm"], "lazar"), :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + @uri = resource.post :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri], :feature_generation_uri => File.join(@@config[:services]["opentox-algorithm"], "fminer") + end - end + end - class Similarity - def self.weighted_tanimoto(fp_a,fp_b,p) - common_features = fp_a & fp_b - all_features = fp_a + fp_b - common_p_sum = 0.0 - if common_features.size > 0 - common_features.each{|f| common_p_sum += p[f]} - all_p_sum = 0.0 - all_features.each{|f| all_p_sum += p[f]} - common_p_sum/all_p_sum - else - 0.0 - end - end - end + class Similarity + def self.weighted_tanimoto(fp_a,fp_b,p) + common_features = fp_a & fp_b + all_features = fp_a + fp_b + common_p_sum = 0.0 + if common_features.size > 0 + common_features.each{|f| common_p_sum += p[f]} + all_p_sum = 0.0 + all_features.each{|f| all_p_sum += p[f]} + common_p_sum/all_p_sum + else + 0.0 + end + end + end - end + end end diff --git a/lib/authorization.rb b/lib/authorization.rb index 6abbc91..372d52b 100644 --- a/lib/authorization.rb +++ b/lib/authorization.rb @@ -20,5 +20,5 @@ helpers do end before do - #protected! unless env['REQUEST_METHOD'] == "GET" + protected! unless env['REQUEST_METHOD'] == "GET" end \ No newline at end of file diff --git a/lib/dataset.rb b/lib/dataset.rb index f4372be..1aa3469 100644 --- a/lib/dataset.rb +++ b/lib/dataset.rb @@ -78,7 +78,8 @@ module OpenTox end def self.create(data, content_type = 'application/rdf+xml') - uri = RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => request.username, :password => request.password).post data, :content_type => content_type + resource = RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + uri = resource.post data, :content_type => content_type dataset = Dataset.new dataset.read uri.to_s dataset @@ -168,12 +169,12 @@ module OpenTox # Delete a dataset def delete - resource = RestClient::Resource.new(@uri, :user => request.username, :password => request.password) + resource = RestClient::Resource.new(@uri, :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) resource.delete end def save - RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => request.username, :password => request.password).post(self.rdf, :content_type => "application/rdf+xml").to_s + 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 end def to_yaml diff --git a/lib/environment.rb b/lib/environment.rb index f7513c5..ee36366 100644 --- a/lib/environment.rb +++ b/lib/environment.rb @@ -25,6 +25,10 @@ else puts "Please edit #{user_file} and restart your application." exit end +if @@users.length < 1 or !@@users + puts "Please edit #{user_file} and restart your application." + exit +end # RDF namespaces RDF = Redland::Namespace.new 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' diff --git a/lib/model.rb b/lib/model.rb index b86b3fc..6bdbfd2 100644 --- a/lib/model.rb +++ b/lib/model.rb @@ -34,7 +34,8 @@ module OpenTox # Predict a compound def predict(compound) - RestClient::Resource.new(@uri, :user => request.username, :password => request.password).post(:compound_uri => compound.uri) + resource = RestClient::Resource.new(@uri, :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + resource.post(:compound_uri => compound.uri) end def self.base_uri @@ -42,7 +43,8 @@ module OpenTox end def self.create(data) - RestClient::Resource.new(@@config[:services]["opentox-model"], :user => request.username, :password => request.password).post(data, :content_type => "application/x-yaml").to_s + resource = RestClient::Resource.new(@@config[:services]["opentox-model"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + resource.post(data, :content_type => "application/x-yaml").to_s end def endpoint diff --git a/lib/task.rb b/lib/task.rb index 5dd5e4c..23795dc 100644 --- a/lib/task.rb +++ b/lib/task.rb @@ -10,7 +10,8 @@ module OpenTox end def self.create - uri = RestClient::Resource.new(@@config[:services]["opentox-task"], :user => request.username, :password => request.password).post nil + resource = RestClient::Resource.new(@@config[:services]["opentox-task"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + uri = resource.post(nil) Task.new(uri) end @@ -23,16 +24,19 @@ module OpenTox end def started - #LOGGER.info File.join(@uri,'started') - RestClient::Resource.new(@uri, :user => request.username, :password => request.password).put File.join(@uri,'started'), {} + LOGGER.info File.join(@uri,'started') + resource = RestClient::Resource.new(File.join(@uri,'started'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + resource.put({}) end def cancel - RestClient::Resource.new(@uri, :user => request.username, :password => request.password).put File.join(@uri,'cancelled'), {} + resource = RestClient::Resource.new(@File.join(@uri,'cancelled'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + resource.put({}) end def completed(uri) - RestClient::Resource.new(@uri, :user => request.username, :password => request.password).put File.join(@uri,'completed'), :resource => uri + resource = RestClient::Resource.new(File.join(@uri,'completed'), :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + resource.put :resource => uri end def status diff --git a/lib/templates/config.ru b/lib/templates/config.ru index 63dd2ce..ffccbc1 100644 --- a/lib/templates/config.ru +++ b/lib/templates/config.ru @@ -8,6 +8,9 @@ FileUtils.mkdir_p 'log' unless File.exists?('log') log = File.new("log/#{ENV["RACK_ENV"]}.log", "a") $stdout.reopen(log) $stderr.reopen(log) +$stdout.sync = true +$stderr.sync = true + if ENV['RACK_ENV'] == 'production' use Rack::MailExceptions do |mail| @@ -21,3 +24,4 @@ end run Sinatra::Application +set :raise_errors, true \ No newline at end of file -- cgit v1.2.3