summaryrefslogtreecommitdiff
path: root/lib/nanoparticle.rb
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2016-04-14 19:43:24 +0200
committerChristoph Helma <helma@in-silico.ch>2016-04-14 19:43:24 +0200
commit753fcc204d93d86c76860bee6e2f7d0468c3c940 (patch)
tree30fc9980de8b298ee57199c9b540408019a8976c /lib/nanoparticle.rb
parent64f1f32ced77afb278bdb7c27397c5299a73675c (diff)
features/toxicities fixed
Diffstat (limited to 'lib/nanoparticle.rb')
-rw-r--r--lib/nanoparticle.rb30
1 files changed, 19 insertions, 11 deletions
diff --git a/lib/nanoparticle.rb b/lib/nanoparticle.rb
index 6e9b0ea..0350363 100644
--- a/lib/nanoparticle.rb
+++ b/lib/nanoparticle.rb
@@ -5,12 +5,10 @@ module OpenTox
field :core, type: String
field :coating, type: Array, default: []
-
- field :toxicities, type: Hash, default: {}
- #field :features, type: Hash, default: {}
field :bundles, type: Array, default: []
- def predict
+ def nanoparticle_neighbors params
+ Dataset.find(params[:training_dataset_id]).nanoparticles
end
def add_feature feature, value
@@ -21,22 +19,32 @@ module OpenTox
toxicities[feature.id.to_s] ||= []
toxicities[feature.id.to_s] << value
else
- $logger.warn "Unknown feature type '#{feature.source}'. Value '#{value}' not inserted."
- warnings << "Unknown feature type '#{feature.source}'. Value '#{value}' not inserted."
+ warn "Unknown feature type '#{feature.source}'. Value '#{value}' not inserted."
end
end
def parse_ambit_value feature, v
+ # TODO: units, mmol/log10 conversion
if v.keys == ["loValue"]
- add_feature feature, v["loValue"]
+ #if v["loValue"].numeric?
+ add_feature feature, v["loValue"]
+ #else
+ #warn "'#{v["loValue"]}' is not a numeric value, entry ignored."
+ #end
elsif v.keys.size == 2 and v["loQualifier"] == "mean"
- add_feature feature, {:mean => v["loValue"]}
+ #add_feature feature, {:mean => v["loValue"]}
+ add_feature feature, v["loValue"]
+ warn "'#{feature.name}' is a mean value. Original data is not available."
elsif v.keys.size == 2 and v["loQualifier"] #== ">="
- add_feature feature, {:min => v["loValue"],:max => Float::INFINITY}
+ #add_feature feature, {:min => v["loValue"],:max => Float::INFINITY}
+ warn "Only min value available for '#{feature.name}', entry ignored"
elsif v.keys.size == 2 and v["upQualifier"] #== ">="
- add_feature feature, {:max => v["upValue"],:min => -Float::INFINITY}
+ #add_feature feature, {:max => v["upValue"],:min => -Float::INFINITY}
+ warn "Only max value available for '#{feature.name}', entry ignored"
elsif v.size == 4 and v["loQualifier"] and v["upQualifier"]
- add_feature feature, {:min => v["loValue"],:max => v["upValue"]}
+ #add_feature feature, {:min => v["loValue"],:max => v["upValue"]}
+ add_feature feature, [v["loValue"],v["upValue"]].mean
+ warn "Using mean value of range #{v["loValue"]} - #{v["upValue"]} for '#{feature.name}'. Original data is not available."
elsif v == {} # do nothing
else
$logger.warn "Cannot parse Ambit eNanoMapper value '#{v}' for feature '#{feature.name}'."