SHIFT is a scalable MPI library for computing fast Fourier transforms in python.
Project description
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.polarandshift.sphereshould be used with extreme caution and are only available from thespherebranch of the code.
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
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:
@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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f96c8eb95aebafba00c138a8414208658a9199b220a480ee6c033fcb0d16357
|
|
| MD5 |
759b9a072c0b2b388acf6b1be7aa5ed0
|
|
| BLAKE2b-256 |
3654310b971e457e0f0e973c7610f415bb7f883bc6210cff1420b20d9e530140
|
Provenance
The following attestation bundles were made for shift_fft-1.0.4.tar.gz:
Publisher:
publish-to-pypi.yml on knaidoo29/SHIFT
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shift_fft-1.0.4.tar.gz -
Subject digest:
9f96c8eb95aebafba00c138a8414208658a9199b220a480ee6c033fcb0d16357 - Sigstore transparency entry: 498868531
- Sigstore integration time:
-
Permalink:
knaidoo29/SHIFT@bd6ec2d3b3c3ac62c4274947947c2e5ccc713179 -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/knaidoo29
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@bd6ec2d3b3c3ac62c4274947947c2e5ccc713179 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e45cbd9d7b67b122b372d82e4fc9dd2e4ff436fe8d49c3793e79403f4e33d35
|
|
| MD5 |
f742a74b1b02f55073c9929cd854bdd8
|
|
| BLAKE2b-256 |
b70c4a591254e11e6d5ebc2b076fd0738637b567a39f269300cafa15e176ce43
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
shift_fft-1.0.4-py3-none-any.whl -
Subject digest:
5e45cbd9d7b67b122b372d82e4fc9dd2e4ff436fe8d49c3793e79403f4e33d35 - Sigstore transparency entry: 498868554
- Sigstore integration time:
-
Permalink:
knaidoo29/SHIFT@bd6ec2d3b3c3ac62c4274947947c2e5ccc713179 -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/knaidoo29
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@bd6ec2d3b3c3ac62c4274947947c2e5ccc713179 -
Trigger Event:
release
-
Statement type: