summaryrefslogtreecommitdiff
path: root/lib/algorithm.rb
blob: 113f8478d986c7a959e036bd91ee77dbb75df47d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module OpenTox

  module Algorithm 

    # Generic method to execute algorithms
    # Algorithms should:
    #   - accept a Compound, an Array of Compounds or a Dataset as first argument
    #   - optional parameters as second argument
    #   - return an object corresponding to the input type as result (eg. Compound -> value, Array of Compounds -> Array of values, Dataset -> Dataset with values
    # @param [OpenTox::Compound,Array,OpenTox::Dataset] Input object
    # @param [Hash] Algorithm parameters
    # @return Algorithm result
    def self.run algorithm, object, parameters=nil
      bad_request_error "Cannot run '#{algorithm}' algorithm. Please provide an OpenTox::Algorithm." unless algorithm =~ /^OpenTox::Algorithm/
      klass,method = algorithm.split('.')
      parameters.nil? ?  Object.const_get(klass).send(method,object) : Object.const_get(klass).send(method,object, parameters)
    end

  end
end