From c90644211e214a50f6fdb3a936bf247f45f1f4be Mon Sep 17 00:00:00 2001 From: Christoph Helma Date: Fri, 13 May 2016 13:38:24 +0200 Subject: compound tests fixed --- lib/compound.rb | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'lib/compound.rb') 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 -- cgit v1.2.3