summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrautenberg <rautenberg@in-silico.ch>2016-09-14 14:43:39 +0200
committerrautenberg <rautenberg@in-silico.ch>2016-09-14 14:43:39 +0200
commitdc5d0dbbb8029a163f766bfbd8ea6db8774496e1 (patch)
tree471c11b999ed63b5475d5b0e0a023196da2a42de
parent8e95b8a63c3a5ce8b8cafb64233e77e21d57bbef (diff)
test validation results
-rw-r--r--lib/report.rb11
-rw-r--r--views/model_details.haml117
2 files changed, 126 insertions, 2 deletions
diff --git a/lib/report.rb b/lib/report.rb
index 2cf6b83..628b095 100644
--- a/lib/report.rb
+++ b/lib/report.rb
@@ -27,6 +27,7 @@ get "/report/:id/?" do
model = Model::Lazar.find params[:id]
resource_not_found_error "Model with id: #{params[:id]} not found." unless model
prediction_model = Model::Prediction.find_by :model_id => params[:id]
+ validation_template = File.join(File.dirname(__FILE__),"views/model_details.haml")
if File.directory?("#{File.dirname(__FILE__)}/../../lazar")
lazar_commit = `cd #{File.dirname(__FILE__)}/../../lazar; git rev-parse HEAD`.strip
@@ -141,10 +142,16 @@ get "/report/:id/?" do
report.change_attributes "dependent_var_availability", {:answer => "All"}
# Other information about the training set 6.5
- report.value "other_info", "#{model.source}"
+ report.value "other_info", "#{prediction_model.source}"
# Pre-processing of data before modelling 6.6
- report.value "preprocessing", (model.class == OpennTox::Model::LazarRegression ? "-Log 10 transformation" : "none")
+ report.value "preprocessing", (model.class == OpenTox::Model::LazarRegression ? "-log 10 transformation" : "none")
+
+ if model.crossvalidations
+ crossvalidations = model.crossvalidations
+ out = Haml::Engine.new(File.read(validation_template)).render @report
+ report.value "lmo", CGI.escapeHTML(out)
+ end
# output
response['Content-Type'] = "application/xml"
diff --git a/views/model_details.haml b/views/model_details.haml
new file mode 100644
index 0000000..251fca8
--- /dev/null
+++ b/views/model_details.haml
@@ -0,0 +1,117 @@
+%b Model:
+%br
+Source:
+%a{:href=>model.source, :target=>"external"}
+ = model.source
+%br
+- model.classification? ? type = "Classification" : type = "Regression"
+= "Type:\t"
+= type
+%br
+- training_dataset = OpenTox::Dataset.find model.training_dataset.id
+= "Training compounds:\t"
+= training_dataset.compounds.size
+
+%p
+- if type == "Classification"
+ %b Independent crossvalidations:
+- else
+ %b Independent crossvalidations (-log10 transformed):
+%div.row{:id=>"validations#{model.id}", :style=>"background-color:#f5f5f5;"}
+ - model.crossvalidations.each do |crossvalidation|
+ %span.col-xs-4.col-sm-4.col-md-4.col-lg-4
+ - cv = OpenTox::CrossValidation.find crossvalidation.id
+ = "Num folds:\t"
+ = cv.folds
+ %br
+ = "Num instances:\t"
+ = cv.nr_instances
+ %br
+ = "Num unpredicted"
+ = cv.nr_unpredicted
+ - if model.classification?
+ %br
+ = "Accuracy:\t"
+ = cv.accuracy.round(3) if cv.accuracy
+ %br
+ = "True positive rate:\t"
+ = cv.true_rate["active"].round(3) if cv.true_rate["active"]
+ %br
+ = "True negative rate:\t"
+ = cv.true_rate["inactive"].round(3) if cv.true_rate["inactive"]
+ %br
+ = "Positive predictive value:\t"
+ = cv.predictivity["active"].round(3) if cv.predictivity["active"]
+ %br
+ = "Negative predictive value:\t"
+ = cv.predictivity["inactive"].round(3) if cv.predictivity["inactive"]
+ %p
+ %b Confusion Matrix:
+ %table.table.table-condensed.table-borderless{:style=>"width:20%;"}
+ %tbody
+ %tr
+ %td
+ %td
+ %td
+ %b actual
+ %td
+ %td
+ %tr
+ %td
+ %td
+ %td active
+ %td inactive
+ -#%td total
+ %tr
+ %td
+ %b predicted
+ %td active
+ %td
+ =cv.confusion_matrix[0][0]
+ %td
+ =cv.confusion_matrix[0][1]
+ -#%td
+ =cv.confusion_matrix[0][0]+cv.confusion_matrix[0][1]
+ %tr
+ %td
+ %td inactive
+ %td
+ =cv.confusion_matrix[1][0]
+ %td
+ =cv.confusion_matrix[1][1]
+ -#%td
+ =cv.confusion_matrix[1][0]+cv.confusion_matrix[1][1]
+ -#%tr
+ %td
+ %td total
+ %td
+ =cv.confusion_matrix[0][0]+cv.confusion_matrix[1][0]
+ %td
+ =cv.confusion_matrix[0][1]+cv.confusion_matrix[1][1]
+ %td
+ -#= "Confusion Matrix:\t"
+ -#= cv.confusion_matrix
+ %br
+ /= "Confidence plot:"
+ /%p.plot
+ / %img{:src=>"confp#{cv.id}.svg"}
+ - if model.regression?
+ %br
+ = "Root mean squared error:\t"
+ = cv.rmse.round(3) if cv.rmse
+ %br
+ = "Mean absolute error:\t"
+ = cv.mae.round(3) if cv.mae
+ %br
+ = "R square:\t"
+ = cv.r_squared.round(3) if cv.r_squared
+ %br
+ /= "Confidence plot:"
+ /%p.plot
+ / %img{:src=>"/confp#{cv.id}.svg"}
+ /%br
+ /= "Correlation plot"
+ /%p.plot
+ / %img{:src=>"/corrp#{cv.id}.svg"}
+
+%br \ No newline at end of file