Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wavelet-related tests and corresponding fixes to WaveletOperator and WaveletNorm #1665

Merged
merged 17 commits into from
Jan 31, 2024

Conversation

tommheik
Copy link
Contributor

Describe your changes

  • WaveletOperator
    • Fixed some geometry checks
    • Correlation keywords are no longer case specific
    • Computes the norm for non-orthogonal wavelets as well (although this will be incorrect due to incorrect adjoint)
  • WaveletNorm
  • test_wavelets.py
    • Created a starting point for wavelet related tests, probably does not work in CIL straight away

Describe any testing you have performed

  • Tests for variety of domain and range geometry sizes
    • With different correlations (some 1D geometry + correlation tests missing but low priority)
    • With different axes
    • Odd and even sizes
    • Exhausting checks for different amount of padding when using different wavelets
  • Test for perfect reconstruction
    • Exhausting checks for different wavelets
    • Test some known signals
    • Test for some well known behaviour with different bnd_cond
  • Tests for adjoint (with bnd_cond='periodization' since it gives the most faithful adjoint
    • Exhausting checks for different orthogonal wavelets (non-orthogonal wavelets skipped for now)
    • Exhausting checks for non-orthogonal wavelets (skipped since adjoint is not properly implemented)
  • WaveletNorm value
  • Proximal values for different tau
    • Extra checks for silly sign errors/bugs
  • Convex conjugate for different inputs

TODO

  • Implement non-orthogonal wavelet adjoint (I have an idea for this, should be relatively easy). For example PDHG should then work with those wavelets too
  • Anything complex valued
  • More testing?

- Added string-based `correlation` keywords for defining decomposition `axes`. Specifying `axes` still takes priority though. This is similar behaviour as `GradientOperator`
- Added string-based convolution boundary condition `bnd_cond` to set the wavelet extension mode. This is similar behaviour as `GradientOperator`
- Removed special case for `VectorGeometry`, the user should give the geometry as with 2D and 3D. There was no reason to have this behaviour.
The size of `range_geometry` is now checked upon initialization to make sure its size matches the wavelet coefficient array size.
- Now correctly checks if the wavelet is orthogonal (previously biorthogonal wavelets would be treated wrong)
- Now computes the norm for every other wavelet type using power_method
Starting point for different Wavelet tests. This file will most likely NOT run as is in CIL
@MargaretDuff MargaretDuff merged commit e03d823 into TomographicImaging:wavelet_regularisation Jan 31, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants