summaryrefslogtreecommitdiff
path: root/lib/validation.rb
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-05-06 17:01:27 +0200
committermguetlein <martin.guetlein@gmail.com>2011-05-06 17:01:27 +0200
commit0edca0616624ab9711b3791bbb7697a676e0b141 (patch)
treebe40db3ac6fbedd02789f7cb0b0e4683fe15fb19 /lib/validation.rb
parent435540f4be8787e0c34a64a2d2d7ed3118be9de9 (diff)
fix specificity (was 1-specificity) in cv-summary, (added training-test-split to validation object)
Diffstat (limited to 'lib/validation.rb')
-rw-r--r--lib/validation.rb46
1 files changed, 45 insertions, 1 deletions
diff --git a/lib/validation.rb b/lib/validation.rb
index a47a554..8fa95bb 100644
--- a/lib/validation.rb
+++ b/lib/validation.rb
@@ -12,6 +12,29 @@ module OpenTox
val
end
+ # creates a training test split validation, waits until it finishes, may take some time
+ # @param [Hash] params (required:algorithm_uri,dataset_uri,prediction_feature, optional:algorithm_params,split_ratio(0.67),random_seed(1))
+ # @param [String,optional] subjectid
+ # @param [OpenTox::Task,optional] waiting_task (can be a OpenTox::Subtask as well), progress is updated accordingly
+ # @return [OpenTox::Validation]
+ def self.create_training_test_split( params, subjectid=nil, waiting_task=nil )
+ params[:subjectid] = subjectid if subjectid
+ uri = OpenTox::RestClientWrapper.post( File.join(CONFIG[:services]["opentox-validation"],"training_test_split"),
+ params,{:content_type => "text/uri-list"},waiting_task )
+ Validation.new(uri)
+ end
+
+ # looks for report for this validation, creates a report if no report is found
+ # @param [String,optional] subjectid
+ # @param [OpenTox::Task,optional] waiting_task (can be a OpenTox::Subtask as well), progress is updated accordingly
+ # @return [String] report uri
+ def find_or_create_report( subjectid=nil, waiting_task=nil )
+ @report = ValidationReport.find_for_validation(@uri, subjectid) unless @report
+ @report = ValidationReport.create(@uri, subjectid, waiting_task) unless @report
+ @report.uri
+ end
+
+
# creates a validation object from crossvaldiation statistics, raise error if not found
# (as crossvaldiation statistics are returned as an average valdidation over all folds)
# @param [String] crossvalidation uri
@@ -42,7 +65,7 @@ module OpenTox
res[:true_negatives] = s[OT.numTrueNegatives]
res[:false_negatives] = s[OT.numFalseNegatives]
res[:sensitivity] = s[OT.truePositiveRate]
- res[:specificity] = s[OT.falsePositiveRate]
+ res[:specificity] = s[OT.trueNegativeRate]
break
end
end
@@ -110,6 +133,16 @@ module OpenTox
class ValidationReport
include OpenTox
+ # finds ValidationReport via uri, raises error if not found
+ # @param [String] uri
+ # @param [String,optional] subjectid
+ # @return [OpenTox::ValidationReport]
+ def self.find( uri, subjectid=nil )
+ # PENDING load report data?
+ OpenTox::RestClientWrapper.get(uri,{:subjectid => subjectid})
+ ValidationReport.new(uri)
+ end
+
# finds ValidationReport for a particular validation
# @param [String] crossvalidation uri
# @param [String,optional] subjectid
@@ -120,6 +153,17 @@ module OpenTox
uris.size==0 ? nil : ValidationReport.new(uris[-1])
end
+ # creates a validation report via validation
+ # @param [String] validation uri
+ # @param [String,optional] subjectid
+ # @param [OpenTox::Task,optional] waiting_task (can be a OpenTox::Subtask as well), progress is updated accordingly
+ # @return [OpenTox::ValidationReport]
+ def self.create( validation_uri, subjectid=nil, waiting_task=nil )
+ uri = RestClientWrapper.post(File.join(CONFIG[:services]["opentox-validation"],"/report/validation"),
+ { :validation_uris => validation_uri, :subjectid => subjectid }, {}, waiting_task )
+ ValidationReport.new(uri)
+ end
+
end
class CrossvalidationReport