Implement the extended ptychographic iterative engine (ePIE) algorithm based on Maiden's 2009 paper.
Approach
Started with the lstsq_grad implementation because they are similar, but changed the update directions and gradients accordingly. There are a few significant differences between the paper and this implementation:
This implementation allows batches of more than one pattern to be processed simultaneously. In this case, the object/probe updates are averaged across all the positions in the batch.
This implementation allows for multi-probe illumination. In this case, the wavefront updates are based on the gradients of the Gaussian noise model as implemented in the other methods. Then the probes are updated in a simultaneous mode i.e. each mode uses the same object patches to compute its own update and the object updates from all probes are averaged.
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.
[x] Write tests for new functions or explain why they are not needed.
Purpose
Implement the extended ptychographic iterative engine (ePIE) algorithm based on Maiden's 2009 paper.
Approach
Started with the lstsq_grad implementation because they are similar, but changed the update directions and gradients accordingly. There are a few significant differences between the paper and this implementation:
Pre-Merge Checklists
Submitter
yapf
to format python code.Reviewer