Skip to main content

FFTLog

A Python implementation of FFTLog for fast logarithmic FFT transforms, developed for PyBird.

Installation

pip install fftlog-lss

With JAX acceleration

pip install "fftlog-lss[jax]"

From source

git clone https://github.com/pierrexyz/fftlog.git
cd fftlog
pip install --editable .

From source with JAX

git clone https://github.com/pierrexyz/fftlog.git
cd fftlog
pip install --editable ".[jax]"

Dependencies

Required

  • Python >= 3.8
  • numpy >= 1.20.0
  • scipy >= 1.7.0

Optional (for JAX acceleration)

  • jax >= 0.4.0
  • jaxlib >= 0.4.0
  • interpax >= 0.3.0

Quickstart

Basic Usage (without JAX)

import numpy as np
from scipy.stats import lognorm
from fftlog import FFTLog

# Create test function (power spectrum)
k = np.logspace(-4, 0, 200)
pk = lognorm.pdf(k, 2.1)

# Initialize FFTLog
fft = FFTLog(
    Nmax=512,       # Number of points
    xmin=1e-5,      # Minimum k value
    xmax=1e3,       # Maximum k value
    bias=-0.1,      # Bias parameter
    complex=False,  # Use real FFT
    window=0.1      # Anti-aliasing window
)

# FFTLog decomposition and reconstruction
pk_reconstructed = fft.rec(k, pk, k)

# Spherical Bessel Transform
s = np.arange(1., 1e3, 5.)
xi = fft.sbt(k, pk, s)  # Fast O(N log N) transform

With JAX Acceleration

import numpy as np
from scipy.stats import lognorm
from fftlog import FFTLog
from fftlog.config import set_jax_enabled
from jax import jit
import jax.numpy as jnp

# Enable JAX mode
set_jax_enabled(True)

# Create test function
k = np.logspace(-4, 0, 200)
pk = lognorm.pdf(k, 2.1)

# Initialize FFTLog (same as above)
fft = FFTLog(
    Nmax=512, xmin=1e-5, xmax=1e3, 
    bias=-0.1, complex=False, window=0.1
)

# Convert to JAX arrays and JIT compile
k_jax, pk_jax = jnp.array(k), jnp.array(pk)
get_coef_jit = jit(fft.Coef)

# Now much faster for repeated calls
coefficients = get_coef_jit(k_jax, pk_jax)

Features

  • Fast logarithmic FFT transforms
  • Support for both real and complex transforms
  • Spherical Bessel transforms
  • Anti-aliasing windows
  • Optional JAX acceleration for GPU/TPU support

Documentation

For more detailed examples and documentation, see the notebooks in the notebooks/ directory.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Metadata

Release files for fftlog-lss 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fftlog-lss 0.1.2
File Size Uploaded Provenance
fftlog_lss-0.1.2.tar.gz 10.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for fftlog-lss 0.1.2
File Interpreter ABI Platform
fftlog_lss-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 20.2 kB

Release files / fftlog_lss-0.1.2.tar.gz

Download URL fftlog_lss-0.1.2.tar.gz
Size 10.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1dbfcc12c8733f3dd7c53752487e7342ec2d60bff8f9dfd0128c11dfa5456284
BLAKE2b-256 checksum
How to use checksums
082a398eaa7e8469dcc0c8f8f56715d66a092670ae66a911a7920605775cb1d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.1

Release files / fftlog_lss-0.1.2-py3-none-any.whl

Download URL fftlog_lss-0.1.2-py3-none-any.whl
Size 9.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7e8e67ba421133e4eb252e903034a129cc5ff56279f5a10dcf956eae9a6c4b4f
BLAKE2b-256 checksum
How to use checksums
190f6335fea715b5f18d01f22e440814ecfc16dcd07a965f52bb87208c8893dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.10.1

Security for fftlog-lss 0.1.2

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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