class Toxtree

Constants

RULES

Public Class Methods

predict(smiles, rules="Cramer rules") click to toggle source
# File lib/toxtree.rb, line 62
def self.predict smiles, rules="Cramer rules"
  smiles = [smiles] unless smiles.is_a? Array
  rules = [rules] unless rules.is_a? Array
  predictions = []
  input = Tempfile.new(["input",".csv"])
  output = input.path.sub("input","result")
  begin
    input.write "SMILES\n"
    input.write smiles.join("\n")
    input.close
    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]
        end
        predictions << p
      end
    end
  ensure
    input.unlink
  end
  predictions.size == 1 ? predictions[0] : predictions
end