summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2012-04-13 15:07:21 +0200
committerAndreas Maunz <andreas@maunz.de>2012-04-13 15:07:21 +0200
commitde3da90232f325735b8d05d9da05cc57326c2b67 (patch)
tree27332a3104e8412645bdd2a76fbccbb1fdcb53a2
parent3310cf7a4bd283c3a8c8923e3d0a18f65864156c (diff)
parent35448f7bd136b7f3ce82a784e2c433bdea2b9880 (diff)
Merge branch 'jl' into pc_unified_from_jl
-rw-r--r--lib/model.rb40
-rw-r--r--lib/transform.rb6
2 files changed, 35 insertions, 11 deletions
diff --git a/lib/model.rb b/lib/model.rb
index 30c7b97..f8d98ba 100644
--- a/lib/model.rb
+++ b/lib/model.rb
@@ -103,7 +103,7 @@ module OpenTox
include Model
- attr_accessor :compound, :prediction_dataset, :features, :effects, :activities, :p_values, :fingerprints, :feature_calculation_algorithm, :similarity_algorithm, :prediction_algorithm, :subjectid, :value_map, :compound_fingerprints, :feature_calculation_algorithm, :neighbors
+ attr_accessor :compound, :prediction_dataset, :features, :effects, :activities, :p_values, :fingerprints, :feature_calculation_algorithm, :similarity_algorithm, :prediction_algorithm, :subjectid, :value_map, :compound_fingerprints, :feature_calculation_algorithm, :neighbors, :compounds
def initialize(uri=nil)
if uri
@@ -169,12 +169,13 @@ module OpenTox
lazar.prediction_algorithm = hash["prediction_algorithm"] if hash["prediction_algorithm"]
lazar.subjectid = hash["subjectid"] if hash["subjectid"]
lazar.value_map = hash["value_map"] if hash["value_map"]
+ lazar.compounds = hash["compounds"] if hash["compounds"]
lazar
end
def to_json
- Yajl::Encoder.encode({:uri => @uri,:metadata => @metadata, :compound => @compound, :prediction_dataset => @prediction_dataset, :features => @features, :effects => @effects, :activities => @activities, :p_values => @p_values, :fingerprints => @fingerprints, :feature_calculation_algorithm => @feature_calculation_algorithm, :similarity_algorithm => @similarity_algorithm, :prediction_algorithm => @prediction_algorithm, :subjectid => @subjectid, :value_map => @value_map})
+ Yajl::Encoder.encode({:uri => @uri,:metadata => @metadata, :compound => @compound, :prediction_dataset => @prediction_dataset, :features => @features, :effects => @effects, :activities => @activities, :p_values => @p_values, :fingerprints => @fingerprints, :feature_calculation_algorithm => @feature_calculation_algorithm, :similarity_algorithm => @similarity_algorithm, :prediction_algorithm => @prediction_algorithm, :subjectid => @subjectid, :value_map => @value_map, :compounds => @compounds})
end
def run( params, accept_header=nil, waiting_task=nil )
@@ -314,6 +315,16 @@ module OpenTox
@prediction_dataset.add @compound.uri, feature_uri, true
f+=1
end
+ elsif @feature_calculation_algorithm == "Substructure.lookup"
+ f = 0
+ @compound_features.each do |feature, value|
+ features[feature] = feature
+ @prediction_dataset.add_feature(feature, {
+ RDF.type => [OT.NumericFeature]
+ })
+ @prediction_dataset.add @compound.uri, feature, value
+ f+=1
+ end
else
@compound_features.each do |feature|
features[feature] = feature
@@ -337,15 +348,26 @@ module OpenTox
else
feature_uri = feature
end
- @prediction_dataset.add neighbor[:compound], feature_uri, true
+ if @feature_calculation_algorithm == "Substructure.lookup"
+ @prediction_dataset.add neighbor[:compound], feature_uri, @fingerprints[neighbor[:compound]][feature_uri]
+ else
+ @prediction_dataset.add neighbor[:compound], feature_uri, true
+ end
+
unless features.has_key? feature
features[feature] = feature_uri
- @prediction_dataset.add_feature(feature_uri, {
- RDF.type => [OT.Substructure],
- OT.smarts => feature,
- OT.pValue => @p_values[feature],
- OT.effect => @effects[feature]
- })
+ if @feature_calculation_algorithm == "Substructure.lookup"
+ @prediction_dataset.add_feature(feature_uri, {
+ RDF.type => [OT.NumericFeature]
+ })
+ else
+ @prediction_dataset.add_feature(feature_uri, {
+ RDF.type => [OT.Substructure],
+ OT.smarts => feature,
+ OT.pValue => @p_values[feature],
+ OT.effect => @effects[feature]
+ })
+ end
f+=1
end
end
diff --git a/lib/transform.rb b/lib/transform.rb
index cb530a3..8632f6c 100644
--- a/lib/transform.rb
+++ b/lib/transform.rb
@@ -490,8 +490,10 @@ module OpenTox
@cmpds = []; @fps = []; @acts = []; @n_prop = []; @q_prop = []
- @model.fingerprints.each { |fp|
- cmpd = fp[0]; fp = fp[1]
+ # Major BUG! Must loop over @model.compounds, hash is unordered!
+ # @model.fingerprints.each
+ @model.compounds.each { |cmpd|
+ fp = @model.fingerprints[cmpd]
if @model.activities[cmpd] # row good
acts = @model.activities[cmpd]; @acts += acts
LOGGER.debug "#{acts.size} activities for '#{cmpd}'" if acts.size > 1