summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/dataset.rb9
-rw-r--r--lib/model.rb9
-rw-r--r--lib/opentox.rb4
-rw-r--r--lib/overwrite.rb3
-rw-r--r--lib/validation.rb34
5 files changed, 30 insertions, 29 deletions
diff --git a/lib/dataset.rb b/lib/dataset.rb
index 8d1aed0..402d2a1 100644
--- a/lib/dataset.rb
+++ b/lib/dataset.rb
@@ -76,14 +76,8 @@ module OpenTox
# @param [OpenTox::Feature] Feature
# @return [Array] Data entry values
def values(compound, feature)
- #puts compounds.inspect
- #puts "=="
- #puts compound.inspect
rows = (0 ... compounds.length).select { |r| compounds[r].uri == compound.uri }
- #puts rows.inspect
col = features.collect{|f| f.uri}.index feature.uri
- #puts col
- #puts data_entries(true).inspect
rows.collect{|row| data_entries[row][col]}
end
@@ -340,8 +334,9 @@ module OpenTox
end
def data_entry_value(compound_index, feature_uri)
+ data_entries(true) if @data_entries.empty?
col = @features.collect{|f| f.uri}.index feature_uri
- @data_entries[compound_index][col]
+ @data_entries[compound_index] ? @data_entries[compound_index][col] : nil
end
end
diff --git a/lib/model.rb b/lib/model.rb
index 144c8c3..a354cfa 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -13,9 +13,8 @@ module OpenTox
def feature_type # CH: subjectid is a object variable, no need to pass it as a parameter
unless @feature_type
- get unless metadata[OT.dependentVariables.to_s]
- bad_request_error "Cannot determine feature type, dependent variable missing in model #{@uri}" unless metadata[OT.dependentVariables.to_s]
- @feature_type = OpenTox::Feature.new( metadata[OT.dependentVariables.to_s][0], @subjectid ).feature_type
+ bad_request_error "Cannot determine feature type, dependent variable missing in model #{@uri}" unless metadata[RDF::OT.dependentVariables]
+ @feature_type = OpenTox::Feature.new( metadata[RDF::OT.dependentVariables][0], @subjectid ).feature_type
end
@feature_type
end
@@ -32,8 +31,8 @@ module OpenTox
private
def load_predicted_variables
- metadata[OT.predictedVariables.to_s].each do |f|
- feat = OpenTox::Feature.find( f, @subjectid )
+ metadata[RDF::OT.predictedVariables].each do |f|
+ feat = OpenTox::Feature.new( f, @subjectid )
if feat.title =~ /confidence/
@predicted_confidence = f
else
diff --git a/lib/opentox.rb b/lib/opentox.rb
index 1251f33..db7ba5c 100644
--- a/lib/opentox.rb
+++ b/lib/opentox.rb
@@ -25,8 +25,8 @@ module OpenTox
# Object metadata (lazy loading)
# @return [Hash] Object metadata
def metadata force_update=false
- if (@metadata.empty? or force_update) and URI.accessible? @uri
- get if @rdf.empty? or force_update
+ if (@metadata.nil? or @metadata.empty? or force_update) and URI.accessible? @uri
+ get if @rdf.nil? or @rdf.empty? or force_update
# return values as plain strings instead of RDF objects
@metadata = @rdf.to_hash[RDF::URI.new(@uri)].inject({}) { |h, (predicate, values)| h[predicate] = values.collect{|v| v.to_s}; h }
end
diff --git a/lib/overwrite.rb b/lib/overwrite.rb
index d27434b..c2c06dd 100644
--- a/lib/overwrite.rb
+++ b/lib/overwrite.rb
@@ -153,7 +153,8 @@ module Kernel
report ? error_message = report[RDF::OT.message] : error_message = $!.message
Object.send(error_method,error_message,t.uri)
rescue
- internal_server_error "#{$!.message}\n#{$!.backtrace}", t.uri
+ internal_server_error "#{$!.message}", t.uri
+ #internal_server_error "#{$!.message}\n#{$!.backtrace}", t.uri
end
end
uri = t.resultURI
diff --git a/lib/validation.rb b/lib/validation.rb
index 5c91f7c..fa43ba0 100644
--- a/lib/validation.rb
+++ b/lib/validation.rb
@@ -58,7 +58,7 @@ module OpenTox
params[:subjectid] = subjectid if subjectid
uri = OpenTox::RestClientWrapper.post( File.join($validation[:uri],"training_test_split"),
params,{:content_type => "text/uri-list"},waiting_task )
- Validation.new(OpenTox.wait_for_task(uri))
+ Validation.new(wait_for_task(uri))
end
# creates a training test validation, waits until it finishes, may take some time
@@ -70,7 +70,7 @@ module OpenTox
params[:subjectid] = subjectid if subjectid
uri = OpenTox::RestClientWrapper.post( File.join($validation[:uri],"training_test_validation"),
params,{:content_type => "text/uri-list"},waiting_task )
- Validation.new(OpenTox.wait_for_task(uri))
+ Validation.new(wait_for_task(uri))
end
# creates a bootstrapping validation, waits until it finishes, may take some time
@@ -82,7 +82,7 @@ module OpenTox
params[:subjectid] = subjectid if subjectid
uri = OpenTox::RestClientWrapper.post( File.join($validation[:uri],"bootstrapping"),
params,{:content_type => "text/uri-list"},waiting_task )
- Validation.new(OpenTox.wait_for_task(uri))
+ Validation.new(wait_for_task(uri))
end
# looks for report for this validation, creates a report if no report is found
@@ -109,16 +109,16 @@ module OpenTox
# [[nil,"active","moderate","inactive"],["active",1,3,99],["moderate",4,2,8],["inactive",3,8,6]]
# -> 99 inactive compounds have been predicted as active
def confusion_matrix
- raise "no classification statistics, probably a regression valdiation" unless @metadata[OT.classificationStatistics]
- matrix = @metadata[OT.classificationStatistics][OT.confusionMatrix][OT.confusionMatrixCell]
- values = matrix.collect{|cell| cell[OT.confusionMatrixPredicted]}.uniq
+ raise "no classification statistics, probably a regression valdiation" unless @metadata[RDF::OT.classificationStatistics]
+ matrix = @metadata[RDF::OT.classificationStatistics][RDF::OT.confusionMatrix][RDF::OT.confusionMatrixCell]
+ values = matrix.collect{|cell| cell[RDF::OT.confusionMatrixPredicted]}.uniq
table = [[nil]+values]
values.each do |c|
table << [c]
values.each do |r|
matrix.each do |cell|
- if cell[OT.confusionMatrixPredicted]==c and cell[OT.confusionMatrixActual]==r
- table[-1] << cell[OT.confusionMatrixValue].to_f
+ if cell[RDF::OT.confusionMatrixPredicted]==c and cell[RDF::OT.confusionMatrixActual]==r
+ table[-1] << cell[RDF::OT.confusionMatrixValue].to_f
break
end
end
@@ -190,7 +190,7 @@ module OpenTox
params[:subjectid] = subjectid if subjectid
uri = OpenTox::RestClientWrapper.post( File.join($validation[:uri],"crossvalidation"),
params,{:content_type => "text/uri-list"},waiting_task )
- Crossvalidation.new(OpenTox.wait_for_task(uri))
+ Crossvalidation.new(wait_for_task(uri))
end
# looks for report for this crossvalidation, creates a report if no report is found
@@ -204,7 +204,7 @@ module OpenTox
end
# loads metadata via yaml from crossvalidation object
- # fields (like for example the validations) can be acces via validation.metadata[OT.validation]
+ # 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
@@ -255,12 +255,14 @@ module OpenTox
# @return [OpenTox::ValidationReport]
def self.create( validation_uri, params={}, subjectid=nil, waiting_task=nil )
params = {} if params==nil
- raise OpenTox::BadRequestError.new "params is no hash" unless params.is_a?(Hash)
+ bad_request_error "params is no hash" unless params.is_a?(Hash)
params[:validation_uris] = validation_uri
params[:subjectid] = subjectid
uri = RestClientWrapper.post(File.join($validation[:uri],"/report/validation"),
params, {}, waiting_task )
- ValidationReport.new(OpenTox.wait_for_task(uri))
+ puts uri
+ uri = wait_for_task(uri)
+ ValidationReport.new(uri)
end
end
@@ -297,7 +299,7 @@ module OpenTox
def self.create( crossvalidation_uri, subjectid=nil, waiting_task=nil )
uri = RestClientWrapper.post(File.join($validation[:uri],"/report/crossvalidation"),
{ :validation_uris => crossvalidation_uri, :subjectid => subjectid }, {}, waiting_task )
- CrossvalidationReport.new(OpenTox.wait_for_task(uri))
+ CrossvalidationReport.new(wait_for_task(uri))
end
end
@@ -352,7 +354,11 @@ module OpenTox
params[:subjectid] = subjectid
uri = RestClientWrapper.post(File.join($validation[:uri],"/report/algorithm_comparison"),
params, {}, waiting_task )
- AlgorithmComparisonReport.new(OpenTox.wait_for_task(uri))
+ puts uri
+
+ uri = wait_for_task(uri)
+ #AlgorithmComparisonReport.new(wait_for_task(uri))
+ AlgorithmComparisonReport.new(uri)
end
end