Skip to main content

SHIFT is a scalable MPI library for computing fast Fourier transforms in python.

Project description

biglogo

Python Tests Python Version Support Version PyPI version Documentation Status GitHub repository github: stars github: forks License: MIT Code style: black zenodo: DOI

SHIFT : Scalable Helper Interface for Fourier Transforms

Introduction

SHIFT is a scalable interface library for computing FFTs with scipy. The library wraps scipy FFT routines, making it easy to keep track of the corresponding Fourier modes in Fourier space. The package can be used for very large computations with MPI distributed code possible using the mpi4py library, using a slab decomposition to perform distributed FFTs.

NOTE: SHIFT was originally designed to be a Spherical/Polar Fourier Transform library. However, the package has developed into being predominanty a helper and MPI interface for FFTs in 1D/2D/3D cartesian grids. The development of the Polar and Spherical Bessel transforms is still ongoing but is no longer the focus -- functions in shift.polar and shift.sphere should be used with extreme caution and are only available from the sphere branch of the code.

Dependencies

  • numba
  • numpy
  • scipy
  • mpi4py [Optional: enables MPI distributed processes]

Installation

SHIFT can be installed via pip:

pip install shift-fft

Or by cloning the github repository:

git clone https://github.com/knaidoo29/SHIFT.git
cd SHIFT
python setup.py build
python setup.py install

The latter of which can be used to install specific branches.

Once this is done you should be able to call SHIFT from python:

import shift

To use the MPI functionality please take a look at the documentation which instructs users how to use the SHIFT MPI object and how to run these distributed jobs successfully without errors or MPI related hanging.

Documentation

In depth documentation and tutorials are provided here.

Citation

If you use SHIFT in your work, please cite:

DOI

  @software{naidoo_shift_2025,
    author       = {Naidoo, Krishna},
    title        = {SHIFT: a scalable MPI library for computing fast Fourier transforms in python},
    year         = 2025,
    publisher    = {Zenodo},
    doi          = {10.5281/zenodo.17093446},
    url          = {https://doi.org/10.5281/zenodo.17093446}}

Support

If you have any issues with the code or want to suggest ways to improve it please open a new issue (here) or (if you don't have a github account) email krishna.naidoo.11@ucl.ac.uk.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shift_fft-1.0.4.tar.gz (35.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shift_fft-1.0.4-py3-none-any.whl (45.3 kB view details)

Uploaded Python 3

File details

Details for the file shift_fft-1.0.4.tar.gz.

File metadata

  • Download URL: shift_fft-1.0.4.tar.gz
  • Upload date:
  • Size: 35.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shift_fft-1.0.4.tar.gz
Algorithm Hash digest
SHA256 9f96c8eb95aebafba00c138a8414208658a9199b220a480ee6c033fcb0d16357
MD5 759b9a072c0b2b388acf6b1be7aa5ed0
BLAKE2b-256 3654310b971e457e0f0e973c7610f415bb7f883bc6210cff1420b20d9e530140

See more details on using hashes here.

Provenance

The following attestation bundles were made for shift_fft-1.0.4.tar.gz:

Publisher: publish-to-pypi.yml on knaidoo29/SHIFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shift_fft-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: shift_fft-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 45.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shift_fft-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5e45cbd9d7b67b122b372d82e4fc9dd2e4ff436fe8d49c3793e79403f4e33d35
MD5 f742a74b1b02f55073c9929cd854bdd8
BLAKE2b-256 b70c4a591254e11e6d5ebc2b076fd0738637b567a39f269300cafa15e176ce43

See more details on using hashes here.

Provenance

The following attestation bundles were made for shift_fft-1.0.4-py3-none-any.whl:

Publisher: publish-to-pypi.yml on knaidoo29/SHIFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page