Skip to main content

biglogo

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

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 sphere branch, but are not part of the supported release and should be used with caution. Further development of these capabilities is planned.

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
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:

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.

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)

Source distribution for shift-fft 1.1.1
File Size Uploaded
shift_fft-1.1.1.tar.gz 44.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shift-fft 1.1.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page