summaryrefslogtreecommitdiff
path: root/reach_reports
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-01-13 15:18:45 +0100
committermguetlein <martin.guetlein@gmail.com>2011-01-13 15:18:45 +0100
commiteeb0b6df2dbdae29ccf3f4ccd923002e0ed65506 (patch)
treec0b0956d5b107e613c3236ede71462fa7f18cf05 /reach_reports
parent5786ebd5095451e928d9811bd6bbd98af72de99d (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.rb4
-rwxr-xr-x[-rw-r--r--]reach_reports/reach_persistance.rb44
-rwxr-xr-x[-rw-r--r--]reach_reports/reach_service.rb59
-rwxr-xr-x[-rw-r--r--]reach_reports/reach_test.rb12
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