summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2011-04-05 19:07:54 +0200
committerChristoph Helma <helma@in-silico.ch>2011-04-05 19:07:54 +0200
commit459458aaacda3b5a0e053ff5cd4a4a97e89186e4 (patch)
tree1427fbf48a1f5d095ebe07ff50f40edf2b966a3f
parent3bb6365594d168281019bdec303e70c123414ce4 (diff)
regression lazar and feature_type fixed
-rw-r--r--fminer.rb12
-rw-r--r--lazar.rb8
2 files changed, 12 insertions, 8 deletions
diff --git a/fminer.rb b/fminer.rb
index 92326b6..ff192ca 100644
--- a/fminer.rb
+++ b/fminer.rb
@@ -71,7 +71,6 @@ post '/fminer/bbrc/?' do
halt 404, "Please submit a dataset_uri." unless params[:dataset_uri] and !params[:dataset_uri].nil?
halt 404, "Please submit a prediction_feature." unless params[:prediction_feature] and !params[:prediction_feature].nil?
prediction_feature = OpenTox::Feature.find params[:prediction_feature]
-
training_dataset = OpenTox::Dataset.find "#{params[:dataset_uri]}", @subjectid
halt 404, "No feature #{params[:prediction_feature]} in dataset #{params[:dataset_uri]}" unless training_dataset.features and training_dataset.features.include?(params[:prediction_feature])
@@ -243,7 +242,7 @@ post '/fminer/last/?' do
halt 404, "Please submit a dataset_uri." unless params[:dataset_uri] and !params[:dataset_uri].nil?
halt 404, "Please submit a prediction_feature." unless params[:prediction_feature] and !params[:prediction_feature].nil?
- prediction_feature = params[:prediction_feature]
+ prediction_feature = OpenTox::Feature.find params[:prediction_feature]
training_dataset = OpenTox::Dataset.new "#{params[:dataset_uri]}", @subjectid
training_dataset.load_all(@subjectid)
halt 404, "No feature #{params[:prediction_feature]} in dataset #{params[:dataset_uri]}" unless training_dataset.features and training_dataset.features.include?(params[:prediction_feature])
@@ -260,8 +259,13 @@ post '/fminer/last/?' do
@@last.SetType(1) if params[:feature_type] == "paths"
@@last.SetMaxHops(params[:hops]) if params[:hops]
@@last.SetConsoleOut(false)
+ if prediction_feature.feature_type == "regression"
+ @@bbrc.SetRegression(true)
+ else
+ @training_classes = training_dataset.feature_classes(prediction_feature.uri)
+ end
- feature_dataset = OpenTox::Dataset.new
+ feature_dataset = OpenTox::Dataset.new(nil, @subjectid)
feature_dataset.add_metadata({
DC.title => "LAST representatives for " + training_dataset.metadata[DC.title].to_s,
DC.creator => url_for('/fminer/last',:full),
@@ -292,7 +296,7 @@ post '/fminer/last/?' do
next
end
entry.each do |feature,values|
- if feature == prediction_feature
+ if feature == prediction_feature.uri
values.each do |value|
if value.nil?
LOGGER.warn "No #{feature} activiity for #{compound.to_s}."
diff --git a/lazar.rb b/lazar.rb
index af2740b..c2deb26 100644
--- a/lazar.rb
+++ b/lazar.rb
@@ -39,7 +39,7 @@ post '/lazar/?' do
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
+ 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]
@@ -77,12 +77,12 @@ post '/lazar/?' do
halt 404, "Dataset #{feature_dataset_uri} not found." if training_features.nil?
# sorted features for index lookups
- lazar.features = training_features.features.sort if prediction_feature.feature_type == "regression"
+ 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]
entry.keys.each do |feature|
- if feature_generation_uri.match(/fminer/)
+ if lazar.feature_calculation_algorithm == "Substructure.match"
if training_features.features[feature]
smarts = training_features.features[feature][OT.smarts]
lazar.fingerprints[compound] << smarts
@@ -109,13 +109,13 @@ post '/lazar/?' do
else
LOGGER.warn "More than one entry (#{entry[feature].inspect}) for compound #{compound}, feature #{feature}"
end
- lazar.prediction_algorithm = "Neighbors.local_svm_regression"
end
end
end
end
@training_classes = training_activities.feature_classes(prediction_feature.uri) if prediction_feature.feature_type == "classification"
+ lazar.prediction_algorithm = "Neighbors.local_svm_regression" if prediction_feature.feature_type == "regression"
training_activities.data_entries.each do |compound,entry|
lazar.activities[compound] = [] unless lazar.activities[compound]