diff options
author | mguetlein <martin.guetlein@gmail.com> | 2011-01-13 15:18:45 +0100 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2011-01-13 15:18:45 +0100 |
commit | eeb0b6df2dbdae29ccf3f4ccd923002e0ed65506 (patch) | |
tree | c0b0956d5b107e613c3236ede71462fa7f18cf05 /reach_reports | |
parent | 5786ebd5095451e928d9811bd6bbd98af72de99d (diff) |
adjust to new wrapper, replace activerecord with datamapper (remove activerecord code), is_classification to feature_type
Diffstat (limited to 'reach_reports')
-rwxr-xr-x[-rw-r--r--] | reach_reports/reach_application.rb | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | reach_reports/reach_persistance.rb | 44 | ||||
-rwxr-xr-x[-rw-r--r--] | reach_reports/reach_service.rb | 59 | ||||
-rwxr-xr-x[-rw-r--r--] | reach_reports/reach_test.rb | 12 |
4 files changed, 47 insertions, 72 deletions
diff --git a/reach_reports/reach_application.rb b/reach_reports/reach_application.rb index d82bc11..4187c1b 100644..100755 --- a/reach_reports/reach_application.rb +++ b/reach_reports/reach_application.rb @@ -1,5 +1,5 @@ -[ 'rubygems', 'sinatra', 'sinatra/url_for', 'opentox-ruby-api-wrapper' ].each do |lib| +[ 'rubygems', 'sinatra', 'sinatra/url_for', 'opentox-ruby' ].each do |lib| require lib end @@ -67,7 +67,7 @@ post '/reach_report/:type' do #puts "creating "+type+" report "+params.inspect result_uri = ReachReports.create_report(type,params,request.env["rack.input"]) - if OpenTox::Utils.task_uri?(result_uri) + if result_uri and result_uri.task_uri? halt 202,result_uri+"\n" else result_uri+"\n" diff --git a/reach_reports/reach_persistance.rb b/reach_reports/reach_persistance.rb index 2cbcd71..a36e05f 100644..100755 --- a/reach_reports/reach_persistance.rb +++ b/reach_reports/reach_persistance.rb @@ -1188,41 +1188,11 @@ module ReachReports # end # end - QsarSoftware.auto_upgrade! - QsarIdentifier.auto_upgrade! - - QmrfAuthor.auto_upgrade! - ModelAuthor.auto_upgrade! - Reference.auto_upgrade! - QsarGeneralInformation.auto_upgrade! - - ModelEndpoint.auto_upgrade! - QsarEndpoint.auto_upgrade! - - AlgorithmExplicit.auto_upgrade! - AlgorithmsDescriptor.auto_upgrade! - DescriptorsGenerationSoftware.auto_upgrade! - QsarAlgorithm.auto_upgrade! - - AppDomainSoftware.auto_upgrade! - QsarApplicabilityDomain.auto_upgrade! - - TrainingSetData.auto_upgrade! - QsarRobustness.auto_upgrade! - - ValidationSetData.auto_upgrade! - QsarPredictivity.auto_upgrade! - - QsarInterpretation.auto_upgrade! - - Bibliography.auto_upgrade! - AttachmentTrainingData.auto_upgrade! - AttachmentValidationData.auto_upgrade! - AttachmentDocument.auto_upgrade! - QsarMiscellaneous.auto_upgrade! - - QmrfSummary.auto_upgrade! - - QmrfReport.auto_upgrade! - + [ QsarSoftware, QsarIdentifier, QmrfAuthor, ModelAuthor, Reference, QsarGeneralInformation, ModelEndpoint, QsarEndpoint, AlgorithmExplicit, + AlgorithmsDescriptor, DescriptorsGenerationSoftware, QsarAlgorithm, AppDomainSoftware, QsarApplicabilityDomain, TrainingSetData, + QsarRobustness, ValidationSetData, QsarPredictivity, QsarInterpretation, Bibliography, AttachmentTrainingData, AttachmentValidationData, + AttachmentDocument, QsarMiscellaneous, QmrfSummary, QmrfReport ].each do |model| + model.auto_upgrade! + model.raise_on_save_failure = true + end end
\ No newline at end of file diff --git a/reach_reports/reach_service.rb b/reach_reports/reach_service.rb index f297f26..808d08a 100644..100755 --- a/reach_reports/reach_service.rb +++ b/reach_reports/reach_service.rb @@ -26,13 +26,14 @@ module ReachReports case type when /(?i)QMRF/ if params[:model_uri] - result_uri = OpenTox::Task.as_task( "Create "+type+" report", - $sinatra.url_for("/reach_report/"+type, :full), params ) do |task| + task = OpenTox::Task.create( "Create "+type+" report", + $sinatra.url_for("/reach_report/"+type, :full) ) do |task| #, params report = ReachReports::QmrfReport.new :model_uri => params[:model_uri] build_qmrf_report(report, task) report.report_uri end + result_uri = task.uri elsif xml_data and (input = xml_data.read).to_s.size>0 report = ReachReports::QmrfReport.new ReachReports::QmrfReport.from_xml(report,input) @@ -61,17 +62,18 @@ module ReachReports def self.build_qmrf_report(r, task=nil) #puts r.model_uri - model = OpenTox::Model::PredictionModel.find(r.model_uri) - classification = model.classification? + model = OpenTox::Model::Generic.find(r.model_uri) + raise "model not found "+r.model_uri.to_s unless model + feature_type = model.feature_type # chapter 1 r.qsar_identifier = QsarIdentifier.new - r.qsar_identifier.qsar_title = model.title + r.qsar_identifier.qsar_title = model.metadata[DC.title] # TODO QSAR_models -> sparql same endpoint r.qsar_identifier.qsar_software << QsarSoftware.new( :url => model.uri, - :name => model.title, :contact => model.creator ) - algorithm = OpenTox::Algorithm::Generic.find(model.algorithm) if model.algorithm - r.qsar_identifier.qsar_software << QsarSoftware.new( :url => algorithm.uri, :name => algorithm.title ) + :name => model.metadata[DC.title], :contact => model.metadata[DC.creator] ) + algorithm = OpenTox::Algorithm::Generic.find(model.metadata[OT.algorithm]) if model.metadata[OT.algorithm] + r.qsar_identifier.qsar_software << QsarSoftware.new( :url => algorithm.uri, :name => algorithm.metadata[DC.title] ) task.progress(10) if task #chpater 2 @@ -79,7 +81,7 @@ module ReachReports r.qsar_general_information.qmrf_date = DateTime.now.to_s # EMPTY: qmrf_authors, qmrf_date_revision, qmrf_revision # TODO: model_authors ? - r.qsar_general_information.model_date = model.date.to_s + r.qsar_general_information.model_date = model.metadata[DC.date].to_s # TODO: references? # EMPTY: info_availablity # TODO: related_models = find qmrf reports for QSAR_models @@ -88,11 +90,11 @@ module ReachReports # chapter 3 # TODO "model_species" ? r.qsar_endpoint = QsarEndpoint.new - model.predictedVariables.each do |p| + model.metadata[OT.predictedVariables].each do |p| r.qsar_endpoint.model_endpoint << ModelEndpoint.new( :name => p ) - end + end if model.metadata[OT.predictedVariables] # TODO "endpoint_comments" => "3.3", "endpoint_units" => "3.4", - r.qsar_endpoint.endpoint_variable = model.dependentVariables if model.dependentVariables + r.qsar_endpoint.endpoint_variable = model.metadata[OT.dependentVariables] if model.metadata[OT.dependentVariables] # TODO "endpoint_protocol" => "3.6", "endpoint_data_quality" => "3.7", task.progress(30) if task @@ -108,9 +110,9 @@ module ReachReports #training_dataset = model.trainingDataset ? OpenTox::Dataset.find(model.trainingDataset+"/metadata") : nil begin - training_dataset = model.trainingDataset ? OpenTox::Dataset.find(model.trainingDataset) : nil + training_dataset = model.metadata[OT.trainingDataset] ? OpenTox::Dataset.find(model.metadata[OT.trainingDataset]) : nil rescue - LOGGER.warn "build qmrf: training_dataset not found "+model.trainingDataset.to_s + LOGGER.warn "build qmrf: training_dataset not found "+model.metadata[OT.trainingDataset].to_s end task.progress(50) if task @@ -129,27 +131,27 @@ module ReachReports val_datasets = [] - if model.algorithm - cvs = Lib::Crossvalidation.find_all_uniq({:algorithm_uri => model.algorithm}) + if algorithm + cvs = Lib::Crossvalidation.find_all_uniq({:algorithm_uri => algorithm.uri}) # PENDING: cv classification/regression hack cvs = cvs.delete_if do |cv| val = Validation::Validation.first( :all, :conditions => { :crossvalidation_id => cv.id } ) - (val.classification_statistics!=nil) != classification + (val.classification_statistics!=nil) != (feature_type=="classification") end - lmo = [ "found "+cvs.size.to_s+" crossvalidation/s for algorithm '"+model.algorithm+"'" ] + lmo = [ "found "+cvs.size.to_s+" crossvalidation/s for algorithm '"+algorithm.uri.to_s+"'" ] if cvs.size>0 cvs_same_data = [] cvs_other_data = [] cvs.each do |cv| - if cv.dataset_uri == model.trainingDataset + if cv.dataset_uri == model.metadata[OT.trainingDataset] cvs_same_data << cv else cvs_other_data << cv end end lmo << cvs_same_data.size.to_s+" crossvalidations/s where performed on the training dataset of the model ("+ - model.trainingDataset.to_s+")" + model.metadata[OT.trainingDataset].to_s+")" lmo << cvs_other_data.size.to_s+" crossvalidations/s where performed on the other datasets" lmo << "" @@ -162,15 +164,16 @@ module ReachReports val_datasets << cv.dataset_uri lmo << "settings: num-folds="+cv.num_folds.to_s+", random-seed="+cv.random_seed.to_s+", stratified:"+cv.stratified.to_s val = YAML.load( OpenTox::RestClientWrapper.get File.join(cv.crossvalidation_uri,"statistics") ) - if classification + case feature_type + when "classification" lmo << "percent_correct: "+val[:classification_statistics][:percent_correct].to_s lmo << "weighted AUC: "+val[:classification_statistics][:weighted_area_under_roc].to_s - else + when "regression" lmo << "root_mean_squared_error: "+val[:regression_statistics][:root_mean_squared_error].to_s lmo << "r_square "+val[:regression_statistics][:r_square].to_s end reports = OpenTox::RestClientWrapper.get File.join(CONFIG[:services]["opentox-validation"],"report/crossvalidation?crossvalidation_uris="+cv.crossvalidation_uri) - if reports and reports.size>0 + if reports and reports.chomp.size>0 lmo << "for more info see report: "+reports.split("\n")[0] else lmo << "for more info see report: not yet created for '"+cv.crossvalidation_uri+"'" @@ -187,7 +190,8 @@ module ReachReports # "lmo" => "6.9", "yscrambling" => "6.10", "bootstrap" => "6.11", "other_statistics" => "6.12", LOGGER.debug "looking for validations with "+{:model_uri => model.uri}.inspect - vals = Lib::Validation.find(:all, :conditions => {:model_uri => model.uri}) + #vals = Lib::Validation.find(:all, :conditions => {:model_uri => model.uri}) + vals = Lib::Validation.all({:model_uri => model.uri}) uniq_vals = [] vals.each do |val| match = false @@ -212,10 +216,11 @@ module ReachReports v << "validation: "+validation.validation_uri v << "dataset (see 9.3 Validation data): "+validation.test_dataset_uri val_datasets << validation.test_dataset_uri - if classification + case feature_type + when "classification" v << "percent_correct: "+validation.classification_statistics[:percent_correct].to_s v << "weighted AUC: "+validation.classification_statistics[:weighted_area_under_roc].to_s - else + when "regression" v << "root_mean_squared_error: "+validation.regression_statistics[:root_mean_squared_error].to_s v << "r_square "+validation.regression_statistics[:r_square].to_s end @@ -252,7 +257,7 @@ module ReachReports r.qsar_miscellaneous.attachment_training_data << AttachmentTrainingData.new( { :description => training_dataset.title, :filetype => "owl-dl", - :url => model.trainingDataset} ) if training_dataset + :url => training_dataset.uri} ) if training_dataset val_datasets.each do |data_uri| begin diff --git a/reach_reports/reach_test.rb b/reach_reports/reach_test.rb index 4a18f6d..13625e5 100644..100755 --- a/reach_reports/reach_test.rb +++ b/reach_reports/reach_test.rb @@ -7,7 +7,7 @@ require 'rack/test' require 'lib/test_util.rb' require 'test/test_examples.rb' -LOGGER = MyLogger.new(STDOUT) +LOGGER = OTLogger.new(STDOUT) LOGGER.datetime_format = "%Y-%m-%d %H:%M:%S " LOGGER.formatter = Logger::Formatter.new @@ -115,7 +115,7 @@ class ReachTest < Test::Unit::TestCase # puts last_response.body #model_uri = "http://ambit.uni-plovdiv.bg:8080/ambit2/model/173393" - model_uri = "http://localhost/model/6" + model_uri = "http://localhost/model/1" #http://localhost/majority/class/model/15 #model_uri = "http://localhost/majority/class/model/15" # model_uri = "http://localhost/majority/class/model/91" @@ -141,15 +141,15 @@ class ReachTest < Test::Unit::TestCase # puts "RDF" # puts last_response.body - get '/reach_report/qmrf/'+id,nil,'HTTP_ACCEPT' => "application/qmrf-xml" - puts "XML" - puts last_response.body + #get '/reach_report/qmrf/'+id,nil,'HTTP_ACCEPT' => "application/qmrf-xml" + #puts "XML" + #puts last_response.body #r = ReachReports::QmrfReport.find_like( :QSAR_title => "Hamster") #puts r.collect{|rr| "report with id:"+rr.id.to_s}.inspect - File.new("/home/martin/tmp/qmr_rep_del_me.xml","w").puts last_response.body + #File.new("/home/martin/tmp/qmr_rep_del_me.xml","w").puts last_response.body #File.new("/home/martin/win/home/qmr_rep_del_me.xml","w").puts last_response.body #File.new("/home/martin/info_home/.public_html/qmr_rep_del_me.xml","w").puts last_response.body end |