diff options
author | Christoph Helma <helma@in-silico.ch> | 2010-09-13 18:23:45 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2010-09-13 18:23:45 +0200 |
commit | d214692e1828471084b00af4115a06196c6578f7 (patch) | |
tree | 516095a852cd322635af2e74b951b3bc6d312cb9 /model.rb | |
parent | 5c5d66c2a9487687ba9032da04031ad59ab1de46 (diff) |
RDF/XML download disabled, QMRF report generation enabled
Diffstat (limited to 'model.rb')
-rw-r--r-- | model.rb | 117 |
1 files changed, 46 insertions, 71 deletions
@@ -1,15 +1,25 @@ class ToxCreateModel include DataMapper::Resource + property :id, Serial property :name, String, :length => 255 - property :uri, String, :length => 255 + property :warnings, Text, :length => 2**32-1 + property :type, String + property :created_at, DateTime + property :task_uri, String, :length => 255 + property :uri, String, :length => 255 + property :validation_task_uri, String, :length => 255 property :validation_uri, String, :length => 255 + property :validation_report_task_uri, String, :length => 255 property :validation_report_uri, String, :length => 255 - property :warnings, Text, :length => 2**32-1 + + property :validation_qmrf_task_uri, String, :length => 255 + property :validation_qmrf_uri, String, :length => 255 + property :nr_compounds, Integer property :nr_predictions, Integer property :true_positives, Integer @@ -23,8 +33,6 @@ class ToxCreateModel property :r_square, Float property :root_mean_squared_error, Float property :mean_absolute_error, Float - property :type, String - property :created_at, DateTime def status #begin @@ -50,6 +58,14 @@ class ToxCreateModel end end + def validation_qmrf_status + begin + RestClient.get(File.join(@validation_qmrf_task_uri, 'hasStatus')).body + rescue + "Service offline" + end + end + def algorithm begin RestClient.get(File.join(@uri, 'algorithm')).body @@ -74,64 +90,6 @@ class ToxCreateModel end end -=begin - def classification_validation - begin - uri = File.join(@validation_uri, 'statistics') - yaml = RestClient.get(uri).body - v = YAML.load(yaml) - tp=0; tn=0; fp=0; fn=0; n=0 - v[:classification_statistics][:confusion_matrix][:confusion_matrix_cell].each do |cell| - if cell[:confusion_matrix_predicted] == "true" and cell[:confusion_matrix_actual] == "true" - tp = cell[:confusion_matrix_value] - n += tp - elsif cell[:confusion_matrix_predicted] == "false" and cell[:confusion_matrix_actual] == "false" - tn = cell[:confusion_matrix_value] - n += tn - elsif cell[:confusion_matrix_predicted] == "false" and cell[:confusion_matrix_actual] == "true" - fn = cell[:confusion_matrix_value] - n += fn - elsif cell[:confusion_matrix_predicted] == "true" and cell[:confusion_matrix_actual] == "false" - fp = cell[:confusion_matrix_value] - n += fp - end - end - @nr_predictions = n - @true_positives = tp - @false_positives = fp - @true_negatives = tn - @false_negatives = fn - @correct_predictions = 100*(tp+tn).to_f/n - @weighted_area_under_roc = v[:classification_statistics][:weighted_area_under_roc].to_f - @sensitivity = tp.to_f/(tp+fn) - @specificity = tn.to_f/(tn+fp) - save - #:correct_predictions => sprintf("%.2f", 100*(tp+tn).to_f/n), - #:weighted_area_under_roc => sprintf("%.3f", v[:classification_statistics][:weighted_area_under_roc].to_f), - #:sensitivity => sprintf("%.3f", tp.to_f/(tp+fn)), - #:specificity => sprintf("%.3f", tn.to_f/(tn+fp)) - #} - rescue - "Service offline" - end - end - - def regression_validation - begin - uri = File.join(@validation_uri, 'statistics') - yaml = RestClient.get(uri).body - v = YAML.load(yaml) - @nr_predictions = v[:num_instances] - v[:num_unpredicted] - @r_square = v[:regression_statistics][:r_square] - @root_mean_squared_error = v[:regression_statistics][:root_mean_squared_error] - @mean_absolute_error = v[:regression_statistics][:mean_absolute_error] - save - rescue - "Service offline" - end - end -=end - def process if @uri.nil? and status == "Completed" @@ -148,13 +106,20 @@ class ToxCreateModel elsif @validation_uri.nil? and validation_status == "Completed" begin + update :validation_uri => RestClient.get(File.join(@validation_task_uri, 'resultURI')).body LOGGER.debug "Validation URI: #{@validation_uri}" + update :validation_report_task_uri => RestClient.post(File.join(@@config[:services]["opentox-validation"],"/report/crossvalidation"), :validation_uris => @validation_uri).body LOGGER.debug "Validation Report Task URI: #{@validation_report_task_uri}" + + update :validation_qmrf_task_uri => RestClient.post(File.join(@@config[:services]["opentox-validation"],"/reach_report/qmrf"), :model_uri => @uri).body + LOGGER.debug "QMRF Report Task URI: #{@validation_qmrf_task_uri}" + uri = File.join(@validation_uri, 'statistics') yaml = RestClient.get(uri).body v = YAML.load(yaml) + case type when "classification" tp=0; tn=0; fp=0; fn=0; n=0 @@ -192,15 +157,25 @@ class ToxCreateModel LOGGER.warn "Cannot create Validation Report Task #{@validation_report_task_uri} for Validation URI #{@validation_uri} from Task #{@validation_task_uri}" end - elsif @validation_report_uri.nil? and validation_report_status == "Completed" - begin - LOGGER.debug File.join(@validation_report_task_uri, 'resultURI') - LOGGER.debug "Report URI: "+RestClient.get(File.join(@validation_report_task_uri, 'resultURI')).body - update :validation_report_uri => RestClient.get(File.join(@validation_report_task_uri, 'resultURI')).body - rescue - LOGGER.warn "Cannot create Validation Report for Task URI #{@validation_report_task_uri} " - end - end + else + + if @validation_report_uri.nil? and validation_report_status == "Completed" + begin + update :validation_report_uri => RestClient.get(File.join(@validation_report_task_uri, 'resultURI')).body + rescue + LOGGER.warn "Cannot create Validation Report for Task URI #{@validation_report_task_uri} " + end + end + + if @validation_qmrf_uri.nil? and validation_qmrf_status == "Completed" + begin + update :validation_qmrf_uri => RestClient.get(File.join(@validation_qmrf_task_uri, 'resultURI')).body + rescue + LOGGER.warn "Cannot create QMRF Report for Task URI #{@validation_qmrf_task_uri} " + end + end + + end end |