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
|