Some items to consider both in terms of boosting the sensitivity of 2DTM, improving general accessibility of the method, and increasing the speed/efficiency of the code.
Items that need completed before releasing the codebase to a general audience.
- Test GPU code (fix all bugs) then benchmark speed
- Tidy up the tt2DTM code a lot
- Put in the pydantic models for input/output
- Test the program input/outputs
- Write program for make template results
- Write program for refine template
- Create example notebook for how to use Pydantic models
- Write an example python script for running a single match template job
- Deploy some rudimentary documentation on readthedocs
- Write basic unit tests for the Pydantic models & associated methods
- Write basic unit tests for the pre-processing steps/functions
- Add complexity limit within pre-commit hooks (improves readability of functions)
- Ensure
pyproject.toml
has strict versioning requirements which work across platform(s) -- should we target anything but Linux?
Items related to increasing the speed of the template matching process, especially for the whole orientation search.
- Write Vulkan and/or CUDA code and compare speed
[ ] Test reducing the floating point precision--> PyTorch natively does not support float16/complex32 operations for FFTs. Would need to have non-torch backend to test this.- Binning the input micrograph to a larger pixel size based on the maximum resolution. Will need to benchmark sensitivity.
- Apply Fourier filters to micrograph only (creating a stack of micrographs to search over) thus reducing the number of FFTs for templates.
- Compare results with and without padding for Fourier slice extraction, see what padding is minimal.
- Some testing with Fourier filters:
- Try whitening filter with amplitude vs intensity
- Smoothing vs unsmoothed whitening filter
- Phase randomization above certain resolution
- Hard high-pass filter
- Smoothed band-pass filter (down weighting low resolution information, but not entirely removing it)
- A more explicit weighting function like gisSPA
- Other correlation metrics other than the maximum cross-correlation
- Per particle motion correction
- Tilt series alignment refinement
- Try signal subtraction of refined targets
- Put in the p-score metric
- Try things other than maximal cross correlation
- Re-dose weight particle movies