From dc5d0dbbb8029a163f766bfbd8ea6db8774496e1 Mon Sep 17 00:00:00 2001 From: rautenberg Date: Wed, 14 Sep 2016 14:43:39 +0200 Subject: test validation results --- lib/report.rb | 11 ++++- views/model_details.haml | 117 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 views/model_details.haml 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 -- cgit v1.2.3