SHIFT : Scalable High-level Interface for Fourier Transforms
Introduction
SHIFT is a lightweight Python library designed to simplify Fourier transforms and spectral calculations on regular grids. Built around SciPy's FFT routines, SHIFT provides a convenient interface for computing Fourier, discrete cosine (DCT), and discrete sine (DST) transforms in one, two, and three dimensions, alongside utilities for constructing grids and their corresponding Fourier-space modes.
A central motivation behind SHIFT is to make parallel Fourier
transforms easier to install, use, and integrate into scientific
applications. Unlike implementations requiring FFTW and additional
compiled extensions, SHIFT uses SciPy's FFT backend and supports
distributed transforms through mpi4py, employing an MPI slab
decomposition. This avoids the need for a separate FFTW installation
while retaining compatibility with standard scientific Python
environments.
In addition to spectral transforms, SHIFT provides utilities for MPI communication and distributed array operations, making it suitable for integration into larger scientific computing workflows.
NOTE: SHIFT was originally conceived as a framework for Fourier transforms in Cartesian, polar, and spherical coordinate systems. Current development focuses on Cartesian spectral transforms and MPI-based scientific computing. Experimental polar and spherical transform implementations are available in the
spherebranch, but are not part of the supported release and should be used with caution. Further development of these capabilities is planned.
Dependencies
numbanumpyscipympi4py[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
pip 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.
License
SHIFT is released under the MIT License. See LICENSE for details.
Citation
If you use SHIFT in your work, please cite:
@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.
Metadata
Release files for shift-fft 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| shift_fft-1.1.1.tar.gz | 44.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shift_fft-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 98.9 kB
Release files / shift_fft-1.1.1.tar.gz
| Download URL | shift_fft-1.1.1.tar.gz |
|---|---|
| Size | 44.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6d373350f33fa8706c615cada5c8e1b4412828c69c5aefdb7c92bc2c4401e363
|
|
BLAKE2b-256 checksum How to use checksums |
5c9fad333919e9b4b35cb03e09bbaa32b9dbff67afc7f21ed1a32765fb5b2dce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / shift_fft-1.1.1-py3-none-any.whl
| Download URL | shift_fft-1.1.1-py3-none-any.whl |
|---|---|
| Size | 54.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e780949e1ffb29424f57bb634103811f4c3bfdd81f7738cbd28732c95a430e1f
|
|
BLAKE2b-256 checksum How to use checksums |
aab06177ea9bd3acc8f028b228804d60057f9df4e488509b7e1a15a7b07e8caf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log