When the various algorithms are defined in op_flow.py, the propagations are considered as separate from the algorithms themselves:
|
algs = {'ER': ('to_reciprocal_space', 'modulus', 'to_direct_space', 'er'), |
|
'HIO': ('to_reciprocal_space', 'modulus', 'to_direct_space', 'hio'), |
|
'ERpc': ('to_reciprocal_space', 'pc_modulus', 'to_direct_space', 'er'), |
|
'HIOpc': ('to_reciprocal_space', 'pc_modulus', 'to_direct_space', 'hio'), |
|
} |
I wonder if it might be easier to implement other algorithms if that were not the case. I'm specifically thinking of Table 1 in this paper, in which the entire update function is defined using projection operators.
When the various algorithms are defined in
op_flow.py, the propagations are considered as separate from the algorithms themselves:cohere/cohere_core/controller/op_flow.py
Lines 7 to 11 in 7367cd1
I wonder if it might be easier to implement other algorithms if that were not the case. I'm specifically thinking of Table 1 in this paper, in which the entire update function is defined using projection operators.