Differentiable probe parametrization from microscope parameters
The aberrations in the probe wavefunction are described simply in terms of the coefficients: see for example https://www.globalsino.com/EM/page3740.html. Instead of estimating the entire probe wavefunction, we could instead use this much reduced representation up to say fifth order. This would have a few advantages:
- Interpretability. This is a form of calibration in which we derive the aberration information directly from the measurements.
- Quicker convergence. This parametrization has at most 26 degrees of freedom compared to 2HW when we estimate a complex HxW probe wavefunction directly.
- Computational efficiency. In approaches like #10, #11, and #9 it would be great to be able to compute any probe Fourier component in closed form, which we can do using the aberration coefficients directly.
Plan
We currently are building the Microscope
class which describes all the information needed to create these probes. We can then use pyms to generate the probes themselves, but that uses numpy. In order to use gradient-based optimization, we should go ahead and create a .probe()
method that generates a probe of a given size and pixel spacing using pure PyTorch.