Skip to content

ENH Wavelet module #1011

Open
Open
@eickenberg

Description

This of course has been discussed for ages, but it would be good to make this happen.

It will come with a bunch of other refactoring. I'll start with an incomplete list here and will update as other things come up.

TO DO:

  • Add global backend functionality. This should be brought in, with minimal modification, from https://github.com/gallantlab/himalaya/tree/main/himalaya/backend or https://github.com/tensorly/tensorly/tree/main/tensorly/backend . Our scattering-specific backends should then build on these, or become utils
  • Add wavelet filter banks computed using the backends. This will greatly speed up filter generation, if we can do it on GPU and code it slightly better than the Morlet filter bank. My suggestion would be to implement a FilterBank class that can compute and store its filters. It could hold an old-school data-structure pointing to these filters so that the traditional scattering function can handle it, or have an elaborate __getitem__ function making it behave like the traditional list of dict filter bank
  • Implement various forms WaveletTransform that can yield/iterate over (groups of) filters, but that also have a forward (or equivalent) method that is not iterative. There should be FourierWaveletTransform implementing e.g. Morlet and Harmonic wavelets, but there should also be a class implementing HaarWaveletTransform to ensure this abstraction does what we want
    • Do this for 2D
    • Do this for 3D
    • Do this for the sphere after checking and making sure this also fits in the framework

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions