summaryrefslogtreecommitdiff
path: root/lib/validation.rb
diff options
context:
space:
mode:
authorrautenberg <rautenberg@in-silico.ch>2013-06-03 15:25:33 +0200
committerrautenberg <rautenberg@in-silico.ch>2013-06-03 15:25:33 +0200
commit962773d59d94f8d16dae11b6290fdf30aaf09d7b (patch)
treea5ca176a7c4ef3bfc3694400c97dab97b71ca768 /lib/validation.rb
parentef122484598a8979de915344cdeff475cff752c5 (diff)
make yard documentation full yard 0.8.6.1 compatible
Diffstat (limited to 'lib/validation.rb')
-rw-r--r--lib/validation.rb132
1 files changed, 66 insertions, 66 deletions
diff --git a/lib/validation.rb b/lib/validation.rb
index c4f6868..cb73ce6 100644
--- a/lib/validation.rb
+++ b/lib/validation.rb
@@ -2,7 +2,7 @@ require "yaml"
module OldOpenTox
attr_accessor :metadata, :uri
-
+
def initialize(uri=nil)
@metadata = {}
self.uri = uri if uri
@@ -13,17 +13,17 @@ module OldOpenTox
yaml = OpenTox::RestClientWrapper.get(uri,nil,{:subjectid => subjectid, :accept => "application/x-yaml"})
@metadata = YAML.load(yaml)
end
-
+
def delete (subjectid=nil)
OpenTox::RestClientWrapper.delete(@uri.to_s,nil,{:subjectid => subjectid})
end
end
module OpenTox
-
+
class Validation
include OldOpenTox
-
+
# find validation, raises error if not found
# @param [String] uri
# @param [String,optional] subjectid
@@ -33,10 +33,10 @@ module OpenTox
val.load_metadata( subjectid )
val
end
-
+
# returns a filtered list of validation uris
- # @param [Hash,optional] params, validation-params to filter the uris (could be model, training_dataset, ..)
- # @return [Array]
+ # @param params [Hash,optional] validation-params to filter the uris (could be model, training_dataset, ..)
+ # @return [Array]
def self.list( params={} )
filter_string = ""
params.each do |k,v|
@@ -46,7 +46,7 @@ module OpenTox
end
(OpenTox::RestClientWrapper.get($validation[:uri]+filter_string).split("\n"))
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
@@ -58,7 +58,7 @@ module OpenTox
params,{:content_type => "text/uri-list"},waiting_task )
Validation.new(wait_for_task(uri))
end
-
+
# creates a training test validation, waits until it finishes, may take some time
# @param [Hash] params (required:algorithm_uri,training_dataset_uri,prediction_feature,test_dataset_uri,optional:algorithm_params)
# @param [String,optional] subjectid
@@ -70,7 +70,7 @@ module OpenTox
params,{:content_type => "text/uri-list"},waiting_task )
Validation.new(wait_for_task(uri))
end
-
+
# creates a bootstrapping validation, waits until it finishes, may take some time
# @param [Hash] params (required:algorithm_uri,dataset_uri,prediction_feature, optional:algorithm_params,random_seed(1))
# @param [String,optional] subjectid
@@ -82,7 +82,7 @@ module OpenTox
params,{:content_type => "text/uri-list"},waiting_task )
Validation.new(wait_for_task(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
@@ -92,20 +92,20 @@ module OpenTox
@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
+ # @param crossvalidation_uri [String] crossvalidation uri
# @param [String,optional] subjectid
# @return [OpenTox::Validation]
def self.from_cv_statistics( crossvalidation_uri, subjectid=nil )
find( File.join(crossvalidation_uri, 'statistics'),subjectid )
end
-
+
# returns confusion matrix as array, predicted values are in rows
# example:
# [[nil,"active","moderate","inactive"],["active",1,3,99],["moderate",4,2,8],["inactive",3,8,6]]
- # -> 99 inactive compounds have been predicted as active
+ # -> 99 inactive compounds have been predicted as active
def confusion_matrix
raise "no classification statistics, probably a regression valdiation" unless @metadata[RDF::OT.classificationStatistics]
matrix = @metadata[RDF::OT.classificationStatistics][RDF::OT.confusionMatrix][RDF::OT.confusionMatrixCell]
@@ -124,38 +124,38 @@ module OpenTox
end
table
end
-
+
# returns probability-distribution for a given prediction
# it takes all predictions into account that have a confidence value that is >= confidence and that have the same predicted value
# (minimum 12 predictions with the hightest confidence are selected (even if the confidence is lower than the given param)
- #
- # @param [Float] confidence value (between 0 and 1)
- # @param [String] predicted value
- # @param [String,optional] subjectid
+ #
+ # @param confidence [Float] confidence value (between 0 and 1)
+ # @param prediction [String] predicted value
+ # @param subjectid [String,optional]
# @return [Hash] see example
#
# Example 1:
- # validation.probabilities(0.3,"active")
- # -> {:min_confidence=>0.32, :num_predictions=>20, :probs=>{"active"=>0.7, "moderate"=>0.25 "inactive"=>0.05}}
+ # validation.probabilities(0.3,"active")
+ # -> { :min_confidence=>0.32, :num_predictions=>20, :probs=>{"active"=>0.7, "moderate"=>0.25 "inactive"=>0.05 } }
# there have been 20 "active" predictions with confidence >= 0.3, 70 percent of them beeing correct
#
# Example 2:
- # validation.probabilities(0.8,"active")
- # -> {:min_confidence=>0.45, :num_predictions=>12, :probs=>{"active"=>0.9, "moderate"=>0.1 "inactive"=>0}}
+ # validation.probabilities(0.8,"active")
+ # -> { :min_confidence=>0.45, :num_predictions=>12, :probs=>{"active"=>0.9, "moderate"=>0.1 "inactive"=>0 } }
# the given confidence value was to high (i.e. <12 predictions with confidence value >= 0.8)
# the top 12 "active" predictions have a min_confidence of 0.45, 90 percent of them beeing correct
- #
+ #
def probabilities( confidence, prediction, subjectid=nil )
YAML.load(OpenTox::RestClientWrapper.get(@uri+"/probabilities?prediction="+prediction.to_s+"&confidence="+confidence.to_s,nil,
{:subjectid => subjectid, :accept => "application/x-yaml"}))
end
end
-
+
class Crossvalidation
include OldOpenTox
attr_reader :report
-
+
# find crossvalidation, raises error if not found
# @param [String] uri
# @param [String,optional] subjectid
@@ -165,10 +165,10 @@ module OpenTox
cv.load_metadata( subjectid )
cv
end
-
+
# returns a filtered list of crossvalidation uris
- # @param [Hash,optional] params, crossvalidation-params to filter the uris (could be algorithm, dataset, ..)
- # @return [Array]
+ # @param params [Hash,optional] crossvalidation-params to filter the uris (could be algorithm, dataset, ..)
+ # @return [Array]
def self.list( params={} )
filter_string = ""
params.each do |k,v|
@@ -201,29 +201,29 @@ module OpenTox
@report = CrossvalidationReport.create(@uri, subjectid, waiting_task) unless @report
@report.uri
end
-
+
# loads metadata via yaml from crossvalidation object
# fields (like for example the validations) can be acces via validation.metadata[RDF::OT.validation]
def load_metadata( subjectid=nil )
@metadata = YAML.load(OpenTox::RestClientWrapper.get(uri,nil,{:subjectid => subjectid, :accept => "application/x-yaml"}))
end
-
+
# returns a Validation object containing the statistics of the crossavlidation
def statistics( subjectid=nil )
Validation.from_cv_statistics( @uri, subjectid )
end
-
+
# documentation see OpenTox::Validation.probabilities
def probabilities( confidence, prediction, subjectid=nil )
YAML.load(OpenTox::RestClientWrapper.get(@uri+"/statistics/probabilities?prediction="+prediction.to_s+"&confidence="+confidence.to_s,nil,
{:subjectid => subjectid, :accept => "application/x-yaml"}))
end
-
+
end
-
+
class ValidationReport
include OldOpenTox
-
+
# finds ValidationReport via uri, raises error if not found
# @param [String] uri
# @param [String,optional] subjectid
@@ -234,23 +234,23 @@ module OpenTox
rep.load_metadata( subjectid )
rep
end
-
+
# finds ValidationReport for a particular validation
- # @param [String] crossvalidation uri
- # @param [String,optional] subjectid
+ # @param validation_uri [String] crossvalidation uri
+ # @param subjectid [String,optional]
# @return [OpenTox::ValidationReport] nil if no report found
def self.find_for_validation( validation_uri, subjectid=nil )
uris = RestClientWrapper.get(File.join($validation[:uri],
"/report/validation?validation="+validation_uri),nil,{:subjectid => subjectid}).chomp.split("\n")
uris.size==0 ? nil : ValidationReport.new(uris[-1])
end
-
+
# creates a validation report via validation
- # @param [String] validation uri
- # @param [Hash] params addiditonal possible
+ # @param validation_uri [String] validation uri
+ # @param params [Hash] params addiditonal possible
# (min_confidence, params={}, min_num_predictions, max_num_predictions)
- # @param [String,optional] subjectid
- # @param [OpenTox::Task,optional] waiting_task (can be a OpenTox::Subtask as well), progress is updated accordingly
+ # @param subjectid [String,optional]
+ # @param waiting_task [OpenTox::Task,optional] (can be a OpenTox::Subtask as well), progress is updated accordingly
# @return [OpenTox::ValidationReport]
def self.create( validation_uri, params={}, subjectid=nil, waiting_task=nil )
params = {} if params==nil
@@ -262,12 +262,12 @@ module OpenTox
uri = wait_for_task(uri)
ValidationReport.new(uri)
end
-
+
end
class CrossvalidationReport
include OldOpenTox
-
+
# finds CrossvalidationReport via uri, raises error if not found
# @param [String] uri
# @param [String,optional] subjectid
@@ -278,21 +278,21 @@ module OpenTox
rep.load_metadata( subjectid )
rep
end
-
+
# finds CrossvalidationReport for a particular crossvalidation
- # @param [String] crossvalidation uri
- # @param [String,optional] subjectid
+ # @param crossvalidation_uri [String] crossvalidation uri
+ # @param subjectid [String,optional]
# @return [OpenTox::CrossvalidationReport] nil if no report found
def self.find_for_crossvalidation( crossvalidation_uri, subjectid=nil )
uris = RestClientWrapper.get(File.join($validation[:uri],
"/report/crossvalidation?crossvalidation="+crossvalidation_uri),nil,{:subjectid => subjectid}).chomp.split("\n")
uris.size==0 ? nil : CrossvalidationReport.new(uris[-1])
end
-
+
# creates a crossvalidation report via crossvalidation
- # @param [String] crossvalidation uri
- # @param [String,optional] subjectid
- # @param [OpenTox::Task,optional] waiting_task (can be a OpenTox::Subtask as well), progress is updated accordingly
+ # @param crossvalidation_uri [String] crossvalidation uri
+ # @param subjectid [String,optional]
+ # @param waiting_task [OpenTox::Task,optional] (can be a OpenTox::Subtask as well), progress is updated accordingly
# @return [OpenTox::CrossvalidationReport]
def self.create( crossvalidation_uri, subjectid=nil, waiting_task=nil )
uri = RestClientWrapper.post(File.join($validation[:uri],"/report/crossvalidation"),
@@ -301,11 +301,11 @@ module OpenTox
CrossvalidationReport.new(uri)
end
end
-
-
+
+
class AlgorithmComparisonReport
include OldOpenTox
-
+
# finds AlgorithmComparisonReport via uri, raises error if not found
# @param [String] uri
# @param [String,optional] subjectid
@@ -316,23 +316,23 @@ module OpenTox
rep.load_metadata( subjectid )
rep
end
-
+
# finds AlgorithmComparisonReport for a particular crossvalidation
- # @param [String] crossvalidation uri
- # @param [String,optional] subjectid
+ # @param crossvalidation_uri [String] crossvalidation uri
+ # @param subjectid [String,optional]
# @return [OpenTox::AlgorithmComparisonReport] nil if no report found
def self.find_for_crossvalidation( crossvalidation_uri, subjectid=nil )
uris = RestClientWrapper.get(File.join($validation[:uri],
"/report/algorithm_comparison?crossvalidation="+crossvalidation_uri),nil,{:subjectid => subjectid}).chomp.split("\n")
uris.size==0 ? nil : AlgorithmComparisonReport.new(uris[-1])
end
-
+
# creates a algorithm comparison report via crossvalidation uris
- # @param [Hash] crossvalidation uri_hash, see example
- # @param [Hash] params addiditonal possible
+ # @param crossvalidation_uri_hash [Hash] crossvalidation uri_hash, see example
+ # @param params [Hash] params addiditonal possible
# (ttest_significance, ttest_attributes, min_confidence, min_num_predictions, max_num_predictions)
- # @param [String,optional] subjectid
- # @param [OpenTox::Task,optional] waiting_task (can be a OpenTox::Subtask as well), progress is updated accordingly
+ # @param subjectid [String,optional]
+ # @param waiting_task [OpenTox::Task,optional] (can be a OpenTox::Subtask as well), progress is updated accordingly
# @return [OpenTox::AlgorithmComparisonReport]
# example for hash:
# { :lazar-bbrc => [ http://host/validation/crossvalidation/x1, http://host/validation/crossvalidation/x2 ],
@@ -355,7 +355,7 @@ module OpenTox
uri = wait_for_task(uri)
AlgorithmComparisonReport.new(uri)
end
- end
-
+ end
+
end