Skip to content

Non-uniform fast Fourier transform (NUFFT) #2698

@jmontalt

Description

@jmontalt

Describe the feature and the current behavior/state.
I was wondering if TensorFlow Addons might be a good home for a non-uniform fast Fourier transform (NUFFT) operator. This is a special type of fast Fourier transform that can be used for signals that are sampled non-uniformly (i.e. at points not lying in a Cartesian grid).

Although it is much less common than its uniform/Cartesian counterpart (the FFT, implemented in core TensorFlow), the operator is certainly useful for some scientific communities (e.g. medical imaging, astrophysics).

Relevant information

  • Are you willing to contribute it (yes/no): Yes
    If you wish to contribute, then read the requirements for new contributions in CONTRIBUTING.md
  • Are you willing to maintain it going forward? (yes/no): Yes
  • Is there a relevant academic paper? (if so, where): Yes, here. This is the paper for the particular algorithm I propose to incorporate in TF addons, but there are several other papers describing other NUFFT algorithms.
  • Does the relavent academic paper exceed 50 citations? (yes/no): Yes
  • Is there already an implementation in another framework? (if so, where): Yes. Here is the original C implementation (plus wrappers for other languages). Here is an existing TensorFlow port (which I maintain).
  • Was it part of tf.contrib? (if so, where): No.

Which API type would this fall under (layer, metric, optimizer, etc.)
I'm not sure any of the existing submodules is appropriate. The best home might be a new signal submodule that mirrors the one in core TensorFlow.

Who will benefit with this feature?
Scientific communities including medical imaging (MRI, CT) and astrophysics.

Any other info.

  • The proposed operator is complex and involves a large amount of C++/CUDA code (you can have a look here to get an idea). It could increase the size of TF addons wheels by a few MB.
  • The proposed inclusion would support CPU and GPU natively, but I do not have a pure Python implementation nor the bandwidth to write one anytime soon.
  • The CPU implementation depends on FFTW, released under GNU GPL. I'm not sure if there could be any licensing issues with this.
  • I'd like to understand whether there is any interest in having this in TF addons so I can plan accordingly, but if there is it will probably take a few months until a PR is ready (the current op seems to be working generally well and very efficiently, but there are still some rough edges).

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