summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2010-05-12 16:33:25 +0200
committermguetlein <martin.guetlein@gmail.com>2010-05-12 16:33:25 +0200
commit71b103483933089410c4a172fd1f014faa681c48 (patch)
treeb71f36e9e1a9797ce75fdaa9b9f30c0ac3664d79
parent2679db624cdb69cb3c3d8b659d9513899c3423a4 (diff)
fix validation to rdf, add nightly
-rw-r--r--lib/rdf_provider.rb9
-rw-r--r--nightly/nightly.rb66
-rw-r--r--report/prediction_util.rb2
-rw-r--r--validation/validation_format.rb8
-rw-r--r--validation/validation_test.rb2
5 files changed, 62 insertions, 25 deletions
diff --git a/lib/rdf_provider.rb b/lib/rdf_provider.rb
index d630e7a..a0a09cf 100644
--- a/lib/rdf_provider.rb
+++ b/lib/rdf_provider.rb
@@ -59,7 +59,7 @@ module Lib
def add_content( rdf_provider )
@rdf_provider = rdf_provider
- recursiv_add_content( @rdf_provider.get_content_as_hash, @model.subject(RDF['type'],rdf_provider.rdf_title) )
+ recursiv_add_content( @rdf_provider.get_content_as_hash, @owl.root_node )
end
def rdf
@@ -74,7 +74,10 @@ module Lib
def recursiv_add_content( output, node )
output.each do |k,v|
- raise "null value: "+k.to_s if v==nil
+ if v==nil
+ LOGGER.warn "skipping nil value: "+k.to_s
+ next
+ end
if v.is_a?(Hash)
new_node = add_class( k, node )
recursiv_add_content( v, new_node )
@@ -113,7 +116,7 @@ module Lib
@model.delete node, @rdf_provider.literal_name(property), l
rescue
end
- @model.add node, @rdf_provider.literal_name(property), value.to_s
+ @model.add node, @rdf_provider.literal_name(property), Redland::Literal.create(value)
end
def add_object_property(property, value, node )
diff --git a/nightly/nightly.rb b/nightly/nightly.rb
index 716dad4..2be2a5b 100644
--- a/nightly/nightly.rb
+++ b/nightly/nightly.rb
@@ -23,6 +23,7 @@ class Nightly
HamsterCrossvalidationBenchmark.new,
MiniRegressionBenchmark.new,
CacoModelsRegressionBenchmark.new,
+ CacoAlgsRegressionBenchmark.new,
#FatheadRegressionBenchmark.new,
]
@@ -141,6 +142,7 @@ class Nightly
class ValidationBenchmark < AbstractBenchmark
def info_table
+ raise "no comparables" unless @comparables
t = []
t << ["param", "uri"]
params.each do |k,v|
@@ -286,7 +288,7 @@ class Nightly
end
def validate(index)
- Util.validate_model(@test_data, @test_class_data, @models[index]).to_s
+ Util.validate_model(@test_data, @test_class_data, @models[index])
end
def build_report(index)
@@ -324,7 +326,7 @@ class Nightly
def validate(index)
Util.validate_alg(@train_data, @test_data, @test_class_data,
- @algs[index], @pred_feature, @alg_params[index]).to_s
+ @algs[index], @pred_feature, @alg_params[index])
end
def build_report(index)
@@ -361,7 +363,7 @@ class Nightly
def validate(index)
Util.cross_validate_alg(@data, @algs[index], @pred_feature,
- @num_folds, @random_seed, @stratified, @alg_params[index]).to_s
+ @num_folds, @random_seed, @stratified, @alg_params[index])
end
def build_report(index)
@@ -398,12 +400,16 @@ class Nightly
@algs = [
File.join(@@config[:services]["opentox-majority"],["/class/algorithm"]),
File.join(@@lazar_server,"lazar"),
- #"http://188.40.32.88/algorithm/lazar",
+ "http://188.40.32.88/algorithm/lazar",
+ #File.join(@@config[:services]["opentox-majority"],["/class/algorithm"]),
+ #File.join(@@config[:services]["opentox-majority"],["/class/algorithm"]),
]
@alg_params = [
nil,
"feature_generation_uri="+File.join(@@lazar_server,"fminer"),
- "feature_generation_uri=http://188.40.32.88/algorithm/fminer",
+ #"feature_generation_uri=http://188.40.32.88/algorithm/fminer",
+ nil,
+ nil
]
@pred_feature = "http://localhost/toxmodel/feature#Hamster%20Carcinogenicity%20(DSSTOX/CPDB)"
@@ -440,13 +446,13 @@ class Nightly
"feature_generation_uri="+File.join(@@lazar_server,"fminer"),
"feature_generation_uri=http://188.40.32.88/algorithm/fminer",
]
- @pred_feature = "http://localhost/toxmodel/feature#Hamster%20Carcinogenicity%20(DSSTOX/CPDB)"
-
+
LOGGER.debug "prepare hamster datasets"
- #@test_class_data = Util.upload_dataset(@@dataset_service, @@file, @@file_type).chomp("\n")
- @pred_feature = "http://188.40.32.88/toxcreate/feature#Hamster%20Carcinogenicity%20(DSSTOX/CPDB)"
- @test_class_data = "http://188.40.32.88/dataset/57"
+ @pred_feature = "http://localhost/toxmodel/feature#Hamster%20Carcinogenicity%20(DSSTOX/CPDB)"
+ @test_class_data = Util.upload_dataset(@@dataset_service, @@file, @@file_type).chomp("\n")
+ #@pred_feature = "http://188.40.32.88/toxcreate/feature#Hamster%20Carcinogenicity%20(DSSTOX/CPDB)"
+ #@test_class_data = "http://188.40.32.88/dataset/57"
split = Util.split_dataset(@test_class_data, @pred_feature, 0.9, 1)
@train_data = split[0].to_s
@@ -482,6 +488,31 @@ class Nightly
end
end
+ class CacoAlgsRegressionBenchmark < TrainingTestValidationBenchmark
+
+ def title
+ "Training test set validation, regression, caco dataset"
+ end
+
+ def info
+ res = [ "Training test set validation on caco2 dataset." ] + super
+ return res
+ end
+
+ def build()
+ @algs = [
+ "http://opentox.ntua.gr:3003/algorithm/mlr",
+ "http://ambit.uni-plovdiv.bg:8080/ambit2/algorithm/LR",
+ ]
+ @alg_params = [ nil, nil]
+ @train_data = "http://ambit.uni-plovdiv.bg:8080/ambit2/dataset/R7798"
+ @test_data = "http://ambit.uni-plovdiv.bg:8080/ambit2/dataset/R8353"
+ @pred_feature = "http://ambit.uni-plovdiv.bg:8080/ambit2/feature/255510"
+ super
+ end
+ end
+
+
class CacoModelsRegressionBenchmark < TestModelValidationBenchmark
def title
@@ -498,7 +529,8 @@ class Nightly
"http://ambit.uni-plovdiv.bg:8080/ambit2/model/259260",
"http://opentox.ntua.gr:3003/model/195",
]
- @test_data = "http://ambit.uni-plovdiv.bg:8080/ambit2/dataset/R7798"
+ #@test_data = "http://ambit.uni-plovdiv.bg:8080/ambit2/dataset/R7798"
+ @test_data = "http://ambit.uni-plovdiv.bg:8080/ambit2/dataset/R8353"
super
end
end
@@ -541,7 +573,7 @@ class Nightly
data = File.read(file.path)
data_uri = OpenTox::RestClientWrapper.post dataset_service, {:content_type => file_type}, data
#data_uri = OpenTox::Task.find(data_uri).wait_for_resource.to_s if OpenTox::Utils.task_uri?(data_uri)
- return data_uri
+ return data_uri.to_s
end
def self.split_dataset(data_uri, feature, split_ratio, random_seed)
@@ -556,13 +588,13 @@ class Nightly
#LOGGER.info "waiting for validation "+uri.to_s
#uri = OpenTox::Task.find(uri).wait_for_resource.to_s if OpenTox::Utils.task_uri?(uri)
#LOGGER.info "validaiton done "+uri.to_s
- return uri
+ return uri.to_s
end
def self.validate_model(test_data, test_class_data, model)
uri = OpenTox::RestClientWrapper.post @@validation_service, { :test_dataset_uri => test_data,
:test_target_dataset_uri => test_class_data, :model_uri => model }
- return uri
+ return uri.to_s
end
def self.cross_validate_alg(data, alg, feature, folds, seed, stratified, alg_params)
@@ -572,19 +604,19 @@ class Nightly
#LOGGER.info "waiting for validation "+uri.to_s
#uri = OpenTox::Task.find(uri).wait_for_resource.to_s if OpenTox::Utils.task_uri?(uri)
#LOGGER.info "validaiton done "+uri.to_s
- return uri
+ return uri.to_s
end
def self.create_report(validation, type="validation")
uri = OpenTox::RestClientWrapper.post File.join(@@validation_service,"report/"+type.to_s), { :validation_uris => validation }
#uri = OpenTox::Task.find(uri).wait_for_resource.to_s if OpenTox::Utils.task_uri?(uri)
- return uri
+ return uri.to_s
end
def self.create_alg_comparison_report(validations)
uri = OpenTox::RestClientWrapper.post File.join(@@validation_service,"report/algorithm_comparison"), { :validation_uris => validations.join("\n") }
#uri = OpenTox::Task.find(uri).wait_for_resource.to_s if OpenTox::Utils.task_uri?(uri)
- return uri
+ return uri.to_s
end
end
diff --git a/report/prediction_util.rb b/report/prediction_util.rb
index 051022f..598f07d 100644
--- a/report/prediction_util.rb
+++ b/report/prediction_util.rb
@@ -19,7 +19,7 @@ module Reports::PredictionUtil
a = []
validation_attributes.each{ |att| a.push(v.send(att).to_s) }
- a.push(v.get_predictions.identifier(i)[0,65]) #.gsub(/[-(),=]/, '')[0,10])
+ a.push(v.get_predictions.identifier(i)) #.gsub(/[-(),=]/, '')[0,10])
#a.push(OpenTox::Compound.new(:uri=>v.get_predictions.compound(i)).smiles[0,65]) #.gsub(/[-(),=]/, '')[0,10])
a.push(v.get_predictions.actual_value(i).to_nice_s)
diff --git a/validation/validation_format.rb b/validation/validation_format.rb
index e740293..b61037f 100644
--- a/validation/validation_format.rb
+++ b/validation/validation_format.rb
@@ -83,7 +83,9 @@ module Validation
:f_measure, :num_false_positives, :num_false_negatives,
:num_true_positives, :num_true_negatives, :precision,
:recall, :true_negative_rate, :true_positive_rate,
- :confusion_matrix_value, :weighted_area_under_roc ]
+ :confusion_matrix_value, :weighted_area_under_roc,
+ :target_variance_actual, :root_mean_squared_error,
+ :target_variance_predicted, :mean_absolute_error, :r_square ]
# created at -> date
# owl.set_literal(OT['numInstances'],validation.num_instances)
# owl.set_literal(OT['numWithoutClass'],validation.num_without_class)
@@ -95,13 +97,13 @@ module Validation
@@object_properties = { :model_uri => OT['validationModel'], :training_dataset_uri => OT['validationTrainingDataset'], :algorithm_uri => OT['validationAlgorithm'],
:prediction_feature => OT['predictedFeature'], :test_dataset_uri => OT['validationTestDataset'], :test_target_dataset_uri => OT['validationTestClassDataset'],
:prediction_dataset_uri => OT['validationPredictionDataset'], :crossvalidation_info => OT['hasValidationInfo'],
- :classification_statistics => OT['hasValidationInfo'],
+ :classification_statistics => OT['hasValidationInfo'], :regression_statistics => OT['hasValidationInfo'],
:class_value_statistics => OT['classValueStatistics'], :confusion_matrix => OT['confusionMatrix'],
:confusion_matrix_cell => OT['confusionMatrixCell'], :class_value => OT['classValue'],
:confusion_matrix_actual => OT['confusionMatrixActual'], :confusion_matrix_predicted => OT['confusionMatrixPredicted'] }
@@classes = { :crossvalidation_info => OT['CrossvalidationInfo'], :classification_statistics => OT['ClassificationStatistics'],
- :class_value_statistics => OT['ClassValueStatistics'],
+ :regression_statistics => OT['RegresssionStatistics'], :class_value_statistics => OT['ClassValueStatistics'],
:confusion_matrix => OT['ConfusionMatrix'], :confusion_matrix_cell => OT['ConfusionMatrixCell']}
def literal?( prop )
diff --git a/validation/validation_test.rb b/validation/validation_test.rb
index cafd06a..3509a84 100644
--- a/validation/validation_test.rb
+++ b/validation/validation_test.rb
@@ -22,7 +22,7 @@ class ValidationTest < Test::Unit::TestCase
Nightly.build_nightly
#get "/build_nightly"
#get "/nightly"
- #get '1',nil,'HTTP_ACCEPT' => "application/rdf+xml"
+ #get '16',nil,'HTTP_ACCEPT' => "application/rdf+xml"
#puts last_response.body
#prepare_examples