summaryrefslogtreecommitdiff
path: root/lib/compound.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compound.rb')
-rw-r--r--lib/compound.rb27
1 files changed, 17 insertions, 10 deletions
diff --git a/lib/compound.rb b/lib/compound.rb
index 2554d54..89e9db2 100644
--- a/lib/compound.rb
+++ b/lib/compound.rb
@@ -254,13 +254,15 @@ module OpenTox
self["chemblid"]
end
-# def fingerprint_count_neighbors params
-# # TODO fix
-# neighbors = []
-# query_fingerprint = self.fingerprint params[:type]
-# training_dataset = Dataset.find(params[:training_dataset_id]).compounds.each do |compound|
-# unless self == compound
-# candidate_fingerprint = compound.fingerprint params[:type]
+=begin
+ def fingerprint_neighbors(type:, min_sim: 0.1, dataset_id:, prediction_feature_id:)
+ neighbors = []
+ dataset = Dataset.find(dataset_id)
+ query_fingerprint = self.fingerprint type
+ dataset.compounds.each do |compound|
+ values = dataset.values(compound,prediction_feature_id)
+ if values
+ candidate_fingerprint = compound.fingerprint type
# features = (query_fingerprint + candidate_fingerprint).uniq
# min_sum = 0
# max_sum = 0
@@ -274,7 +276,13 @@ module OpenTox
# end
# end
# neighbors.sort{|a,b| b.last <=> a.last}
-# end
+ sim = Algorithm::Similarity.tanimoto(query_fingerprint , candidate_fingerprint)
+ neighbors << {"_id" => compound.id, "toxicities" => values, "similarity" => sim} if sim >= min_sim
+ end
+ end
+ neighbors.sort{|a,b| b["similarity"] <=> a["similarity"]}
+ end
+=end
def fingerprint_neighbors(type:, min_sim: 0.1, dataset_id:, prediction_feature_id:)
neighbors = []
@@ -294,9 +302,8 @@ module OpenTox
neighbors << {"_id" => compound.id, "toxicities" => values, "similarity" => sim} if sim >= min_sim
end
end
- neighbors.sort!{|a,b| b["similarity"] <=> a["similarity"]}
end
- neighbors
+ neighbors.sort{|a,b| b["similarity"] <=> a["similarity"]}
end
# def physchem_neighbors params