summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMartin Gütlein <martin.guetlein@gmail.com>2010-04-19 13:55:15 +0200
committerMartin Gütlein <martin.guetlein@gmail.com>2010-04-19 13:55:15 +0200
commit7386c1b50448ad338b84628e1d585cefb05006f1 (patch)
tree91017789dcda1c4606755c10c87e8c6bddb3aa13 /lib
parent3c52741e6c304ee48881ea67aa79039de8a9849a (diff)
lib/owl.rb
Diffstat (limited to 'lib')
-rw-r--r--lib/dataset.rb26
-rw-r--r--lib/model.rb67
2 files changed, 38 insertions, 55 deletions
diff --git a/lib/dataset.rb b/lib/dataset.rb
index d6e0b39..4c3f103 100644
--- a/lib/dataset.rb
+++ b/lib/dataset.rb
@@ -26,13 +26,14 @@ module OpenTox
d.uri = d.identifier
# when loading a dataset from owl, only compound- and feature-uris are loaded
- owl.load_data_compounds_and_features(d.compounds, d.features)
+ owl.load_dataset(d.compounds, d.features)
# all features are marked as dirty, loaded dynamically later
d.init_dirty_features(owl)
d.compounds.uniq!
d.features.uniq!
end
+ d.uri = uri unless d.uri
return d
end
@@ -78,7 +79,12 @@ module OpenTox
return "no classification key"
end
else
- raise "invalid value type"
+ raise "predicted class value is not a hash\n"+
+ "value "+v.to_s+"\n"+
+ "value-class "+v.class.to_s+"\n"+
+ "dataset "+@uri.to_s+"\n"+
+ "compound "+compound.to_s+"\n"+
+ "feature "+feature.to_s+"\n"
end
end
@@ -94,7 +100,12 @@ module OpenTox
raise "no confidence key"
end
else
- raise "invalid value type"
+ raise "prediction confidence value is not a hash value\n"+
+ "value "+v.to_s+"\n"+
+ "value-class "+v.class.to_s+"\n"+
+ "dataset "+@uri.to_s+"\n"+
+ "compound "+compound.to_s+"\n"+
+ "feature "+feature.to_s+"\n"
end
end
@@ -119,7 +130,12 @@ module OpenTox
end
raise "feature value no found: "+feature.to_s
else
- raise "invalid value type"
+ raise "value is not an array\n"+
+ "value "+v.to_s+"\n"+
+ "value-class "+v.class.to_s+"\n"+
+ "dataset "+@uri.to_s+"\n"+
+ "compound "+compound.to_s+"\n"+
+ "feature "+feature.to_s+"\n"
end
end
@@ -127,7 +143,7 @@ module OpenTox
def load_feature_values(feature=nil)
if feature
raise "feature already loaded" unless @dirty_features.include?(feature)
- @owl.load_data_compounds_and_features(@compounds, @data, feature)
+ @owl.load_dataset_feature_values(@compounds, @data, feature)
@dirty_features.delete(feature)
else
@data = {}
diff --git a/lib/model.rb b/lib/model.rb
index 5ca3914..8674311 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -21,8 +21,10 @@ module OpenTox
@independent_variables = owl.independentVariables
@predicted_variables = owl.predictedVariables
- raise "invalid model:\n"+self.to_yaml+"\n" unless Utils.is_uri?(@uri) && @dependent_variables.to_s.size>0 &&
- @independent_variables.to_s.size>0 && @predicted_variables.to_s.size>0 if ENV['RACK_ENV'] =~ /test|debug/
+ raise "invalid model:\n"+self.to_yaml+"\n" unless Utils.is_uri?(@uri) &&
+ #@dependent_variables.to_s.size>0 &&
+ #@independent_variables.to_s.size>0 &&
+ @predicted_variables.to_s.size>0 if ENV['RACK_ENV'] =~ /test|debug/
end
end
@@ -31,61 +33,24 @@ module OpenTox
def self.build( algorithm_uri, algorithm_params )
- LOGGER.debug "Build model, algorithm_uri:"+algorithm_uri.to_s+", algorithm_parms: "+algorithm_params.inspect.to_s
- uri = OpenTox::RestClientWrapper.post(algorithm_uri,algorithm_params).to_s
-
- if uri.to_s =~ /ambit.*task|tu-muenchen.*task/
- uri = PredictionModel.redirect_task(uri)
- elsif Utils.task_uri?(uri)
- uri = OpenTox::Task.find(uri).wait_for_resource.to_s
+ if algorithm_uri =~ /ambit2/
+ LOGGER.warn "Ambit hack, replacing 'prediction_feature' with 'target'"
+ algorithm_params[:target] = algorithm_params[:prediction_feature]
+ algorithm_params.delete(:prediction_feature)
end
- raise "invalid build model result: "+uri.to_s unless uri =~ /model/
- return PredictionModel.find(uri)
- end
-
- def self.redirect_task( uri )
- raise "no redirect task uri: "+uri.to_s unless uri.to_s =~ /ambit.*task|tu-muenchen.*task/
- while (uri.to_s =~ /ambit.*task|tu-muenchen.*task/)
- #HACK handle redirect
- LOGGER.debug "REDIRECT TASK: "+uri.to_s
- redirect = ""
- while (redirect.size == 0)
- IO.popen("bin/redirect.sh "+uri.to_s) do |f|
- while line = f.gets
- redirect += line.chomp
- end
- end
- raise "TASK ERROR" if $?!=0
- sleep 0.3
- end
- uri = redirect
- LOGGER.debug "REDIRECT TO: "+uri.to_s
- end
- return uri
+ LOGGER.debug "Build model, algorithm_uri:"+algorithm_uri.to_s+", algorithm_parms: "+algorithm_params.inspect.to_s
+ uri = OpenTox::RestClientWrapper.post(algorithm_uri,algorithm_params, nil, true).to_s
+ raise "Invalid build model result: "+uri.to_s unless uri =~ /model/
+ 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
-
- if uri.to_s =~ /ambit.*task|tu-muenchen.*task/
- uri = PredictionModel.redirect_task(uri)
- raise "invalid redirect result: " unless uri =~ /ambit.*dataset/
- return uri
- else
- 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
+ uri = RestClientWrapper.post(@uri, {:dataset_uri=>dataset_uri}, nil, true)
+ raise "Prediciton result no dataset uri: "+uri.to_s unless Utils.dataset_uri?(uri)
+ uri
end
def classification?
@@ -96,6 +61,8 @@ module OpenTox
return false
elsif @uri =~/tu-muenchen/ and @title =~ /regression|M5P|GaussP/
return false
+ elsif @uri =~/ambit2/ and @title =~ /pKa/
+ return false
else
raise "unknown model, uri:'"+@uri.to_s+"' title:'"+@title.to_s+"'"
end