summaryrefslogtreecommitdiff
path: root/lib/neighbor.rb
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2015-08-10 13:26:06 +0200
committerChristoph Helma <helma@in-silico.ch>2015-08-10 13:26:06 +0200
commitb7cd3ebbb858a8891c35c45896f1bdd525f3534e (patch)
treea9df6b1f4fc15f2f953e9a23c6dd00b74a967754 /lib/neighbor.rb
parent23ecfc6fa5ae4913e5cd17b7d58432d1f88d780c (diff)
algorithm libraries added, fminer tests pass
Diffstat (limited to 'lib/neighbor.rb')
-rw-r--r--lib/neighbor.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/neighbor.rb b/lib/neighbor.rb
new file mode 100644
index 0000000..a2c28d4
--- /dev/null
+++ b/lib/neighbor.rb
@@ -0,0 +1,25 @@
+module OpenTox
+ module Algorithm
+ class Neighbor
+
+ def self.fingerprint_similarity compound, params={}
+ compound.neighbors params[:min_sim]
+ end
+
+ def self.fminer_similarity compound, params
+ feature_dataset = Dataset.find params[:feature_dataset_id]
+ query_fingerprint = Algorithm::Descriptor.smarts_match(compound, feature_dataset.features.collect{|f| f.smarts} )
+ neighbors = []
+
+ # find neighbors
+ feature_dataset.data_entries.each_with_index do |fingerprint, i|
+ sim = Algorithm::Similarity.tanimoto fingerprint, query_fingerprint
+ if sim > params[:min_sim]
+ neighbors << [feature_dataset.compound_ids[i],sim] # use compound_ids, instantiation of Compounds is too time consuming
+ end
+ end
+ neighbors
+ end
+ end
+ end
+end