diff options
author | Christoph Helma <helma@in-silico.ch> | 2015-08-10 13:26:06 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2015-08-10 13:26:06 +0200 |
commit | b7cd3ebbb858a8891c35c45896f1bdd525f3534e (patch) | |
tree | a9df6b1f4fc15f2f953e9a23c6dd00b74a967754 /lib/algorithm.rb | |
parent | 23ecfc6fa5ae4913e5cd17b7d58432d1f88d780c (diff) |
algorithm libraries added, fminer tests pass
Diffstat (limited to 'lib/algorithm.rb')
-rw-r--r-- | lib/algorithm.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/algorithm.rb b/lib/algorithm.rb new file mode 100644 index 0000000..113f847 --- /dev/null +++ b/lib/algorithm.rb @@ -0,0 +1,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 + |