From 1b44e0cd76f2ead93b8b3fa0f970c85ef32a4b14 Mon Sep 17 00:00:00 2001 From: "helma@in-silico.ch" Date: Fri, 16 Nov 2018 22:45:17 +0100 Subject: confidence for prediction datasets --- lib/dataset.rb | 11 +++++++++-- lib/feature.rb | 5 +++++ lib/model.rb | 5 +++-- 3 files changed, 17 insertions(+), 4 deletions(-) (limited to 'lib') 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] 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] -- cgit v1.2.3