diff options
author | mguetlein <martin.guetlein@gmail.com> | 2010-05-12 16:33:25 +0200 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2010-05-12 16:33:25 +0200 |
commit | 71b103483933089410c4a172fd1f014faa681c48 (patch) | |
tree | b71f36e9e1a9797ce75fdaa9b9f30c0ac3664d79 | |
parent | 2679db624cdb69cb3c3d8b659d9513899c3423a4 (diff) |
fix validation to rdf, add nightly
-rw-r--r-- | lib/rdf_provider.rb | 9 | ||||
-rw-r--r-- | nightly/nightly.rb | 66 | ||||
-rw-r--r-- | report/prediction_util.rb | 2 | ||||
-rw-r--r-- | validation/validation_format.rb | 8 | ||||
-rw-r--r-- | validation/validation_test.rb | 2 |
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 |