summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorhelma@in-silico.ch <helma@in-silico.ch>2018-11-16 22:45:17 +0100
committerhelma@in-silico.ch <helma@in-silico.ch>2018-11-16 22:45:17 +0100
commit1b44e0cd76f2ead93b8b3fa0f970c85ef32a4b14 (patch)
tree554447ba32d3e2355988e86e0676ba00f63698f1 /lib
parentc12d5bb40ab2a0783f755c3238a20448b9a5a42e (diff)
confidence for prediction datasets
Diffstat (limited to 'lib')
-rw-r--r--lib/dataset.rb11
-rw-r--r--lib/feature.rb5
-rw-r--r--lib/model.rb5
3 files changed, 17 insertions, 4 deletions
diff --git a/lib/dataset.rb b/lib/dataset.rb
index 3979105..df17569 100644
--- a/lib/dataset.rb
+++ b/lib/dataset.rb
@@ -70,6 +70,12 @@ module OpenTox
features.select{|f| f.is_a?(Warnings)}
end
+ # Get Confidence feature
+ # @return [OpenTox::Confidence] confidence feature
+ def confidence_feature
+ features.select{|f| f.is_a?(Confidence)}.first
+ end
+
# Get nominal and numeric bioactivity features
# @return [Array<OpenTox::NominalBioActivity,OpenTox::NumericBioActivity>]
def bioactivity_features
@@ -392,8 +398,9 @@ module OpenTox
predictions[s] ||= {}
prediction_feature = prediction_features.first
predictions[s][:value] = values(s,prediction_feature).first
- predictions[s][:warnings] = []
- warnings_features.each { |w| predictions[s][:warnings] += values(s,w) }
+ #predictions[s][:warnings] = []
+ #warnings_features.each { |w| predictions[s][:warnings] += values(s,w) }
+ predictions[s][:confidence] = values(s,confidence_feature).first
if predictions[s][:value] and prediction_feature.is_a? NominalLazarPrediction
prediction_feature.accept_values.each do |v|
f = LazarPredictionProbability.find_by(:name => v, :model_id => prediction_feature.model_id, :training_feature_id => prediction_feature.training_feature_id)
diff --git a/lib/feature.rb b/lib/feature.rb
index b474398..72c26d7 100644
--- a/lib/feature.rb
+++ b/lib/feature.rb
@@ -15,6 +15,11 @@ module OpenTox
field :dataset_id, type: BSON::ObjectId
end
+ # Confidence
+ class Confidence < Feature
+ field :dataset_id, type: BSON::ObjectId
+ end
+
# Categorical variables
class NominalFeature < Feature
field :accept_values, type: Array
diff --git a/lib/model.rb b/lib/model.rb
index 08ca07e..cbfefe3 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -338,7 +338,8 @@ module OpenTox
return predictions
elsif object.is_a? Dataset
d = object.copy
- warning_feature = Warnings.find_or_create_by(:dataset_id => d.id)
+ #warning_feature = Warnings.find_or_create_by(:dataset_id => d.id)
+ confidence_feature = Confidence.find_or_create_by(:dataset_id => d.id)
if prediction_feature.is_a? NominalBioActivity
f = NominalLazarPrediction.find_or_create_by(:name => prediction_feature.name, :accept_values => prediction_feature.accept_values, :model_id => self.id, :training_feature_id => prediction_feature.id)
probability_features = {}
@@ -356,7 +357,7 @@ module OpenTox
# add predictions to dataset
predictions.each do |substance_id,p|
substance_id = BSON::ObjectId.from_string(substance_id)
- d.add substance_id,warning_feature,p[:warnings].join(" ") unless p[:warnings].empty?
+ d.add substance_id,confidence_feature,p[:confidence]
unless p[:value].nil?
d.add substance_id,f,p[:value]
p[:probabilities].each {|name,p| d.add substance_id,probability_features[name],p} if p[:probabilities]