diff options
author | Martin Gütlein <martin.guetlein@gmail.com> | 2010-03-25 19:39:29 +0100 |
---|---|---|
committer | Martin Gütlein <martin.guetlein@gmail.com> | 2010-03-25 19:39:29 +0100 |
commit | 0230d687322bab8c0fd24cf41e33a28554a364db (patch) | |
tree | 9dba7f07db99cd96e220236dbf84989441ce5f44 /lib/model.rb | |
parent | 7c6b9a46e012a3e541f63d245c344e5876d7da5e (diff) |
wrapper adjustments for validation
Diffstat (limited to 'lib/model.rb')
-rw-r--r-- | lib/model.rb | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/lib/model.rb b/lib/model.rb index 8877b84..e8eee09 100644 --- a/lib/model.rb +++ b/lib/model.rb @@ -3,11 +3,16 @@ module OpenTox class Generic - attr_accessor :predicted_variables, :independent_variables, :dependent_variables, :activity_dataset_uri, :feature_dataset_uri, :effects, :activities, :p_values, :fingerprints, :features, :algorithm + attr_accessor :uri, :title, :source, :identifier, :predicted_variables, :independent_variables, :dependent_variables, :activity_dataset_uri, :feature_dataset_uri, :effects, :activities, :p_values, :fingerprints, :features, :algorithm def self.find(uri) owl = OpenTox::Owl.from_uri(uri) - @title = owl.title + return self.new(owl) + end + + protected + def initialize(owl) + @title = owl.title @source = owl.source @identifier = owl.identifier.sub(/^\[/,'').sub(/\]$/,'') @uri = @identifier @@ -16,8 +21,46 @@ module OpenTox @independent_variables = owl.independentVariables @predicted_variables = owl.predictedVariables end - - end + end + + + class PredictionModel < Generic + + def self.build( algorithm_uri, algorithm_params ) + + LOGGER.debug "Build model, algorithm_uri:"+algorithm_uri.to_s+", algorithm_parms: "+algorithm_params.to_s + uri = OpenTox::RestClientWrapper.post(algorithm_uri,algorithm_params).to_s + uri = OpenTox::Task.find(uri).wait_for_resource.to_s if Utils.task_uri?(uri) + return PredictionModel.find(uri) + end + + def predict_dataset( dataset_uri ) + + LOGGER.debug "Predict dataset: "+dataset_uri.to_s+" with model "+@uri.to_s + + #HACK using curl + uri = "" + IO.popen("curl -X POST -d dataset_uri='"+dataset_uri+"' "+@uri.to_s+" 2> /dev/null") do |f| + while line = f.gets + uri += line + end + end + uri = OpenTox::Task.find(uri).wait_for_resource.to_s if Utils.task_uri?(uri) + return uri if Utils.dataset_uri?(uri) + raise "not sure about prediction result: "+uri.to_s + end + + def classification? + #HACK replace with request to ontology server + case @title + when /lazar classification/ + return true + else + raise "unknown model: "+@title.to_s + end + end + end + class Lazar < Generic |