From e1cb8e39ca0331ea2db7e633c3bc708aa691b0b3 Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Wed, 10 Mar 2010 19:17:46 +0100 Subject: owl-dl (temporarily) removed, switched to YAML representation --- lib/algorithm.rb | 2 +- lib/dataset.rb | 79 +++++++++++++++++++++++++++++--------------------------- lib/model.rb | 24 ++++++++++++++++- lib/owl.rb | 2 +- lib/task.rb | 9 +++---- 5 files changed, 70 insertions(+), 46 deletions(-) (limited to 'lib') diff --git a/lib/algorithm.rb b/lib/algorithm.rb index 817340f..c17159e 100644 --- a/lib/algorithm.rb +++ b/lib/algorithm.rb @@ -51,7 +51,7 @@ module OpenTox LOGGER.debug File.basename(__FILE__) + ": creating model" #@uri = RestClient.post File.join(@@config[:services]["opentox-algorithm"], "lazar"), :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri], :feature_generation_uri => File.join(@@config[:services]["opentox-algorithm"], "fminer") resource = RestClient::Resource.new(File.join(@@config[:services]["opentox-algorithm"], "lazar"), :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) - @uri = resource.post :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri], :feature_generation_uri => File.join(@@config[:services]["opentox-algorithm"], "fminer") + @uri = resource.post :dataset_uri => params[:dataset_uri], :feature_uri => params[:feature_uri], :feature_generation_uri => File.join(@@config[:services]["opentox-algorithm"], "fminer").chomp end def self.uri diff --git a/lib/dataset.rb b/lib/dataset.rb index b5b2e06..5caaa2c 100644 --- a/lib/dataset.rb +++ b/lib/dataset.rb @@ -3,12 +3,47 @@ LOGGER.progname = File.expand_path(__FILE__) module OpenTox class Dataset - include Owl + #include Owl + + attr_accessor :uri, :title, :source, :identifier, :data, :features, :compounds def initialize - super + @data = {} + @features = [] + @compounds = [] + #super + end + + def self.find(uri) + #dataset = Dataset.new + LOGGER.debug "Getting data from #{uri}" + YAML.load RestClient.get(uri, :accept => 'application/x-yaml').to_s # unclear why this does not work for complex uris, Dataset.find works from irb + #data = `curl "#{uri}"` + #LOGGER.debug data + #dataset.rdf = data + #dataset + end + + + def save + LOGGER.debug "Saving dataset" + @features.uniq! + @compounds.uniq! + #task_uri = RestClient.post(@@config[:services]["opentox-dataset"], self.rdf, :content_type => "application/rdf+xml").to_s + task_uri = RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]).post(self.to_yaml, :content_type => "application/x-yaml").chomp.to_s + task = OpenTox::Task.find(task_uri) + LOGGER.debug "Waiting for task #{task_uri}" + task.wait_for_completion + LOGGER.debug "Dataset task #{task_uri} completed" + if task.failed? + LOGGER.error "Saving dataset failed" + task.failed + exit + end + task.resource end +=begin # create/add to entry from uris or Redland::Resources def add(compound,feature,value) compound = self.find_or_create_compound compound unless compound.class == Redland::Resource @@ -87,17 +122,7 @@ module OpenTox resource = RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) uri = resource.post data, :content_type => content_type dataset = Dataset.new - dataset.read uri.to_s - dataset - end - - def self.find(uri) - dataset = Dataset.new - LOGGER.debug "Getting data from #{uri}" - data = `curl "#{uri}"` - #LOGGER.debug data - #data = RestClient.get(uri, :accept => 'application/rdf+xml') # unclear why this does not work for complex uris, Dataset.find works from irb - dataset.rdf = data + dataset.read uri.chomp.to_s dataset end @@ -165,35 +190,13 @@ module OpenTox resource.delete end - def save - LOGGER.debug "Saving dataset" - #task_uri = RestClient.post(@@config[:services]["opentox-dataset"], self.rdf, :content_type => "application/rdf+xml").to_s - task_uri = RestClient::Resource.new(@@config[:services]["opentox-dataset"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]).post(self.rdf, :content_type => "application/rdf+xml").to_s - task = OpenTox::Task.find(task_uri) - LOGGER.debug "Waiting for task #{task_uri}" - task.wait_for_completion - LOGGER.debug "Dataset task #{task_uri} completed" - if task.failed? - LOGGER.error "Saving dataset failed" - task.failed - exit - end - task.resource + def to_owl end - def to_yaml - { - :uri => self.uri, - :opentox_class => self.owl_class, - :title => self.title, - :source => self.source, - :identifier => self.identifier, - :compounds => self.compounds.collect{|c| c.to_s.to_s.sub(/^\[(.*)\]$/,'\1')}, - :features => self.features.collect{|f| f.to_s }, - :data => self.data - }.to_yaml + def from_owl end +=end end end diff --git a/lib/model.rb b/lib/model.rb index b5129d7..5dcc462 100644 --- a/lib/model.rb +++ b/lib/model.rb @@ -2,6 +2,27 @@ module OpenTox module Model class Lazar + + attr_accessor :dependent_variable, :activity_dataset_uri, :feature_dataset_uri, :effects, :activities, :p_values, :fingerprints, :features + + def initialize + @source = "http://github.com/helma/opentox-model" + @algorithm = File.join(@@config[:services]["opentox-algorithm"],"lazar") + #@independent_variables = File.join(@@config[:services]["opentox-algorithm"],"fminer#BBRC_representative") + @features = [] + @effects = {} + @activities = {} + @p_values = {} + @fingerprints = {} + end + + def save + @features.uniq! + resource = RestClient::Resource.new(@@config[:services]["opentox-model"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) + resource.post(self.to_yaml, :content_type => "application/x-yaml").chomp.to_s + end + +=begin include Owl # Create a new prediction model from a dataset @@ -50,7 +71,7 @@ module OpenTox def self.create(data) resource = RestClient::Resource.new(@@config[:services]["opentox-model"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) - resource.post(data, :content_type => "application/x-yaml").to_s + resource.post(data, :content_type => "application/x-yaml").chomp.to_s end def delete @@ -101,6 +122,7 @@ module OpenTox @model.add me, OT['predictedVariables'], Redland::Uri.new(predictedVariables) # untyped individual comes from this line, why?? @model.add Redland::Uri.new(predictedVariables), RDF['type'], OT['Feature'] end +=end end end end diff --git a/lib/owl.rb b/lib/owl.rb index 82d6e0e..f8958cd 100644 --- a/lib/owl.rb +++ b/lib/owl.rb @@ -20,7 +20,7 @@ module OpenTox end def uri=(uri) - @uri = uri + @uri = uri.chomp uri = Redland::Uri.new(uri) # rewrite uri @model.subjects(RDF['type'],OT[self.owl_class]).each do |me| diff --git a/lib/task.rb b/lib/task.rb index a6a54d5..6a80d1a 100644 --- a/lib/task.rb +++ b/lib/task.rb @@ -7,16 +7,15 @@ module OpenTox attr_accessor :uri def initialize(uri) - #super() - @uri = uri + @uri = uri.chomp end def self.create #uri = RestClient.post @@config[:services]["opentox-task"], {} resource = RestClient::Resource.new(@@config[:services]["opentox-task"], :user => @@users[:users].keys[0], :password => @@users[:users].values[0]) #uri = resource.post(nil) - uri = resource.post({}) - Task.new(uri) + uri = resource.post({}).chomp + Task.new(uri.chomp) end def self.find(uri) @@ -28,7 +27,7 @@ module OpenTox end def self.all - task_uris = RestClient.get(@@config[:services]["opentox-task"]).split(/\n/) + task_uris = RestClient.get(@@config[:services]["opentox-task"]).chomp.split(/\n/) task_uris.collect{|uri| Task.new(uri)} end -- cgit v1.2.3