Class: OpenTox::Validation

Inherits:
Object
  • Object
show all
Includes:
OpenTox
Defined in:
lib/validation.rb

Instance Attribute Summary

Attributes included from OpenTox

#metadata, #uri

Class Method Summary collapse

Instance Method Summary collapse

Methods included from OpenTox

#add_metadata, all, #delete, #initialize, login, text_to_html, #to_rdfxml

Class Method Details

.find(uri, subjectid = nil) ⇒ OpenTox::Validation

find validation, raises error if not found

Parameters:

  • uri (String)
  • subjectid (String, optional) (defaults to: nil)

Returns:



9
10
11
12
13
# File 'lib/validation.rb', line 9

def self.find( uri, subjectid=nil )
  val = Validation.new(uri)
  val.( subjectid )
  val
end

.from_cv_statistics(crossvalidation_uri, subjectid = nil) ⇒ OpenTox::Validation

creates a validation object from crossvaldiation statistics, raise error if not found (as crossvaldiation statistics are returned as an average valdidation over all folds)

Parameters:

  • crossvalidation (String)

    uri

  • subjectid (String, optional) (defaults to: nil)

Returns:



20
21
22
# File 'lib/validation.rb', line 20

def self.from_cv_statistics( crossvalidation_uri, subjectid=nil )
  find( File.join(crossvalidation_uri, 'statistics'),subjectid )
end

Instance Method Details

#load_metadata(subjectid = nil) ⇒ Object

loads metadata via yaml from validation object fields (like for example the validated model) can be acces via validation.metadata



26
27
28
# File 'lib/validation.rb', line 26

def ( subjectid=nil )
  @metadata = YAML.load(OpenTox::RestClientWrapper.get(uri,{:subjectid => subjectid, :accept => "application/x-yaml"}))
end

#summaryObject

PENDING: creates summary as used for ToxCreate



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/validation.rb', line 31

def summary
  if @metadata[OT.classificationStatistics]
    res = {
      :nr_predictions => @metadata[OT.numInstances] - @metadata[OT.numUnpredicted],
      :correct_predictions => @metadata[OT.classificationStatistics][OT.percentCorrect],
      :weighted_area_under_roc => @metadata[OT.classificationStatistics][OT.weightedAreaUnderRoc],
    }
    @metadata[OT.classificationStatistics][OT.classValueStatistics].each do |s|
      if s[OT.classValue].to_s=="true"
        res[:true_positives] = s[OT.numTruePositives]
        res[:false_positives] = s[OT.numFalsePositives]
        res[:true_negatives] = s[OT.numTrueNegatives]
        res[:false_negatives] = s[OT.numFalseNegatives]
        res[:sensitivity] = s[OT.truePositiveRate]
        res[:specificity] = s[OT.falsePositiveRate]
        break
      end
    end
    res
  elsif @metadata[OT.regressionStatistics]
    {
      :nr_predictions => @metadata[OT.numInstances] - @metadata[OT.numUnpredicted],
      :r_square => @metadata[OT.regressionStatistics][OT.rSquare],
      :root_mean_squared_error => @metadata[OT.regressionStatistics][OT.rootMeanSquaredError],
      :mean_absolute_error => @metadata[OT.regressionStatistics][OT.meanAbsoluteError],
    }
  end
end