High-performance vectorized FFTLog implementation for fast Hankel transforms in pure Python
Project description
fftloggin
Vectorized FFTLog in pure python
Installation
# Install with uv
uv add fftloggin
# Or with pip
pip install fftloggin
Optional PyFFTW backend
If you want FFTW-based plans and buffer reuse, install the optional dependency and use the PyFFTW backend.
# With uv
uv add "fftloggin[fftw]"
# Or with pip
pip install "fftloggin[fftw]"
from fftloggin import FFTLog, PyFFTWBackend
from fftloggin.kernels import BesselJKernel
fftlog = FFTLog(kernel=BesselJKernel(0), n=128, dlog=0.05, backend=PyFFTWBackend())
Development
Setup
# Clone the repository
git clone https://github.com/binado/fftloggin.git
cd fftloggin
# Install dependencies
uv sync --all-groups
Running Tests
# Run standard tests (fast)
uv run pytest
# Run all tests excluding benchmarks
uv run pytest -m "not benchmark"
# Run with verbose output
uv run pytest -v
Benchmark Tests
Benchmark tests compare the Python implementation against the original Fortran FFTLog code. These tests are optional and require a Fortran compiler.
Prerequisites
- Have
gfortraninstalled on your PATH
Running Benchmarks
# Generate benchmark reference files
python scripts/generate_benchmarks.py
# Run benchmark tests
uv run pytest --run-benchmarks
# Or run only benchmark tests
uv run pytest tests/test_benchmark.py --run-benchmarks -v
# Generate and run benchmarks in one command
uv run pytest --generate-benchmarks --run-benchmarks
Regenerating Benchmarks
If you need to regenerate the benchmark files:
# Remove old benchmarks
rm -rf tests/benchmarks/*.txt
# Generate fresh benchmarks
python scripts/generate_benchmarks.py
Linting
# Check code style
uv run ruff check .
# Format code
uv run ruff format .
References
- Hamilton, A. J. S. "Uncorrelated modes of the non-linear power spectrum." Monthly Notices of the Royal Astronomical Society 312.2 (2000): 257-284. [astro-ph/9905191]
- Assassi, Valentin, Marko Simonović, and Matias Zaldarriaga. "Efficient Evaluation of Cosmological Angular Statistics." arXiv preprint arXiv:1705.05022 (2017). [1705.05022]
- Schöneberg, Nils, et al. "Beyond the traditional Line-of-Sight approach of cosmological angular statistics." Journal of Cosmology and Astroparticle Physics 2018.10 (2018): 047. [1807.09540]
- Fang, Xiao, et al. "Beyond Limber: Efficient computation of angular power spectra for galaxy clustering and weak lensing." Journal of Cosmology and Astroparticle Physics 2020.05 (2020): 010. [1911.11947]
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 fftloggin-0.3.0.tar.gz.
File metadata
- Download URL: fftloggin-0.3.0.tar.gz
- Upload date:
- Size: 152.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7611f405ee036d2b12a2a72ad819a2700d46cba0396302a63e4ab22dd8dcd49
|
|
| MD5 |
5dae7140a63283ab443743c9b39028a7
|
|
| BLAKE2b-256 |
a469da7d86ddd0e982e5a2ec2a3a8788e54748397ed002758dbdfb2e06404328
|
File details
Details for the file fftloggin-0.3.0-py3-none-any.whl.
File metadata
- Download URL: fftloggin-0.3.0-py3-none-any.whl
- Upload date:
- Size: 27.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e64b776620cd98d800a91297bb5a1abad25510498f19e8e4d08a6621f436fb9f
|
|
| MD5 |
7590b66419d0bd53d60dc61af9a3ff29
|
|
| BLAKE2b-256 |
633eac7c44284e4bc6a5fdcb84717e25e61175dbf14647432c54ad0af624d195
|