Skip to main content

Differentiable and accelerated spherical transforms with JAX

Project description

s2fft logo - schematic representation of a tiled sphere

S2FFT: differentiable and accelerated spherical transforms

Tests status Linting status Documentation status Codecov MIT License PyPI package arXiv All Contributors Open In Colab Linter

S2FFT is a Python package for computing Fourier transforms on the sphere and rotation group (Price & McEwen 2024) using JAX or PyTorch. It leverages autodiff to provide differentiable transforms, which are also deployable on hardware accelerators (e.g. GPUs and TPUs).

More specifically, S2FFT provides support for spin spherical harmonic and Wigner transforms (for both real and complex signals), with support for adjoint transformations where needed, and comes with different optimisations (precompute or not) that one may select depending on available resources and desired angular resolution $L$.

Algorithms โšก

S2FFT leverages new algorithmic structures that can he highly parallelised and distributed, and so map very well onto the architecture of hardware accelerators (i.e. GPUs and TPUs). In particular, these algorithms are based on new Wigner-d recursions that are stable to high angular resolution $L$. The diagram below illustrates the recursions (for further details see Price & McEwen 2024).

Schematic of Wigner recursions

With this recursion to hand, the spherical harmonic coefficients of an isolatitudinally sampled map may be computed as a two step process. First, a 1D Fourier transform over longitude, for each latitudinal ring. Second, a projection onto the real polar-d functions. One may precompute and store all real polar-d functions for extreme acceleration, however this comes with an equally extreme memory overhead, which is infeasible at $L \sim 1024$. Alternatively, the real polar-d functions may calculated recursively, computing only a portion of the projection at a time, hence incurring negligible memory overhead at the cost of slightly slower execution. The diagram below illustrates the separable spherical harmonic transform (for further details see Price & McEwen 2024).

Schematic of forward and inverse spherical harmonic transforms

Sampling ๐ŸŒ

The structure of the algorithms implemented in S2FFT can support any isolatitude sampling scheme. A number of sampling schemes are currently supported.

The equiangular sampling schemes of McEwen & Wiaux (2012), Driscoll & Healy (1995) and Gauss-Legendre (1986) are supported, which exhibit associated sampling theorems and so harmonic transforms can be computed to machine precision. Note that the McEwen & Wiaux sampling theorem reduces the Nyquist rate on the sphere by a factor of two compared to the Driscoll & Healy approach, halving the number of spherical samples required.

The popular HEALPix sampling scheme (Gorski et al. 2005) is also supported. The HEALPix sampling does not exhibit a sampling theorem and so the corresponding harmonic transforms do not achieve machine precision but exhibit some error. However, the HEALPix sampling provides pixels of equal areas, which has many practical advantages.

Visualization of spherical sampling schemes

[!NOTE]
For algorithmic reasons JIT compilation of HEALPix transforms can become slow at high bandlimits, due to XLA unfolding of loops which currently cannot be avoided. After compiling HEALPix transforms should execute with the efficiency outlined in the associated paper, therefore this additional time overhead need only be incurred once. We are aware of this issue and are working to fix it. A fix for CPU execution has now been implemented (see example notebook).

Installation ๐Ÿ’ป

The latest release of S2FFT published on PyPI can be installed by running

pip install s2fft

This will install S2FFT's dependencies including JAX if not already installed. As by default installing JAX from PyPI will use a CPU-only build, if you wish to install JAX with GPU or TPU support, you should first follow the relevant installation instructions in JAX's documentation and then install S2FFT as above.

Alternatively, the latest development version of S2FFT may be installed directly from GitHub by running

pip install git+https://github.com/astro-informatics/s2fft  

Tests ๐Ÿšฆ

A pytest test suite for the package is included in the tests directory. To install the test dependencies, clone the repository and install the package (in editable mode) with the extra test dependencies by running from the root of the repository

pip install -e ".[tests]"

To run the tests, run from the root of the repository

pytest  

Documentation ๐Ÿ“–

Documentation for the released version is available here. To install the documentation dependencies, clone the repository and install the package (in editable mode) with the extra documentation dependencies by running from the root of the repository

pip install -e ".[docs]"

To build the documentation, run from the root of the repository

cd docs 
make html
open _build/html/index.html

Notebooks ๐Ÿ““

A series of tutorial notebooks are included in the notebooks directory and rendered in the documentation.

To install the dependencies required to run the notebooks locally, clone the repository and install the package (in editable mode) with the extra documentation and plotting dependencies by running from the root of the repository

pip install -e ".[docs,plotting]"

To run the notebooks in Jupyter Lab, run from the root of the repository

jupyter lab

Usage ๐Ÿš€

To import and use S2FFT is as simple follows:

For a signal on the sphere

import s2fft

# Define sampled signal to transform and harmonic bandlimit
f = ...
L = ...
# Compute harmonic coefficients
flm = s2fft.forward(f, L, method="jax")  
# Map back to pixel-space signal
f = s2fft.inverse(flm, L, method="jax")

For a signal on the rotation group

import s2fft

# Define sampled signal to transform and harmonic and azimuthal bandlimits
f = ...
L = ...
N = ...
# Compute Wigner coefficients
flmn = s2fft.wigner.forward(f, L, N, method="jax")
# Map back to pixel-space signal
f = fft.wigner.inverse_jax(flmn, L, N, method="jax")

For further details on usage see the documentation and associated notebooks.

[!NOTE]
We also provide PyTorch support for our transforms, as demonstrated in the Torch frontend tutorial notebook. This wraps the JAX implementations so JAX will need to be installed in addition to PyTorch.

SSHT & HEALPix wrappers ๐Ÿ’ก

S2FFT also provides JAX support for existing C/C++ packages, specifically HEALPix and SSHT. This works by wrapping Python bindings with custom JAX frontends. Note that this C/C++ to JAX interoperability is currently limited to CPU.

For example, one may call these alternate backends for the spherical harmonic transform by:

# Forward SSHT spherical harmonic transform
flm = s2fft.forward(f, L, sampling="mw", method="jax_ssht")  

# Forward HEALPix spherical harmonic transform
flm = s2fft.forward(f, L, nside=nside, sampling="healpix", method="jax_healpy")  

All of these JAX frontends supports out of the box reverse mode automatic differentiation, and under the hood is simply linking to the C/C++ packages you are familiar with. In this way S2fft enhances existing packages with gradient functionality for modern scientific computing or machine learning applications!

For further details on usage see the associated notebooks.

Benchmarks โฑ๏ธ

A suite of benchmark functions for both the on-the-fly and precompute versions of the spherical harmonic and Wigner transforms are available in the benchmarks directory, along with utilities for running the benchmarks and plotting the results.

Contributors โœจ

Thanks goes to these wonderful people (emoji key):

Matt Price
Matt Price

๐Ÿ’ป ๐Ÿ‘€ ๐Ÿค”
Jason McEwen
Jason McEwen

๐Ÿ’ป ๐Ÿ‘€ ๐Ÿค”
Matt Graham
Matt Graham

๐Ÿ’ป ๐Ÿ‘€
sfmig
sfmig

๐Ÿ’ป ๐Ÿ‘€
Devaraj Gopinathan
Devaraj Gopinathan

๐Ÿ’ป
Francois Lanusse
Francois Lanusse

๐Ÿ’ป ๐Ÿ›
Ikko Eltociear Ashimine
Ikko Eltociear Ashimine

๐Ÿ“–
Kevin Mulder
Kevin Mulder

๐Ÿ›
Philipp Misof
Philipp Misof

๐Ÿ› ๐Ÿ“–
Elis Roberts
Elis Roberts

๐Ÿ› ๐Ÿ“–
Wassim KABALAN
Wassim KABALAN

๐Ÿ’ป ๐Ÿ‘€ โš ๏ธ
Mayeul d'Avezac
Mayeul d'Avezac

๐Ÿš‡

We encourage contributions from any interested developers. A simple first addition could be adding support for more spherical sampling patterns!

Attribution ๐Ÿ“š

Should this code be used in any way, we kindly request that the following article is referenced. A BibTeX entry for this reference may look like:

@article{price:s2fft, 
   author      = "Matthew A. Price and Jason D. McEwen",
   title       = "Differentiable and accelerated spherical harmonic and Wigner transforms",
   journal     = "Journal of Computational Physics",
   year        = "2024",
   volume      = "510",
   pages       = "113109",
   eprint      = "arXiv:2311.14670",
   doi         = "10.1016/j.jcp.2024.113109"
}

You might also like to consider citing our related papers on which this code builds:

@article{mcewen:fssht,
    author      = "Jason D. McEwen and Yves Wiaux",
    title       = "A novel sampling theorem on the sphere",
    journal     = "IEEE Trans. Sig. Proc.",
    year        = "2011",
    volume      = "59",
    number      = "12",
    pages       = "5876--5887",        
    eprint      = "arXiv:1110.6298",
    doi         = "10.1109/TSP.2011.2166394"
}
@article{mcewen:so3,
    author      = "Jason D. McEwen and Martin B{\"u}ttner and Boris ~Leistedt and Hiranya V. Peiris and Yves Wiaux",
    title       = "A novel sampling theorem on the rotation group",
    journal     = "IEEE Sig. Proc. Let.",
    year        = "2015",
    volume      = "22",
    number      = "12",
    pages       = "2425--2429",
    eprint      = "arXiv:1508.03101",
    doi         = "10.1109/LSP.2015.2490676"    
}

License ๐Ÿ“

We provide this code under an MIT open-source licence with the hope that it will be of use to a wider community.

Copyright 2023 Matthew Price, Jason McEwen and contributors.

S2FFT is free software made available under the MIT License. For details see the LICENCE.txt file.

The file lib/include/kernel_helpers.h is adapted from code in a tutorial on extending JAX by Dan Foreman-Mackey and licensed under a MIT license.

The file lib/include/kernel_nanobind_helpers.h is adapted from code by the JAX authors and licensed under a Apache-2.0 license.

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

s2fft-1.3.0.tar.gz (22.9 MB view details)

Uploaded Source

Built Distributions

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

s2fft-1.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

s2fft-1.3.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (151.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

s2fft-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

s2fft-1.3.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (151.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

s2fft-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

s2fft-1.3.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (151.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

s2fft-1.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149.6 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

s2fft-1.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (152.2 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

s2fft-1.3.0-cp312-abi3-musllinux_1_2_x86_64.whl (233.3 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ x86-64

s2fft-1.3.0-cp312-abi3-musllinux_1_2_i686.whl (241.8 kB view details)

Uploaded CPython 3.12+musllinux: musl 1.2+ i686

s2fft-1.3.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (152.1 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ x86-64

s2fft-1.3.0-cp312-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (154.6 kB view details)

Uploaded CPython 3.12+manylinux: glibc 2.17+ i686

s2fft-1.3.0-cp312-abi3-macosx_11_0_arm64.whl (127.0 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

s2fft-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (233.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

s2fft-1.3.0-cp311-cp311-musllinux_1_2_i686.whl (242.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

s2fft-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (152.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

s2fft-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (154.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

s2fft-1.3.0-cp311-cp311-macosx_11_0_arm64.whl (127.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

s2fft-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl (233.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

s2fft-1.3.0-cp310-cp310-musllinux_1_2_i686.whl (242.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

s2fft-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (152.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

s2fft-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (154.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

s2fft-1.3.0-cp310-cp310-macosx_11_0_arm64.whl (127.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

s2fft-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl (233.6 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

s2fft-1.3.0-cp39-cp39-musllinux_1_2_i686.whl (242.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ i686

s2fft-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (152.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

s2fft-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (154.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

s2fft-1.3.0-cp39-cp39-macosx_11_0_arm64.whl (127.5 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

s2fft-1.3.0-cp38-cp38-musllinux_1_2_x86_64.whl (233.6 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

s2fft-1.3.0-cp38-cp38-musllinux_1_2_i686.whl (242.4 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ i686

s2fft-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (152.3 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

s2fft-1.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (154.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

s2fft-1.3.0-cp38-cp38-macosx_11_0_arm64.whl (127.4 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file s2fft-1.3.0.tar.gz.

File metadata

  • Download URL: s2fft-1.3.0.tar.gz
  • Upload date:
  • Size: 22.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0.tar.gz
Algorithm Hash digest
SHA256 a174595a79f7a5e2e0186d16d43f39e1d40c09012ad37568a6284245869fb205
MD5 8b93b1e86be9f69a2d91a77808fb386b
BLAKE2b-256 8e167c4c54be91fe714598fc1609bf40e94440c9763830ddaa034f6a2989e173

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0.tar.gz:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 376e6dacc57850714c1b288f40719eb95bdb18ae78e39d1e1403f6c7fb93d810
MD5 3db4dfd194ee38affea1c3f2d6259208
BLAKE2b-256 2ec024d2546236340a697300c56561b15e08c04d52e7440753f9395c72543f84

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7b89d217fadbf8955012aa1eca0170a53aafa2d9785113b7206622135c769e83
MD5 4939109e9c562d9317e225667eab151d
BLAKE2b-256 51e7f99bd31bcd8f0bbd4f5992b195c07b73ea408a0a51fc59b6128569245c5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d70eb15562e1a1ae48a7ba0edadc7fe33379b178c906974e8a5686b53f14c31
MD5 d9da67088ba19a9b7215185fb4b8ae35
BLAKE2b-256 ab3cdcc0c54e64e07c0796823432b6da21f9aa14fbb1be68ffb0d92b848a3e38

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6e362575185ed51ce42572a26c041478a0202fb836a274056d7efb424c10b29d
MD5 900125be08a756301382c2d4cb0c7d9a
BLAKE2b-256 39baf07e90a6afdd3984f8655f738c87c034f9907b8ddb2102fc8ddeb7866745

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f098f0be87a0023fff47fe2e621095a86594081833645787d3711acdd5a2e87
MD5 a7d10b11f5bfa7efc955b1ea33bea04d
BLAKE2b-256 e6df80196399cc77e7d9e97acefcb07589045c39ae4cc7592cbb5ef9ed81a121

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fe0e89310773e1e2977e131b5e1ab786146d88aeb5ef93e4e7dce50140bf48e1
MD5 360bd2ce52a1ef23dc70d26847f694bf
BLAKE2b-256 ec315a6e1652ffdc30470674723fa9241eb4ba82ad841d4578ce969b87fc00e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f73d3779e15dc33c0deb4875509b0b2e236b204e5922443970bba9607ae9fd6a
MD5 47237d064ffbd1ff546f6ace640a2f54
BLAKE2b-256 e933be437ae0776f0b05703b9e3747ef075a74b77da7a219943c27da244ac61d

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 54c337c6837366dcc2a3bab678df8a7b409985e0dde45e542393c415db0594f1
MD5 f5b38dc5d57e07c44a61665198a775eb
BLAKE2b-256 b2a77c70bd20f185e73e73966acba73fd5445a8791499cbc39442b973b3760fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp312-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp312-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c4a288f3c26348dcf0df6a0ad2a8797f6fd72e76a9b2026d1e0c5bfb6b6b9179
MD5 085584901d92f15197a0845fed946fff
BLAKE2b-256 27acfd6d49e35552b615937974ad748ca112dfa686760cff66dd25fedc260556

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp312-abi3-musllinux_1_2_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp312-abi3-musllinux_1_2_i686.whl.

File metadata

  • Download URL: s2fft-1.3.0-cp312-abi3-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 241.8 kB
  • Tags: CPython 3.12+, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0-cp312-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c76863762e899b80e3a870f7eb26fa992e34381aa5c306eeaed8d36bc38114f2
MD5 886f748ac2428b24f267213e022720fc
BLAKE2b-256 253faa9349566952f7b6946c04d35b60052a6080fc9f1b904d36a3a9aec59400

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp312-abi3-musllinux_1_2_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e11fe8bb6d64ded3cf5b7bea1431f30def62053ed7654893ae7867c000de263
MD5 72d23bcba91e44703a1d925c7c66a359
BLAKE2b-256 fefc0f07701b833333571ec0536f17574295409459ece1b576ecdcc534d5fe26

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp312-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp312-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9636c3ff9e484ad7b54123eaf0ed1804581a550362e151eac6a7c61bb9c76ff2
MD5 b5a397c87061109c0421dbd4d3929b56
BLAKE2b-256 0240c75a0c27f2ad9eacb672a65555a84ee9553d488d2293fa8cd3e23fd4b24e

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp312-abi3-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: s2fft-1.3.0-cp312-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 127.0 kB
  • Tags: CPython 3.12+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f5678d46883e7b9d4df6b0ab2842e80da16d526e45d0502fb82ce2740201587
MD5 8ead56537690e7936f893bfa86a26842
BLAKE2b-256 682dd39f44795bedc05d719da4cd740b3fb8e3d19879d010a944e87861c2384f

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp312-abi3-macosx_11_0_arm64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6b97e98ed9569db5b000ed14e98231746dea83ffa6771909da00627a8de66a96
MD5 65d526ab107fb4159b4efe63ff78e060
BLAKE2b-256 34a4b3bc7c9010520f9d199cb5363759a5d62fa0f6fe8ee9c9d4557641a08917

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9f9dd430fff84ddc602d5e8257ce5be9d297b5624f7b2f7852dde3cc26374fd3
MD5 5d7768e59ba1a3e61cc2f882c0079bcc
BLAKE2b-256 bf08db1c122106642f38b815c053b7f33f05f7f43641da093ea7e461d8e58f54

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c24addc8e7b774234dbd68fa56e73aa5e6110d3c938c537b0843219a4ecb6e1b
MD5 a4943e951f623ab97b7d4010ae273ea9
BLAKE2b-256 6826dd250e81ce1e98a8752da11c2bf268752f9cd43462ab449a2caaa347fd8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 32aa4368327038c0e05796fcb7d5ab9712b1e0c08c4629b4b55b59725830f437
MD5 a6327413ae4e0e6a725bf7b4951f833d
BLAKE2b-256 e55f36186c09fb2f7b9d359382842e39436cb7bed3f484fcdfb1be41b7249105

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13b09974eeb70c83d062833d01d7e4be0e0e5a9f8f815aa60e895ad4c9d359a7
MD5 3ebe4953fc88e75e54fe987e3af4e9c3
BLAKE2b-256 8d9d4dc975f7c308dd5df1e82e8a8bdb68453ff51fb054f662bf16a096dd369d

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c586896a13d64157c6296a1bc859c5608d59b1be06878cb4997aa7d712e54e85
MD5 b58c052fd610a0b70e253caf7fbc3c25
BLAKE2b-256 fc73dc5b262db134240467d09feec1b24550ddaa59325fdb07ff83d119063be4

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 24ae923a345c3b0a8a956130b2e48b7dc379c634a78e0e998420e0ede4491131
MD5 9b5c999d85e0ec2670f8305f7ac55c6b
BLAKE2b-256 bc747faec272c0291e986cc9a11792d5bf391ef0d9c76fdf1e885f4ae7a3a0d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp310-cp310-musllinux_1_2_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd293180fa8ccdc42bbaa4313f85b899155621ea51449fff943691b5fc3c08b9
MD5 002bda10099a7f317288419fbae4bf95
BLAKE2b-256 d283cff417104d314d65ee188941cbc767a598dc15c27382c5a7a7a5d11fb4d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e2c99638b32c8cb4356a173c3302cc5f0b5acede555b4add567ecd0d2febb1fb
MD5 4ced78f824873e9349ced3503bd9edfe
BLAKE2b-256 476452eb9bd1ba68ba3bea68e2cc29bb0d08eab34f75a0ebec4aae320149e1d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b2eb897069974d4da775df5d77100cb80115fd61d0eb1eb2bd7c5e53e0efefc7
MD5 f61c1af08398a6262a4e06eba2eb8b5b
BLAKE2b-256 8c64994179d37c67326615e4fb349908db4434d0468c4ecd3e24053e1574644f

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: s2fft-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 233.6 kB
  • Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 70ec758b84206aef7bf7909bad7c25e89175ae137c0df198fb338672e64c84ed
MD5 a26b08d728accaa670673597cdc75bd2
BLAKE2b-256 d248e4e42a86995a52de8dc512addd08f69bb89837c8b152841295877479dcbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

  • Download URL: s2fft-1.3.0-cp39-cp39-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 242.4 kB
  • Tags: CPython 3.9, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 126deacecea44f3d856915088b9f4646c5734246edf033638ca8627a06f1d077
MD5 e9459648293f3dc92052ba18d984c93c
BLAKE2b-256 a063dbdc07e98767e97d26b72fa458ee05d86f7dd91b565fa16fe2ffe2c2ffc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp39-cp39-musllinux_1_2_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d7ed91c0aeb484c24490e29b76d38f66c31622dae97093634631c2fea1c3c565
MD5 fff26a7d8908f154b07b097b29143dfe
BLAKE2b-256 1aa2101ce782840c7de8da75d744cda18d95540a47b22e63f522b6db1bf37d2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4e3cbe372d65cd3bfdb99b6f8884400e734bd392c4fed836b77f275f6838ea73
MD5 545da603f42def7c76b9b93b6dad3b65
BLAKE2b-256 0b7149e08d3ebcf528f93546ad6038a73323455dc5ba7a89cac3292fd8604c90

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: s2fft-1.3.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 127.5 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6bd1c31d5d85162135671c9e2b44b84c0172016850faa24b27f5a62beb9241c7
MD5 e3102f3f75f0fb5e680843347c44d51b
BLAKE2b-256 33773b34a6933410dbe6308b541e7ca60170cb0aa325b979610f3e6cb0c85303

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: s2fft-1.3.0-cp38-cp38-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 233.6 kB
  • Tags: CPython 3.8, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 42484b66cd1c19d8c54e998e88cd8c7716c604f65955cbf8ac4f17b56af4abbc
MD5 9b2731e73cb38514677520bb4770ebfb
BLAKE2b-256 9b0c0686bd98b1b52461d6205fd9847d3662548eba951693477fa3392adc1ca3

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp38-cp38-musllinux_1_2_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp38-cp38-musllinux_1_2_i686.whl.

File metadata

  • Download URL: s2fft-1.3.0-cp38-cp38-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 242.4 kB
  • Tags: CPython 3.8, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5c523f6c4ff1826b7e6e750423c77c10d474e5debb32f00a97a0a1fff584cb09
MD5 0c197d0d51e897ab7d498dc621b040c6
BLAKE2b-256 bf090fbb8e10ce37fb704f2ebfdbdabe8d94f47b4517d6520894dc5dd5f1844f

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp38-cp38-musllinux_1_2_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c905e1b4ef09d8771193b4a4246e2e5fe9e2be9a74dc3c187aa213fdc173e6a
MD5 23a1d7731c5b7d6890dcb38402d9ad1f
BLAKE2b-256 ac01dafe47b8dfc45c930ee1e9d1d0900efb6e2d8134a7a9b91a5ae48fd40655

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for s2fft-1.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 97a70bceea620924292da112120cc5e650949289fdd0bcfe460fb01d8b48783f
MD5 fc33c6db30dcad587a701bfb9909aebc
BLAKE2b-256 06ef82d3498d2fa462a9536ffdff81975299f14081b03f9494d08bb695858e57

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file s2fft-1.3.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: s2fft-1.3.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 127.4 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for s2fft-1.3.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95cfaacd80836b2fb07ba9b6de6844f7f32bf368ac0c0838aab95623c15ff9d3
MD5 1a4a6224c1c1833d07b07711493d9e9d
BLAKE2b-256 585164afe624cc1ea354b3be4bbb6796753158c1bfc1173152bd29e8bfaa469e

See more details on using hashes here.

Provenance

The following attestation bundles were made for s2fft-1.3.0-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: build.yml on astro-informatics/s2fft

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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