Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mrphys/tensorflow-nufft

Fast, Native Non-Uniform Fast Fourier Transform for TensorFlow
https://github.com/mrphys/tensorflow-nufft

cpp machine-learning ml non-uniform-fast-fourier-transform nufft python tensorflow

Last synced: about 2 months ago
JSON representation

Fast, Native Non-Uniform Fast Fourier Transform for TensorFlow

Awesome Lists containing this project

README

        

# TensorFlow NUFFT

[![PyPI](https://badge.fury.io/py/tensorflow-nufft.svg)](https://badge.fury.io/py/tensorflow-nufft)
[![Build](https://github.com/mrphys/tensorflow-nufft/actions/workflows/build-package.yml/badge.svg)](https://github.com/mrphys/tensorflow-nufft/actions/workflows/build-package.yml)
[![Docs](https://img.shields.io/badge/api-reference-blue.svg)](https://mrphys.github.io/tensorflow-nufft)
[![DOI](https://zenodo.org/badge/382718757.svg)](https://zenodo.org/badge/latestdoi/382718757)

TensorFlow NUFFT is a fast, native non-uniform fast Fourier transform op for
TensorFlow. It provides:

- Fast CPU/GPU kernels. The TensorFlow framework automatically handles device
placement as usual.
- A simple, well-documented Python interface.
- Gradient definitions for automatic differentiation.
- Shape functions to support static shape inference.

The underlying algorithm is based on the NUFFT implementation by the Flatiron
Institute. Please refer to
[FINUFFT](https://github.com/flatironinstitute/finufft/) and
[cuFINUFFT](https://github.com/flatironinstitute/cufinufft/) for more details.

## Installation

You can install TensorFlow NUFFT with ``pip``:

```
pip install tensorflow-nufft
```

Note that only Linux wheels are currently being provided.

### TensorFlow compatibility

Each TensorFlow NUFFT release is compiled against a specific version of
TensorFlow. To ensure compatibility, it is recommended to install matching
versions of TensorFlow and TensorFlow NUFFT according to the table below.

| TensorFlow NUFFT Version | TensorFlow Compatibility | Release Date |
| ------------------------ | ------------------------ | ------------ |
| v0.12.0 | v2.11.x | Nov 27, 2022 |
| v0.11.0 | v2.10.x | Oct 12, 2022 |
| v0.10.1 | v2.10.x | Sep 26, 2022 |
| v0.10.0 | v2.10.x | Sep 7, 2022 |
| v0.9.0 | v2.9.x | Sep 5, 2022 |
| v0.8.1 | v2.9.x | Jun 23, 2022 |
| v0.8.0 | v2.9.x | May 20, 2022 |
| v0.7.3 | v2.8.x | May 4, 2022 |
| v0.7.2 | v2.8.x | Apr 29, 2022 |
| v0.7.1 | v2.8.x | Apr 6, 2022 |
| v0.7.0 | v2.8.x | Feb 8, 2022 |
| v0.6.0 | v2.7.x | Jan 27, 2022 |
| v0.5.0 | v2.7.x | Dec 12, 2021 |
| v0.4.0 | v2.7.x | Nov 8, 2021 |
| v0.3.2 | v2.6.x | Aug 18, 2021 |
| v0.3.1 | v2.6.x | Aug 18, 2021 |
| v0.3.0 | v2.6.x | Aug 13, 2021 |

## Usage

Once installed, you can perform NUFFTs in your TensorFlow code simply as:

```python
import tensorflow_nufft as tfft

outputs = tfft.nufft(inputs, points)
```

See the documentation for the
[`tfft.nufft`](https://mrphys.github.io/tensorflow-nufft/api_docs/tfft/nufft)
function to learn more about the different parameters.

## Documentation

Visit the [docs](https://mrphys.github.io/tensorflow-nufft/) for the API
reference and examples of usage.

## Issues

If you use this package and something does not work as you expected, please
[file an issue](https://github.com/mrphys/tensorflow-nufft/issues/new)
describing your problem. We're here to help!

## Credits

If you find this software useful in your research, please
[cite us](https://doi.org/10.5281/zenodo.5198288).

## Contributors

See CONTRIBUTORS for a list of people who have contributed to this project.
Thank you!

All contributions are welcome. If there is an issue you would like to address
or a feature you would like to add, you might want to begin by commenting on
the corresponding issue (or if it doesn't exist yet, by creating a new issue).