diff options
author | BonfaceKilz | 2021-08-16 11:03:09 +0300 |
---|---|---|
committer | GitHub | 2021-08-16 11:03:09 +0300 |
commit | 70ed53f03f3d74877d5bc71e49e3a1e65af8b15f (patch) | |
tree | 7bfcf487fe81bbb7332b8b67afe80f7e970ce167 /gn3/function_helpers.py | |
parent | 95eb105421d7fbe0b0ebf1de2f89a558eecbf0da (diff) | |
parent | 3420e378a614f1ecec85f633cd9f202764a54eda (diff) | |
download | genenetwork3-70ed53f03f3d74877d5bc71e49e3a1e65af8b15f.tar.gz |
Merge pull request #32 from genenetwork/heatmap_decompose_db_retrieval
Heatmap decompose db retrieval
Diffstat (limited to 'gn3/function_helpers.py')
-rw-r--r-- | gn3/function_helpers.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gn3/function_helpers.py b/gn3/function_helpers.py new file mode 100644 index 0000000..397b2da --- /dev/null +++ b/gn3/function_helpers.py @@ -0,0 +1,36 @@ +""" +This module will contain helper functions that should assist in maintaining a +mostly functional way of programming. + +It will also contain miscellaneous functions that can be used globally, and thus +do not fit well in any other module. + +FUNCTIONS: +compose: This function is used to compose multiple functions into a single + function. It passes the results of calling one function to the other until + all the functions to be composed are called. +""" +from functools import reduce + +def compose(*functions): + """Compose multiple functions into a single function. + + The utility in this function is not specific to this module, and as such, + this function can, and probably should, be moved to a more global module. + + DESCRIPTION: + Given `cfn = compose(f_1, f_2, ... f_(n-1), f_n )`, calling + `cfn(arg_1, arg_2, ..., arg_m)` should call `f_n` with the arguments passed + to `cfn` and the results of that should be passed as arguments to `f_(n-1)` + and so on until `f_1` is called with the results of the cumulative calls and + that is the result of the entire chain of calls. + + PARAMETERS: + functions: a variable argument list of function. + """ + def composed_function(*args, **kwargs): + return reduce( + lambda res, fn: fn(res), + reversed(functions[:-1]), + functions[-1](*args, **kwargs)) + return composed_function |