From e5cc33df0c3b75b655879181cc3391edb13a0711 Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Tue, 17 May 2011 15:17:51 +0200 Subject: Added override flag prediction_algorithm support in params --- lazar.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 45123f0..ec055ee 100644 --- a/lazar.rb +++ b/lazar.rb @@ -122,6 +122,9 @@ post '/lazar/?' do @training_classes = training_activities.feature_classes(prediction_feature.uri, @subjectid) if prediction_feature.feature_type == "classification" lazar.prediction_algorithm = "Neighbors.local_svm_regression" if prediction_feature.feature_type == "regression" + # AM: allow prediction_algorithm override by user for classification AND regression + lazar.prediction_algorithm = "Neighbors.#{params[:prediction_algorithm]}" unless params[:prediction_algorithm].nil? + training_activities.data_entries.each do |compound,entry| lazar.activities[compound] = [] unless lazar.activities[compound] unless entry[prediction_feature.uri].empty? -- cgit v1.2.3 From f48e41548ebb693c1abba8ad1b2a671fae0c118a Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Mon, 23 May 2011 14:06:00 +0000 Subject: owl-dl fixed for model and prediction datasets --- lazar.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 67d9f74..a4e006b 100644 --- a/lazar.rb +++ b/lazar.rb @@ -141,9 +141,9 @@ post '/lazar/?' do lazar.metadata[OT.trainingDataset] = dataset_uri lazar.metadata[OT.featureDataset] = feature_dataset_uri if training_activities.feature_type.to_s == "classification" - lazar.metadata[OT.isA] = OTA.ClassificationLazySingleTarget + lazar.metadata[RDF.type] = [OT.Model, OTA.ClassificationLazySingleTarget] elsif training_activities.feature_type.to_s == "regression" - lazar.metadata[OT.isA] = OTA.RegressionLazySingleTarget + lazar.metadata[RDF.type] = [OT.Model, OTA.RegressionLazySingleTarget] end lazar.metadata[OT.parameters] = [ -- cgit v1.2.3 From 9e70919c3963d70cc6c9c39413ac386b4c607b85 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Wed, 25 May 2011 13:40:05 +0200 Subject: fix: add missing subject id when loading feature type --- lazar.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 0c91179..a436569 100644 --- a/lazar.rb +++ b/lazar.rb @@ -155,9 +155,10 @@ post '/lazar/?' do lazar.metadata[OT.dependentVariables] = prediction_feature.uri lazar.metadata[OT.trainingDataset] = dataset_uri lazar.metadata[OT.featureDataset] = feature_dataset_uri - if training_activities.feature_type.to_s == "classification" + case training_activities.feature_type(@subjectid) + when "classification" lazar.metadata[RDF.type] = [OT.Model, OTA.ClassificationLazySingleTarget] - elsif training_activities.feature_type.to_s == "regression" + when "regression" lazar.metadata[RDF.type] = [OT.Model, OTA.RegressionLazySingleTarget] end -- cgit v1.2.3 From 4dac8a5e47a4cc85c4bafc805cd3e52be2a53669 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Thu, 26 May 2011 10:57:04 +0200 Subject: adjust to change in wrapper: feature_values -> accept_values --- lazar.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index a436569..0ed8f3f 100644 --- a/lazar.rb +++ b/lazar.rb @@ -119,7 +119,7 @@ post '/lazar/?' do end end - @training_classes = training_activities.feature_classes(prediction_feature.uri, @subjectid) if prediction_feature.feature_type == "classification" + @training_classes = training_activities.accept_values(prediction_feature.uri) if prediction_feature.feature_type == "classification" lazar.prediction_algorithm = "Neighbors.local_svm_regression" if prediction_feature.feature_type == "regression" # AM: allow prediction_algorithm override by user for classification AND regression -- cgit v1.2.3 From 645045dc2afe3323d5bf9968ffe842665398bd67 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Thu, 26 May 2011 12:19:50 +0200 Subject: fix html for algorithms --- lazar.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 0ed8f3f..403d99c 100644 --- a/lazar.rb +++ b/lazar.rb @@ -3,7 +3,6 @@ # Get RDF/XML representation of the lazar algorithm # @return [application/rdf+xml] OWL-DL representation of the lazar algorithm get '/lazar/?' do - response['Content-Type'] = 'application/rdf+xml' algorithm = OpenTox::Algorithm::Generic.new(url_for('/lazar',:full)) algorithm.metadata = { DC.title => 'lazar', @@ -17,7 +16,17 @@ get '/lazar/?' do { DC.description => "Further parameters for the feaature generation service", OT.paramScope => "optional" } ] } - algorithm.to_rdfxml + case request.env['HTTP_ACCEPT'] + when /text\/html/ + content_type "text/html" + OpenTox.text_to_html algorithm.to_yaml + when /application\/x-yaml/ + content_type "application/x-yaml" + algorithm.to_yaml + else + response['Content-Type'] = 'application/rdf+xml' + algorithm.to_rdfxml + end end # Create a lazar prediction model -- cgit v1.2.3 From 017efa8e3ada72dfeb3256f36784e99518a5ee07 Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Thu, 26 May 2011 14:27:13 +0200 Subject: Prop kernel --- lazar.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 403d99c..9262f2f 100644 --- a/lazar.rb +++ b/lazar.rb @@ -133,6 +133,7 @@ post '/lazar/?' do # AM: allow prediction_algorithm override by user for classification AND regression lazar.prediction_algorithm = "Neighbors.#{params[:prediction_algorithm]}" unless params[:prediction_algorithm].nil? + lazar.prop_kernel = true if params[:local_svm_kernel] == "propositionalized" training_activities.data_entries.each do |compound,entry| lazar.activities[compound] = [] unless lazar.activities[compound] -- cgit v1.2.3 From 5aaefadb8d5f21195fafe4a39de254f964eaf61f Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Tue, 31 May 2011 08:59:02 +0000 Subject: keep classes from external datasets --- lazar.rb | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 9262f2f..a8de64a 100644 --- a/lazar.rb +++ b/lazar.rb @@ -41,22 +41,22 @@ post '/lazar/?' do halt 404, "No dataset_uri parameter." unless params[:dataset_uri] dataset_uri = params[:dataset_uri] - halt 404, "Dataset #{dataset_uri} not found." unless training_activities = OpenTox::Dataset.new(dataset_uri) - training_activities.load_all(@subjectid) - - prediction_feature = OpenTox::Feature.find(params[:prediction_feature],@subjectid) - unless params[:prediction_feature] # try to read prediction_feature from dataset - halt 404, "#{training_activities.features.size} features in dataset #{dataset_uri}. Please provide a prediction_feature parameter." unless training_activities.features.size == 1 - prediction_feature = OpenTox::Feature.find(training_activities.features.keys.first,@subjectid) - params[:prediction_feature] = prediction_feature.uri # pass to feature mining service - end + task = OpenTox::Task.create("Create lazar model",url_for('/lazar',:full)) do |task| - feature_generation_uri = @@feature_generation_default unless feature_generation_uri = params[:feature_generation_uri] + raise OpenTox::NotFoundError.new "Dataset #{dataset_uri} not found." unless training_activities = OpenTox::Dataset.new(dataset_uri) + training_activities.load_all(@subjectid) - halt 404, "No feature #{prediction_feature.uri} in dataset #{params[:dataset_uri]}. (features: "+ - training_activities.features.inspect+")" unless training_activities.features and training_activities.features.include?(prediction_feature.uri) + prediction_feature = OpenTox::Feature.find(params[:prediction_feature],@subjectid) + unless params[:prediction_feature] # try to read prediction_feature from dataset + raise OpenTox::NotFoundError.new "#{training_activities.features.size} features in dataset #{dataset_uri}. Please provide a prediction_feature parameter." unless training_activities.features.size == 1 + prediction_feature = OpenTox::Feature.find(training_activities.features.keys.first,@subjectid) + params[:prediction_feature] = prediction_feature.uri # pass to feature mining service + end - task = OpenTox::Task.create("Create lazar model",url_for('/lazar',:full)) do |task| + feature_generation_uri = @@feature_generation_default unless feature_generation_uri = params[:feature_generation_uri] + + raise OpenTox::NotFoundError.new "No feature #{prediction_feature.uri} in dataset #{params[:dataset_uri]}. (features: "+ + training_activities.features.inspect+")" unless training_activities.features and training_activities.features.include?(prediction_feature.uri) lazar = OpenTox::Model::Lazar.new lazar.min_sim = params[:min_sim] if params[:min_sim] @@ -127,9 +127,13 @@ post '/lazar/?' do end end end - - @training_classes = training_activities.accept_values(prediction_feature.uri) if prediction_feature.feature_type == "classification" - lazar.prediction_algorithm = "Neighbors.local_svm_regression" if prediction_feature.feature_type == "regression" + + if prediction_feature.feature_type == "classification" + @training_classes = training_activities.accept_values(prediction_feature.uri).sort + lazar.value_map = { true => @training_classes.last, false => @training_classes.first } + elsif prediction_feature.feature_type == "regression" + lazar.prediction_algorithm = "Neighbors.local_svm_regression" + end # AM: allow prediction_algorithm override by user for classification AND regression lazar.prediction_algorithm = "Neighbors.#{params[:prediction_algorithm]}" unless params[:prediction_algorithm].nil? @@ -161,7 +165,6 @@ post '/lazar/?' do end lazar.metadata[DC.title] = "lazar model for #{URI.decode(File.basename(prediction_feature.uri))}" - # TODO: fix dependentVariable lazar.metadata[OT.dependentVariables] = prediction_feature.uri lazar.metadata[OT.trainingDataset] = dataset_uri lazar.metadata[OT.featureDataset] = feature_dataset_uri -- cgit v1.2.3 From b435b145aea744ba951c12b4f6bf90ce62a5b0a3 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Tue, 31 May 2011 23:28:02 +0200 Subject: skip 0 regression value instead of stopping model buliding --- lazar.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index a8de64a..4e5d41d 100644 --- a/lazar.rb +++ b/lazar.rb @@ -157,8 +157,12 @@ post '/lazar/?' do LOGGER.warn "Unknown class \"#{value.to_s}\"." end elsif prediction_feature.feature_type == "regression" - halt 404, "0 values not allowed in training dataset. log10 is calculated internally." if value.to_f == 0 - lazar.activities[compound] << value.to_f + #never use halt in tasks, do not raise exception when, print warning instead + if value.to_f==0 + LOGGER.warn "0 values not allowed in training dataset. log10 is calculated internally. skipping compound" + else + lazar.activities[compound] << value.to_f + end end end end -- cgit v1.2.3 From f6a55a7121a61865d85ad7195371bd8fd784fb29 Mon Sep 17 00:00:00 2001 From: mguetlein Date: Mon, 6 Jun 2011 12:39:37 +0200 Subject: removing several halt, adding debug message, getting smiles directly --- lazar.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 4e5d41d..00f3216 100644 --- a/lazar.rb +++ b/lazar.rb @@ -37,8 +37,9 @@ end # @return [text/uri-list] Task URI post '/lazar/?' do + LOGGER.debug "building lazar model with params: "+params.inspect params[:subjectid] = @subjectid - halt 404, "No dataset_uri parameter." unless params[:dataset_uri] + raise OpenTox::NotFoundError.new "No dataset_uri parameter." unless params[:dataset_uri] dataset_uri = params[:dataset_uri] task = OpenTox::Task.create("Create lazar model",url_for('/lazar',:full)) do |task| @@ -75,7 +76,7 @@ post '/lazar/?' do if feature_generation_uri.match(/fminer/) lazar.feature_calculation_algorithm = "Substructure.match" else - halt 404, "External feature generation services not yet supported" + raise OpenTox::NotFoundError.new "External feature generation services not yet supported" end params[:subjectid] = @subjectid prediction_feature = OpenTox::Feature.find params[:prediction_feature], @subjectid @@ -87,7 +88,7 @@ post '/lazar/?' do end training_features.load_all(@subjectid) - halt 404, "Dataset #{feature_dataset_uri} not found." if training_features.nil? + raise OpenTox::NotFoundError.new "Dataset #{feature_dataset_uri} not found." if training_features.nil? # sorted features for index lookups -- cgit v1.2.3 From 8d8880685ddaeeb968e1f1f0addf6cbf66eef67d Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Mon, 6 Jun 2011 16:54:56 +0000 Subject: halts (partially) substituted by OpenTox errors --- lazar.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 00f3216..4441726 100644 --- a/lazar.rb +++ b/lazar.rb @@ -191,7 +191,7 @@ post '/lazar/?' do model_uri end response['Content-Type'] = 'text/uri-list' - halt 503,task.uri+"\n" if task.status == "Cancelled" + raise OpenTox::ServiceUnavailableError.newtask.uri+"\n" if task.status == "Cancelled" halt 202,task.uri end -- cgit v1.2.3 From c1ee06638871ee7a88b07ebea05f4ecf3fab6392 Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Tue, 21 Jun 2011 13:43:05 +0200 Subject: Multinomial capability for Fminer and Lazar --- lazar.rb | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 4441726..31cdd4d 100644 --- a/lazar.rb +++ b/lazar.rb @@ -131,7 +131,9 @@ post '/lazar/?' do if prediction_feature.feature_type == "classification" @training_classes = training_activities.accept_values(prediction_feature.uri).sort - lazar.value_map = { true => @training_classes.last, false => @training_classes.first } + @training_classes.each_with_index { |c,i| + lazar.value_map[i] = c + } elsif prediction_feature.feature_type == "regression" lazar.prediction_algorithm = "Neighbors.local_svm_regression" end @@ -145,18 +147,7 @@ post '/lazar/?' do unless entry[prediction_feature.uri].empty? entry[prediction_feature.uri].each do |value| if prediction_feature.feature_type == "classification" - case value.to_s - when "true" - lazar.activities[compound] << true - when "false" - lazar.activities[compound] << false - when /#{@training_classes.last}/ - lazar.activities[compound] << true - when /#{@training_classes.first}/ - lazar.activities[compound] << false - else - LOGGER.warn "Unknown class \"#{value.to_s}\"." - end + lazar.activities[compound] << lazar.value_map.invert[value] # insert mapped values, not originals elsif prediction_feature.feature_type == "regression" #never use halt in tasks, do not raise exception when, print warning instead if value.to_f==0 -- cgit v1.2.3 From d9b997f0a0e3a45a72ff9e4a48035dacd75faacf Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Tue, 21 Jun 2011 14:44:41 +0200 Subject: Introduced switch 'balanced' --- lazar.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 31cdd4d..eb14075 100644 --- a/lazar.rb +++ b/lazar.rb @@ -141,6 +141,7 @@ post '/lazar/?' do # AM: allow prediction_algorithm override by user for classification AND regression lazar.prediction_algorithm = "Neighbors.#{params[:prediction_algorithm]}" unless params[:prediction_algorithm].nil? lazar.prop_kernel = true if params[:local_svm_kernel] == "propositionalized" + lazar.balanced = true if params[:balanced] == "true" training_activities.data_entries.each do |compound,entry| lazar.activities[compound] = [] unless lazar.activities[compound] -- cgit v1.2.3 From cec978fb5cf0defcb79dd8e0da604c4f6c978674 Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Tue, 21 Jun 2011 15:56:08 +0200 Subject: Enabling map for Fminer --- lazar.rb | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index eb14075..6f8f439 100644 --- a/lazar.rb +++ b/lazar.rb @@ -53,7 +53,7 @@ post '/lazar/?' do prediction_feature = OpenTox::Feature.find(training_activities.features.keys.first,@subjectid) params[:prediction_feature] = prediction_feature.uri # pass to feature mining service end - + feature_generation_uri = @@feature_generation_default unless feature_generation_uri = params[:feature_generation_uri] raise OpenTox::NotFoundError.new "No feature #{prediction_feature.uri} in dataset #{params[:dataset_uri]}. (features: "+ @@ -62,6 +62,18 @@ post '/lazar/?' do lazar = OpenTox::Model::Lazar.new lazar.min_sim = params[:min_sim] if params[:min_sim] + + if prediction_feature.feature_type == "classification" + @training_classes = training_activities.accept_values(prediction_feature.uri).sort + @training_classes.each_with_index { |c,i| + lazar.value_map[i] = c + params[:value_map] = lazar.value_map + } + elsif prediction_feature.feature_type == "regression" + lazar.prediction_algorithm = "Neighbors.local_svm_regression" + end + + if params[:feature_dataset_uri] feature_dataset_uri = params[:feature_dataset_uri] training_features = OpenTox::Dataset.new(feature_dataset_uri) @@ -129,15 +141,6 @@ post '/lazar/?' do end end - if prediction_feature.feature_type == "classification" - @training_classes = training_activities.accept_values(prediction_feature.uri).sort - @training_classes.each_with_index { |c,i| - lazar.value_map[i] = c - } - elsif prediction_feature.feature_type == "regression" - lazar.prediction_algorithm = "Neighbors.local_svm_regression" - end - # AM: allow prediction_algorithm override by user for classification AND regression lazar.prediction_algorithm = "Neighbors.#{params[:prediction_algorithm]}" unless params[:prediction_algorithm].nil? lazar.prop_kernel = true if params[:local_svm_kernel] == "propositionalized" -- cgit v1.2.3 From 1222ff3e76051cd4903bfe89a3b3d8c0a7222799 Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Tue, 21 Jun 2011 16:12:18 +0200 Subject: Fixing map values to not start from 0 --- lazar.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 6f8f439..d692422 100644 --- a/lazar.rb +++ b/lazar.rb @@ -66,7 +66,7 @@ post '/lazar/?' do if prediction_feature.feature_type == "classification" @training_classes = training_activities.accept_values(prediction_feature.uri).sort @training_classes.each_with_index { |c,i| - lazar.value_map[i] = c + lazar.value_map[i+1] = c # don't use '0': we must take the weighted mean later. params[:value_map] = lazar.value_map } elsif prediction_feature.feature_type == "regression" -- cgit v1.2.3 From aea16f80892464cc84def3735e50daa424cf0b28 Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Mon, 4 Jul 2011 08:40:54 +0200 Subject: Added switch for MLR --- lazar.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index d692422..e81c1ba 100644 --- a/lazar.rb +++ b/lazar.rb @@ -143,7 +143,7 @@ post '/lazar/?' do # AM: allow prediction_algorithm override by user for classification AND regression lazar.prediction_algorithm = "Neighbors.#{params[:prediction_algorithm]}" unless params[:prediction_algorithm].nil? - lazar.prop_kernel = true if params[:local_svm_kernel] == "propositionalized" + lazar.prop_kernel = true if (params[:local_svm_kernel] == "propositionalized" || params[:prediction_algorithm] == "local_mlr_prop") lazar.balanced = true if params[:balanced] == "true" training_activities.data_entries.each do |compound,entry| -- cgit v1.2.3 From f9d650f9d033463295ec116188c46a12230e9652 Mon Sep 17 00:00:00 2001 From: dv Date: Mon, 11 Jul 2011 12:42:28 +0200 Subject: changes for support --- lazar.rb | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index e81c1ba..7c1dc40 100644 --- a/lazar.rb +++ b/lazar.rb @@ -60,7 +60,8 @@ post '/lazar/?' do training_activities.features.inspect+")" unless training_activities.features and training_activities.features.include?(prediction_feature.uri) lazar = OpenTox::Model::Lazar.new - lazar.min_sim = params[:min_sim] if params[:min_sim] + lazar.min_sim = params[:min_sim] if params[:min_sim] + lazar.nr_hits = true if params[:nr_hits] if prediction_feature.feature_type == "classification" @@ -107,12 +108,21 @@ post '/lazar/?' do lazar.features = training_features.features.sort if prediction_feature.feature_type == "regression" and lazar.feature_calculation_algorithm != "Substructure.match" training_features.data_entries.each do |compound,entry| - lazar.fingerprints[compound] = [] unless lazar.fingerprints[compound] + lazar.fingerprints[compound] = {} unless lazar.fingerprints[compound] entry.keys.each do |feature| if lazar.feature_calculation_algorithm == "Substructure.match" if training_features.features[feature] smarts = training_features.features[feature][OT.smarts] - lazar.fingerprints[compound] << smarts + if nr_hits = true + lazar.fingerprints[compound][smarts] = entry[feature].flatten.first + else + lazar.fingerprints[compound][smarts] = 1 + end + #LOGGER.debug "dv ------------ frequencies --------- feature: '#{feature}'; compound: '#{compound}' smarts: '#{smarts}'; entry.first:'#{entry[feature].flatten.first}" + #unless entry[feature].flatten.first == true + # lazar.frequencies[smarts] = [] unless lazar.frequencies[smarts] + # lazar.frequencies[smarts] << {compound => entry[feature].flatten.first} + #end unless lazar.features.include? smarts lazar.features << smarts lazar.p_values[smarts] = training_features.features[feature][OT.pValue] -- cgit v1.2.3 From fa52855bc713ff7feafbe63bb8daac941f1868ae Mon Sep 17 00:00:00 2001 From: dv Date: Tue, 19 Jul 2011 10:11:00 +0200 Subject: merge with dev and some changes --- lazar.rb | 64 +++++++++++++++++++++++++++++++++++++++------------------------- 1 file changed, 39 insertions(+), 25 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 7c1dc40..c25a227 100644 --- a/lazar.rb +++ b/lazar.rb @@ -61,8 +61,7 @@ post '/lazar/?' do lazar = OpenTox::Model::Lazar.new lazar.min_sim = params[:min_sim] if params[:min_sim] - lazar.nr_hits = true if params[:nr_hits] - + lazar.nr_hits = params[:nr_hits] if params[:nr_hits] if prediction_feature.feature_type == "classification" @training_classes = training_activities.accept_values(prediction_feature.uri).sort @@ -73,7 +72,7 @@ post '/lazar/?' do elsif prediction_feature.feature_type == "regression" lazar.prediction_algorithm = "Neighbors.local_svm_regression" end - + task.progress 10 if params[:feature_dataset_uri] feature_dataset_uri = params[:feature_dataset_uri] @@ -96,7 +95,7 @@ post '/lazar/?' do if prediction_feature.feature_type == "regression" && feature_generation_uri.match(/fminer/) params[:feature_type] = "paths" end - feature_dataset_uri = OpenTox::Algorithm::Generic.new(feature_generation_uri).run(params).to_s + feature_dataset_uri = OpenTox::Algorithm::Generic.new(feature_generation_uri).run(params, OpenTox::SubTask.new(task,10,70)).to_s training_features = OpenTox::Dataset.new(feature_dataset_uri) end @@ -113,16 +112,12 @@ post '/lazar/?' do if lazar.feature_calculation_algorithm == "Substructure.match" if training_features.features[feature] smarts = training_features.features[feature][OT.smarts] - if nr_hits = true + #lazar.fingerprints[compound] << smarts + if params[:nr_hits] == "true" lazar.fingerprints[compound][smarts] = entry[feature].flatten.first else lazar.fingerprints[compound][smarts] = 1 end - #LOGGER.debug "dv ------------ frequencies --------- feature: '#{feature}'; compound: '#{compound}' smarts: '#{smarts}'; entry.first:'#{entry[feature].flatten.first}" - #unless entry[feature].flatten.first == true - # lazar.frequencies[smarts] = [] unless lazar.frequencies[smarts] - # lazar.frequencies[smarts] << {compound => entry[feature].flatten.first} - #end unless lazar.features.include? smarts lazar.features << smarts lazar.p_values[smarts] = training_features.features[feature][OT.pValue] @@ -134,7 +129,8 @@ post '/lazar/?' do when "classification" # fingerprints are sets if entry[feature].flatten.size == 1 - lazar.fingerprints[compound] << feature if entry[feature].flatten.first.to_s.match(TRUE_REGEXP) + #lazar.fingerprints[compound] << feature if entry[feature].flatten.first.to_s.match(TRUE_REGEXP) + lazar.fingerprints[compound][feature] = entry[feature].flatten.first if entry[feature].flatten.first.to_s.match(TRUE_REGEXP) lazar.features << feature unless lazar.features.include? feature else LOGGER.warn "More than one entry (#{entry[feature].inspect}) for compound #{compound}, feature #{feature}" @@ -143,6 +139,7 @@ post '/lazar/?' do # fingerprints are arrays if entry[feature].flatten.size == 1 lazar.fingerprints[compound][lazar.features.index(feature)] = entry[feature].flatten.first + #lazar.fingerprints[compound][feature] = entry[feature].flatten.first else LOGGER.warn "More than one entry (#{entry[feature].inspect}) for compound #{compound}, feature #{feature}" end @@ -150,29 +147,46 @@ post '/lazar/?' do end end end + task.progress 80 - # AM: allow prediction_algorithm override by user for classification AND regression + # AM: allow settings override by user lazar.prediction_algorithm = "Neighbors.#{params[:prediction_algorithm]}" unless params[:prediction_algorithm].nil? + if prediction_feature.feature_type == "regression" + lazar.transform["class"] = "Log10" if lazar.transform["class"] == "NOP" + end + lazar.transform["class"] = params[:activity_transform] unless params[:activity_transform].nil? lazar.prop_kernel = true if (params[:local_svm_kernel] == "propositionalized" || params[:prediction_algorithm] == "local_mlr_prop") - lazar.balanced = true if params[:balanced] == "true" - training_activities.data_entries.each do |compound,entry| - lazar.activities[compound] = [] unless lazar.activities[compound] - unless entry[prediction_feature.uri].empty? - entry[prediction_feature.uri].each do |value| - if prediction_feature.feature_type == "classification" + # AM: Feed Data using Transformations + if prediction_feature.feature_type == "regression" + transformed_acts = [] + training_activities.data_entries.each do |compound,entry| + transformed_acts.concat entry[prediction_feature.uri] unless entry[prediction_feature.uri].empty? + end + transformer = eval "OpenTox::Algorithm::Transform::#{lazar.transform["class"]}.new(transformed_acts)" + transformed_acts = transformer.values + lazar.transform["offset"] = transformer.offset + t_count=0 + training_activities.data_entries.each do |compound,entry| + lazar.activities[compound] = [] unless lazar.activities[compound] + unless entry[prediction_feature.uri].empty? + entry[prediction_feature.uri].each do |value| + lazar.activities[compound] << transformed_acts[t_count].to_s + t_count+=1 + end + end + end + elsif prediction_feature.feature_type == "classification" + training_activities.data_entries.each do |compound,entry| + lazar.activities[compound] = [] unless lazar.activities[compound] + unless entry[prediction_feature.uri].empty? + entry[prediction_feature.uri].each do |value| lazar.activities[compound] << lazar.value_map.invert[value] # insert mapped values, not originals - elsif prediction_feature.feature_type == "regression" - #never use halt in tasks, do not raise exception when, print warning instead - if value.to_f==0 - LOGGER.warn "0 values not allowed in training dataset. log10 is calculated internally. skipping compound" - else - lazar.activities[compound] << value.to_f - end end end end end + task.progress 90 lazar.metadata[DC.title] = "lazar model for #{URI.decode(File.basename(prediction_feature.uri))}" lazar.metadata[OT.dependentVariables] = prediction_feature.uri -- cgit v1.2.3 From 6bdf348306752602b7aa16b2b5529397ee0b6087 Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Wed, 20 Jul 2011 15:19:33 +0200 Subject: Fixed nr_hits to bool --- lazar.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index c25a227..7febdeb 100644 --- a/lazar.rb +++ b/lazar.rb @@ -61,7 +61,7 @@ post '/lazar/?' do lazar = OpenTox::Model::Lazar.new lazar.min_sim = params[:min_sim] if params[:min_sim] - lazar.nr_hits = params[:nr_hits] if params[:nr_hits] + lazar.nr_hits = true if params[:nr_hits] if prediction_feature.feature_type == "classification" @training_classes = training_activities.accept_values(prediction_feature.uri).sort @@ -113,7 +113,7 @@ post '/lazar/?' do if training_features.features[feature] smarts = training_features.features[feature][OT.smarts] #lazar.fingerprints[compound] << smarts - if params[:nr_hits] == "true" + if params[:nr_hits] lazar.fingerprints[compound][smarts] = entry[feature].flatten.first else lazar.fingerprints[compound][smarts] = 1 -- cgit v1.2.3 From 86349a7ad23cb051a57949edf07392b1d215558f Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Fri, 22 Jul 2011 09:22:37 +0200 Subject: Fixed switches to listen to "true" only. --- lazar.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'lazar.rb') diff --git a/lazar.rb b/lazar.rb index 7febdeb..5de3790 100644 --- a/lazar.rb +++ b/lazar.rb @@ -60,8 +60,8 @@ post '/lazar/?' do training_activities.features.inspect+")" unless training_activities.features and training_activities.features.include?(prediction_feature.uri) lazar = OpenTox::Model::Lazar.new - lazar.min_sim = params[:min_sim] if params[:min_sim] - lazar.nr_hits = true if params[:nr_hits] + lazar.min_sim = params[:min_sim].to_f if params[:min_sim] + lazar.nr_hits = true if params[:nr_hits] == "true" if prediction_feature.feature_type == "classification" @training_classes = training_activities.accept_values(prediction_feature.uri).sort @@ -156,6 +156,8 @@ post '/lazar/?' do end lazar.transform["class"] = params[:activity_transform] unless params[:activity_transform].nil? lazar.prop_kernel = true if (params[:local_svm_kernel] == "propositionalized" || params[:prediction_algorithm] == "local_mlr_prop") + lazar.conf_stdev = false + lazar.conf_stdev = true if params[:conf_stdev] == "true" # AM: Feed Data using Transformations if prediction_feature.feature_type == "regression" -- cgit v1.2.3