summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.de>2010-03-10 19:17:47 +0100
committerChristoph Helma <helma@in-silico.de>2010-03-10 19:17:47 +0100
commitad23a652417a2ff22e03af7c7be21c1055c4e4ef (patch)
treede2b21828d5b34887be783494981f321b17228ed
parentbc15ed2e36fb2ce7434e0c352d942f211178dea4 (diff)
owl-dl (temporarily) removed, switched to YAML representation
-rw-r--r--application.rb1
-rw-r--r--lazar.rb71
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
diff --git a/lazar.rb b/lazar.rb
index 9014d3b..8966527 100644
--- a/lazar.rb
+++ b/lazar.rb
@@ -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|