Skip to main content

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 gfortran installed 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

fftloggin-0.3.0.tar.gz (152.2 kB view details)

Uploaded Source

Built Distribution

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

fftloggin-0.3.0-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

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

Hashes for fftloggin-0.3.0.tar.gz
Algorithm Hash digest
SHA256 a7611f405ee036d2b12a2a72ad819a2700d46cba0396302a63e4ab22dd8dcd49
MD5 5dae7140a63283ab443743c9b39028a7
BLAKE2b-256 a469da7d86ddd0e982e5a2ec2a3a8788e54748397ed002758dbdfb2e06404328

See more details on using hashes here.

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

Hashes for fftloggin-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e64b776620cd98d800a91297bb5a1abad25510498f19e8e4d08a6621f436fb9f
MD5 7590b66419d0bd53d60dc61af9a3ff29
BLAKE2b-256 633eac7c44284e4bc6a5fdcb84717e25e61175dbf14647432c54ad0af624d195

See more details on using hashes here.

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