summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgebele <gebele@in-silico.ch>2017-10-12 11:04:30 +0000
committergebele <gebele@in-silico.ch>2017-10-12 11:04:30 +0000
commita361230e88d7abe6b61139467e1514578399da87 (patch)
tree18d858def76c92e98a0c59a2d11cab655f18061b
parent7d9bea63c8ce34977fc73aa1374a5b33b70258d3 (diff)
changes to catch unpredictable compoundsHEADmaster
-rw-r--r--lib/toxtree.rb24
-rw-r--r--test/toxtree.rb14
2 files changed, 31 insertions, 7 deletions
diff --git a/lib/toxtree.rb b/lib/toxtree.rb
index f395968..3677071 100644
--- a/lib/toxtree.rb
+++ b/lib/toxtree.rb
@@ -72,14 +72,24 @@ class Toxtree
rules.each do |name|
`cd #{File.join(File.dirname(__FILE__),"..","Toxtree-v2.6.13","Toxtree")}; java -jar Toxtree-2.6.13.jar -i #{input.path} -m #{RULES[name][:java_class]} -n -o #{output}`
prediction = CSV.read(output)
- header = prediction.shift
- header.pop # remove last empty element
- prediction.each do |line|
- p = {"rule" => name}
- header.each_with_index do |h,i|
- p[h] = line[i]
+ unless prediction.empty?
+ header = prediction.shift
+ header.pop # remove last empty element
+ smiles.each do |smi|
+ line = prediction.flatten.include?(smi) ? prediction.find{|array| array[0 ]== smi} : ["nil","nil","nil","nil"]
+ p = {"rule" => name}
+ header.each_with_index do |h,i|
+ p[h] = line[i]
+ end
+ predictions << p
+ end
+ else
+ smiles.each do |smi|
+ p = {"rule" => name}
+ p["SMILES"] = smi
+ p[name] = nil
+ predictions << p
end
- predictions << p
end
end
ensure
diff --git a/test/toxtree.rb b/test/toxtree.rb
index b1d6274..772eee8 100644
--- a/test/toxtree.rb
+++ b/test/toxtree.rb
@@ -22,5 +22,19 @@ class ToxtreeTest < MiniTest::Test
skip
end
+ def test_no_prediction
+ assert_equal Toxtree.predict("O=S(=O)(Oc1ccccc1)CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCS(=O)(=O)Oc1ccccc1"), {"rule"=>"Cramer rules", "SMILES"=>"O=S(=O)(Oc1ccccc1)CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCS(=O)(=O)Oc1ccccc1", "Cramer rules"=>nil}
+ end
+
+ def test_no_prediction_array
+ assert_equal Toxtree.predict(["O=S(=O)(Oc1ccccc1)CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCS(=O)(=O)Oc1ccccc1","O=S(=O)(Oc1ccccc1)CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCS(=O)(=O)Oc1ccccc1"]), [{"rule"=>"Cramer rules", "SMILES"=>"O=S(=O)(Oc1ccccc1)CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCS(=O)(=O)Oc1ccccc1", "Cramer rules"=>nil}, {"rule"=>"Cramer rules", "SMILES"=>"O=S(=O)(Oc1ccccc1)CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCS(=O)(=O)Oc1ccccc1", "Cramer rules"=>nil}]
+ end
+
+ def test_with_and_without_prediction_array
+ predictions = Toxtree.predict(["c1ccccc1NN","O=S(=O)(Oc1ccccc1)CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCS(=O)(=O)Oc1ccccc1"])
+ assert_equal predictions.size, 2
+ assert_equal predictions, [{"rule"=>"Cramer rules", "SMILES"=>"c1ccccc1NN", "CRAMERFLAGS"=>nil, "Cramer rules"=>"High (Class III)", "toxTree.tree.cramer.CramerTreeResult"=>"1N,2N,3N,5N,6N,7N,16N,17N,19N,23Y,27Y,28N,30Y,31N,32N,22N,33N"}, {"rule"=>"Cramer rules", "SMILES"=>"nil", "CRAMERFLAGS"=>"nil", "Cramer rules"=>"nil", "toxTree.tree.cramer.CramerTreeResult"=>"nil"}]
+ end
+
end