Separate ptychography cost function implementations from the operator classes, so that they can be used independent of operator declaration. Also allows using CuPy fuse to reduce the number of kernel launches.
Approach
Separate out these functions into a new module with functional API. Keep them located in the operators module to prevent circular imports.
Pre-Merge Checklists
Submitter
[x] Write a helpfully descriptive pull request title.
[x] Organize changes into logically grouped commits with descriptive commit messages.
[x] Document all new functions.
[ ] Click 'details' on the readthedocs check to view the updated docs.
[x] Write tests for new functions or explain why they are not needed.
[x] Address any complaints from pep8speaks.
Reviewer
[ ] Actually read all of the code.
[ ] Run the new code yourself; the included tests should make this easy.
[ ] Write a summary of the changes as you understand them.
Purpose
Separate ptychography cost function implementations from the operator classes, so that they can be used independent of operator declaration. Also allows using CuPy fuse to reduce the number of kernel launches.
Approach
Separate out these functions into a new module with functional API. Keep them located in the operators module to prevent circular imports.
Pre-Merge Checklists
Submitter
Reviewer