summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrautenberg <rautenberg@in-silico.ch>2012-03-13 15:33:22 +0100
committerrautenberg <rautenberg@in-silico.ch>2012-03-13 15:33:22 +0100
commitda12311f03ef0071c394ac66f5e54e8817b65b9c (patch)
treed4dfdf20ef522ca2755741dffa2592ec48f57518
parent32cd79cd055ccd0aa9de29d68ca8c3e63663b126 (diff)
parent4f14262609d58bf856675ae01195dd2c5f70b97b (diff)
Merge branch 'release/v3.1.0' into development
-rw-r--r--ChangeLog8
-rw-r--r--lib/algorithm.rb2
-rw-r--r--lib/authorization.rb18
-rw-r--r--lib/compound.rb13
-rw-r--r--lib/model.rb8
-rw-r--r--lib/utils.rb10
6 files changed, 31 insertions, 28 deletions
diff --git a/ChangeLog b/ChangeLog
index de9e01b..5872d56 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+v3.1.0 2012-02-24
+ * utils.rb: added for special routines (e.g. descriptor calculation)
+ * task.rb: Polling with increasing interval
+ * parser.rb: CSV up and download fixed
+ * transform.rb: routines to create machine learning data matrices
+ * algorithm.rb: SVM parameter grid search, cos similarity as algorithm,
+ gauss() removed
+
v3.0.1 2011-10-19
* feature: model registration to ontology service
* ontology lib gets endpoints from ontology service
diff --git a/lib/algorithm.rb b/lib/algorithm.rb
index db21c46..c026c56 100644
--- a/lib/algorithm.rb
+++ b/lib/algorithm.rb
@@ -527,7 +527,7 @@ module OpenTox
# @param [Hash] required keys: compound, features, feature_dataset_uri, pc_type
# @return [Hash] Hash with matching Smarts and number of hits
def self.lookup(params)
- params[:compound].lookup(params[:features], params[:feature_dataset_uri],params[:pc_type])
+ params[:compound].lookup(params[:features], params[:feature_dataset_uri],params[:pc_type],params[:subjectid])
end
end
diff --git a/lib/authorization.rb b/lib/authorization.rb
index 5d57781..a9744e9 100644
--- a/lib/authorization.rb
+++ b/lib/authorization.rb
@@ -37,13 +37,15 @@ module OpenTox
#Loads and sends Policyfile(XML) to open-sso server
# @param [String] URI to create a policy for
- def send(uri)
+ def send(uri)
xml = get_xml(uri)
ret = false
- ret = Authorization.create_policy(xml, @subjectid)
+ ret = Authorization.create_policy(xml, @subjectid)
+ LOGGER.warn "Create policy on openSSO failed for URI: #{uri} subjectid: #{@subjectid}. Will try again." if !ret
+ ret = Authorization.create_policy(xml, @subjectid) if !ret
LOGGER.debug "Policy send with subjectid: #{@subjectid}"
LOGGER.warn "Not created Policy is: #{xml}" if !ret
- ret
+ ret
end
end
@@ -337,7 +339,7 @@ module OpenTox
# @param [String] subjectid
# @return [Boolean] true if access granted, else otherwise
def self.authorized?(uri, request_method, subjectid)
- if CONFIG[:authorization][:free_request].include?(request_method)
+ if CONFIG[:authorization][:free_request].include?(request_method)
#LOGGER.debug "authorized? >>true<< (request is free), method: #{request_method}, URI: #{uri}, subjectid: #{subjectid}"
true
elsif OpenTox::Authorization.free_uri?(uri, request_method)
@@ -360,7 +362,7 @@ module OpenTox
false
end
end
-
+
private
def self.free_uri?(uri, request_method)
if CONFIG[:authorization][:free_uris]
@@ -374,7 +376,7 @@ module OpenTox
end
return false
end
-
+
def self.authorize_exception?(uri, request_method)
if CONFIG[:authorization][:authorize_exceptions]
CONFIG[:authorization][:authorize_exceptions].each do |request_methods,uris|
@@ -387,6 +389,6 @@ module OpenTox
end
return false
end
-
+
end
-end \ No newline at end of file
+end
diff --git a/lib/compound.rb b/lib/compound.rb
index a2b7e48..c25125b 100644
--- a/lib/compound.rb
+++ b/lib/compound.rb
@@ -198,9 +198,8 @@ module OpenTox
# @param [Array] Array of feature names
# @param [String] Feature dataset uri
# @return [Hash] Hash with feature name as key and value as value
- def lookup(feature_array,feature_dataset_uri,pc_type)
- ds = OpenTox::Dataset.find(feature_dataset_uri)
-
+ def lookup(feature_array,feature_dataset_uri,pc_type,subjectid=nil)
+ ds = OpenTox::Dataset.find(feature_dataset_uri,subjectid)
#entry = ds.data_entries[self.uri]
entry = nil
ds.data_entries.each { |c_uri, values|
@@ -209,17 +208,15 @@ module OpenTox
break
end
}
-
LOGGER.debug "#{entry.size} entries in feature ds for query." unless entry.nil?
if entry.nil?
uri, smiles_to_inchi = OpenTox::Algorithm.get_pc_descriptors({:compounds => [self.uri], :pc_type => pc_type})
- uri = OpenTox::Algorithm.load_ds_csv(uri, smiles_to_inchi)
- ds = OpenTox::Dataset.find(uri)
+ uri = OpenTox::Algorithm.load_ds_csv(uri, smiles_to_inchi, subjectid)
+ ds = OpenTox::Dataset.find(uri,subjectid)
entry = ds.data_entries[self.uri]
- ds.delete
+ ds.delete(subjectid)
end
-
features = entry.keys
features.each { |feature|
new_feature = File.join(feature_dataset_uri, "feature", feature.split("/").last)
diff --git a/lib/model.rb b/lib/model.rb
index b3de1a3..a858a0f 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -237,7 +237,6 @@ module OpenTox
@compound = Compound.new compound_uri
features = {}
-
#LOGGER.debug self.to_yaml
unless @prediction_dataset
@prediction_dataset = Dataset.create(CONFIG[:services]["opentox-dataset"], subjectid)
@@ -248,22 +247,19 @@ module OpenTox
OT.parameters => [{DC.title => "compound_uri", OT.paramValue => compound_uri}]
} )
end
-
if OpenTox::Feature.find(metadata[OT.dependentVariables], subjectid).feature_type == "regression"
all_activities = []
all_activities = @activities.values.flatten.collect! { |i| i.to_f }
end
-
unless database_activity(subjectid) # adds database activity to @prediction_dataset
-
# Calculation of needed values for query compound
@compound_features = eval("#{@feature_calculation_algorithm}({
:compound => @compound,
:features => @features,
:feature_dataset_uri => @metadata[OT.featureDataset],
- :pc_type => self.parameter(\"pc_type\")
+ :pc_type => self.parameter(\"pc_type\"),
+ :subjectid => subjectid
})")
-
# Adding fingerprint of query compound with features and values(p_value*nr_hits)
@compound_fingerprints = {}
@compound_features.each do |feature, value| # value is nil if "Substructure.match"
diff --git a/lib/utils.rb b/lib/utils.rb
index c9e9eca..d9d7b4b 100644
--- a/lib/utils.rb
+++ b/lib/utils.rb
@@ -104,13 +104,13 @@ module OpenTox
# Load dataset via CSV
# @param[Array] Ambit result uri, piecewise (1st: base, 2nd: SMILES, 3rd+: features
# @return[String] dataset uri
- def self.load_ds_csv(ambit_result_uri, smiles_to_inchi)
+ def self.load_ds_csv(ambit_result_uri, smiles_to_inchi, subjectid=nil)
master=nil
(1...ambit_result_uri.size).collect { |idx|
curr_uri = ambit_result_uri[0] + ambit_result_uri[idx]
LOGGER.debug "Requesting #{curr_uri}"
- csv_data = CSV.parse( OpenTox::RestClientWrapper.get(curr_uri, {:accept => "text/csv"}) )
+ csv_data = CSV.parse( OpenTox::RestClientWrapper.get(curr_uri, {:accept => "text/csv", :subjectid => subjectid}) )
if csv_data[0] && csv_data[0].size>1
if master.nil? # This is the smiles entry
(1...csv_data.size).each{ |idx| csv_data[idx][1] = smiles_to_inchi[csv_data[idx][1]] }
@@ -145,11 +145,11 @@ module OpenTox
#File.open("/tmp/test.csv", 'w') {|f| f.write( master.collect {|r| r.join(",")}.join("\n") ) }
parser = OpenTox::Parser::Spreadsheets.new
- ds = OpenTox::Dataset.new
- ds.save
+ ds = OpenTox::Dataset.new(nil,subjectid)
+ ds.save(subjectid)
parser.dataset = ds
ds = parser.load_csv(master.collect{|r| r.join(",")}.join("\n"))
- ds.save
+ ds.save(subjectid)
end