diff options
author | Christoph Helma <helma@in-silico.de> | 2010-03-10 19:17:47 +0100 |
---|---|---|
committer | Christoph Helma <helma@in-silico.de> | 2010-03-10 19:17:47 +0100 |
commit | ad23a652417a2ff22e03af7c7be21c1055c4e4ef (patch) | |
tree | de2b21828d5b34887be783494981f321b17228ed | |
parent | bc15ed2e36fb2ce7434e0c352d942f211178dea4 (diff) |
owl-dl (temporarily) removed, switched to YAML representation
-rw-r--r-- | application.rb | 1 | ||||
-rw-r--r-- | lazar.rb | 71 |
2 files changed, 27 insertions, 45 deletions
diff --git a/application.rb b/application.rb index 641c28d..9c50383 100644 --- a/application.rb +++ b/application.rb @@ -1,6 +1,7 @@ require 'rubygems' gem 'opentox-ruby-api-wrapper', '= 1.3.1' require 'opentox-ruby-api-wrapper' +LOGGER.progname = File.expand_path(__FILE__) class Model include DataMapper::Resource @@ -4,24 +4,25 @@ class Lazar < Model def classify(compound_uri) - unless @dataset - @dataset = OpenTox::Dataset.new + #unless @dataset + #@dataset = OpenTox::Dataset.new @predictions = {} - end - lazar = YAML.load yaml + #end + lazar = YAML.load self.yaml compound = OpenTox::Compound.new(:uri => compound_uri) - compound_matches = compound.match lazar[:features] + compound_matches = compound.match lazar.features conf = 0.0 - neighbors = [] + similarities = {} classification = nil - lazar[:fingerprints].each do |uri,matches| + lazar.fingerprints.each do |uri,matches| - sim = OpenTox::Algorithm::Similarity.weighted_tanimoto(compound_matches,matches,lazar[:p_values]) - if sim > 0.3 - neighbors << uri - lazar[:activities][uri].each do |act| + sim = OpenTox::Algorithm::Similarity.weighted_tanimoto(compound_matches,matches,lazar.p_values) + LOGGER.debug sim + if sim > 0#.3 + similarities[uri] = sim + lazar.activities[uri].each do |act| case act.to_s when 'true' conf += OpenTox::Utils.gauss(sim) @@ -32,23 +33,24 @@ class Lazar < Model end end - conf = conf/neighbors.size + conf = conf/similarities.size if conf > 0.0 classification = true elsif conf < 0.0 classification = false end + LOGGER.debug conf - compound = @dataset.find_or_create_compound(compound_uri) - feature = @dataset.find_or_create_feature(lazar[:endpoint]) + #compound = @dataset.compounds[compound_uri] + #feature = @dataset.features[lazar.endpoint] if (classification != nil) - tuple = @dataset.create_tuple(feature,{ 'lazar#classification' => classification, 'lazar#confidence' => conf}) - @dataset.add_tuple compound,tuple - @predictions[compound_uri] = { lazar[:endpoint] => { :lazar_prediction => { + #tuple = @dataset.create_tuple(feature,{ 'lazar#classification' => classification, 'lazar#confidence' => conf}) + #@dataset.add_tuple compound,tuple + @predictions[compound_uri] = { lazar.dependent_variable => { :lazar_prediction => { :classification => classification, :confidence => conf, - :neighbors => neighbors, + :similarities => similarities, :features => compound_matches } } } end @@ -58,15 +60,9 @@ class Lazar < Model def database_activity?(compound_uri) # find database activities lazar = YAML.load self.yaml - db_activities = lazar[:activities][compound_uri] + db_activities = lazar.activities[compound_uri] if db_activities - @dataset = OpenTox::Dataset.new - @predictions = {} - c = @dataset.find_or_create_compound(compound_uri) - f = @dataset.find_or_create_feature(lazar[:endpoint]) - v = db_activities.join(',') - @dataset.add c,f,v - @predictions[compound_uri] = { lazar[:endpoint] => {:measured_activities => db_activities}} + @predictions = {:compound_uri => { lazar.dependent_variable => {:measured_activities => db_activities}}} true else false @@ -76,27 +72,12 @@ class Lazar < Model end post '/?' do # create model - #model = Lazar.new(:task_uri => params[:task_uri]) - #model.uri = url_for("/#{model.id}", :full) + halt 400, "MIME type \"#{request.content_type}\" not supported." unless request.content_type.match(/yaml/) model = Lazar.new model.save model.uri = url_for("/#{model.id}", :full) -# model.uri -#end -# -#put '/:id/?' do # create model from yaml representation -# model = Lazar.first(params[:id]) - case request.content_type - when /yaml/ - input = request.env["rack.input"].read - model.yaml = input - lazar = OpenTox::Model::Lazar.from_yaml(input) - lazar.uri = model.uri - model.owl = lazar.rdf - model.save - else - halt 400, "MIME type \"#{request.content_type}\" not supported." - end + model.yaml = request.env["rack.input"].read + model.save model.uri end @@ -107,7 +88,7 @@ post '/:id/?' do # create prediction halt 404, "No compound_uri or dataset_uri parameter." unless compound_uri = params[:compound_uri] or dataset_uri = params[:dataset_uri] if compound_uri - lazar.classify(compound_uri) unless lazar.database_activity?(compound_uri) # FEHLER + lazar.classify(compound_uri) unless lazar.database_activity?(compound_uri) elsif dataset_uri input_dataset = OpenTox::Dataset.find(dataset_uri) input_dataset.compounds.each do |compound_uri| |