{"id":13688790,"url":"https://github.com/astro-informatics/s2fft","last_synced_at":"2025-05-16T07:04:37.899Z","repository":{"id":65958781,"uuid":"464884164","full_name":"astro-informatics/s2fft","owner":"astro-informatics","description":"S2FFT: Differentiable and accelerated spherical transforms","archived":false,"fork":false,"pushed_at":"2025-05-13T23:07:39.000Z","size":60903,"stargazers_count":150,"open_issues_count":41,"forks_count":9,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-05-14T01:07:29.471Z","etag":null,"topics":["differentiable-programming","fourier-transform","jax","pytorch","recursion-algorithm","spherical","spherical-harmonics","wigner-d-matrix","wigner-transform"],"latest_commit_sha":null,"homepage":"https://astro-informatics.github.io/s2fft","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/astro-informatics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-01T12:29:18.000Z","updated_at":"2025-04-29T17:17:47.000Z","dependencies_parsed_at":"2024-02-09T12:41:25.817Z","dependency_job_id":"d6872a21-9afd-49f3-9ec7-9fa767dd8f5b","html_url":"https://github.com/astro-informatics/s2fft","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astro-informatics%2Fs2fft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astro-informatics%2Fs2fft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astro-informatics%2Fs2fft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astro-informatics%2Fs2fft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astro-informatics","download_url":"https://codeload.github.com/astro-informatics/s2fft/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254485055,"owners_count":22078767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["differentiable-programming","fourier-transform","jax","pytorch","recursion-algorithm","spherical","spherical-harmonics","wigner-d-matrix","wigner-transform"],"created_at":"2024-08-02T15:01:22.769Z","updated_at":"2025-05-16T07:04:32.883Z","avatar_url":"https://github.com/astro-informatics.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cdiv style=\"text-align: center;\" align=\"center\"\u003e\n\n\u003cimg class=\"dark-light\" width=\"98\" height=\"85\" alt=\"s2fft logo - schematic representation of a tiled sphere\" src=\"https://raw.githubusercontent.com/astro-informatics/s2fft/main/docs/assets/sax_logo.png\"\u003e\n\n# S2FFT: differentiable and accelerated spherical transforms\n\n[![Tests status](https://github.com/astro-informatics/s2fft/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/astro-informatics/s2fft/actions/workflows/tests.yml)\n[![Linting status](https://github.com/astro-informatics/s2fft/actions/workflows/linting.yml/badge.svg?branch=main)](https://github.com/astro-informatics/s2fft/actions/workflows/linting.yml)\n[![Documentation status](https://github.com/astro-informatics/s2fft/actions/workflows/docs.yml/badge.svg?branch=main)](https://github.com/astro-informatics/s2fft/actions/workflows/docs.yml)\n[![Codecov](https://codecov.io/gh/astro-informatics/s2fft/branch/main/graph/badge.svg?token=7QYAFAAWLE)](https://codecov.io/gh/astro-informatics/s2fft)\n[![MIT License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![PyPI package](https://badge.fury.io/py/s2fft.svg)](https://badge.fury.io/py/s2fft)\n[![arXiv](http://img.shields.io/badge/arXiv-2311.14670-orange.svg?style=flat)](https://arxiv.org/abs/2311.14670)\n![All Contributors](https://img.shields.io/github/all-contributors/astro-informatics/s2fft?color=ee8449\u0026style=flat-square)\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/astro-informatics/s2fft/blob/main/notebooks/spherical_harmonic_transform.ipynb)\n[![Linter](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n\n\u003c/div\u003e\n\n`S2FFT` is a Python package for computing Fourier transforms on the sphere\nand rotation group [(Price \u0026 McEwen 2024)](https://arxiv.org/abs/2311.14670) using \nJAX or PyTorch. It leverages autodiff to provide differentiable transforms, which are \nalso deployable on hardware accelerators (e.g. GPUs and TPUs).\n\nMore specifically, `S2FFT` provides support for spin spherical harmonic\nand Wigner transforms (for both real and complex signals), with support\nfor adjoint transformations where needed, and comes with different\noptimisations (precompute or not) that one may select depending on\navailable resources and desired angular resolution $L$.\n\n## Algorithms ⚡\n\n`S2FFT` leverages new algorithmic structures that can he highly\nparallelised and distributed, and so map very well onto the architecture\nof hardware accelerators (i.e. GPUs and TPUs). In particular, these\nalgorithms are based on new Wigner-d recursions that are stable to high\nangular resolution $L$. The diagram below illustrates the recursions\n(for further details see [Price \u0026 McEwen 2024]((https://arxiv.org/abs/2311.14670))).\n\n\u003cdiv style=\"text-align: center;\" align=\"center\"\u003e\n\u003cimg class=\"dark-light\" alt=\"Schematic of Wigner recursions\" src=\"https://raw.githubusercontent.com/astro-informatics/s2fft/main/docs/assets/figures/Wigner_recursion_legend_darkmode.png\" /\u003e\n\u003c/div\u003e\n\nWith this recursion to hand, the spherical harmonic coefficients of an \nisolatitudinally sampled map may be computed as a two step process. First, \na 1D Fourier transform over longitude, for each latitudinal ring. Second, \na projection onto the real polar-d functions. One may precompute and store \nall real polar-d functions for extreme acceleration, however this comes \nwith an equally extreme memory overhead, which is infeasible at $L \\sim 1024$. \nAlternatively, the real polar-d functions may calculated recursively, \ncomputing only a portion of the projection at a time, hence incurring \nnegligible memory overhead at the cost of slightly slower execution. The \ndiagram below illustrates the separable spherical harmonic transform \n(for further details see [Price \u0026 McEwen 2024]((https://arxiv.org/abs/2311.14670))).\n\n\u003cdiv style=\"text-align: center;\" align=\"center\"\u003e\n\u003cimg class=\"dark-light\" alt=\"Schematic of forward and inverse spherical harmonic transforms\" src=\"https://raw.githubusercontent.com/astro-informatics/s2fft/main/docs/assets/figures/sax_schematic_legend_darkmode.png\" /\u003e\n\u003c/div\u003e\n\n## Sampling 🌍\n\nThe structure of the algorithms implemented in `S2FFT` can support any\nisolatitude sampling scheme. A number of sampling schemes are currently\nsupported.\n\nThe equiangular sampling schemes of [McEwen \u0026 Wiaux\n(2012)](https://arxiv.org/abs/1110.6298), [Driscoll \u0026 Healy\n(1995)](https://www.sciencedirect.com/science/article/pii/S0196885884710086) \nand [Gauss-Legendre (1986)](https://link.springer.com/article/10.1007/BF02519350)\nare supported, which exhibit associated sampling theorems and so\nharmonic transforms can be computed to machine precision. Note that the\nMcEwen \u0026 Wiaux sampling theorem reduces the Nyquist rate on the sphere\nby a factor of two compared to the Driscoll \u0026 Healy approach, halving\nthe number of spherical samples required.\n\nThe popular [HEALPix](https://healpix.jpl.nasa.gov) sampling scheme\n([Gorski et al. 2005](https://arxiv.org/abs/astro-ph/0409513)) is also\nsupported. The HEALPix sampling does not exhibit a sampling theorem and\nso the corresponding harmonic transforms do not achieve machine\nprecision but exhibit some error. However, the HEALPix sampling provides\npixels of equal areas, which has many practical advantages.\n\n\u003cdiv style=\"text-align: center;\" align=\"center\"\u003e\n\u003cimg class=\"dark-light\" alt=\"Visualization of spherical sampling schemes\" src=\"https://raw.githubusercontent.com/astro-informatics/s2fft/main/docs/assets/figures/spherical_sampling.png\" width=\"700\"\u003e\n\u003c/div\u003e\n\n\u003e [!NOTE]  \n\u003e 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](https://astro-informatics.github.io/s2fft/tutorials/spherical_harmonic/JAX_HEALPix_backend.html)).\n\n## Installation 💻\n\nThe latest release of `S2FFT` published [on PyPI](https://pypi.org/project/s2fft/) can be installed by running\n\n```bash\npip install s2fft\n```\n\nThis will install `S2FFT`'s dependencies including JAX if not already installed.\nAs by default installing JAX from PyPI will use a CPU-only build,\nif you wish to install JAX with GPU or TPU support,\nyou should first follow the [relevant installation instructions in JAX's documentation](https://docs.jax.dev/en/latest/installation.html#installation)\nand then install `S2FFT` as above.\n\nAlternatively, the  latest development version of `S2FFT` may be installed directly from GitHub by running \n\n```bash\npip install git+https://github.com/astro-informatics/s2fft  \n```\n\n## Tests 🚦\n\nA `pytest` test suite for the package is included in the `tests` directory.\nTo install the test dependencies, clone the repository and install the package (in [editable mode](https://setuptools.pypa.io/en/latest/userguide/development_mode.html)) \nwith the extra test dependencies by running from the root of the repository\n\n```bash\npip install -e \".[tests]\"\n```\n\nTo run the tests, run from the root of the repository\n\n```bash\npytest  \n```\n\n## Documentation 📖\n\nDocumentation for the released version is available [here](https://astro-informatics.github.io/s2fft/). \nTo install the documentation dependencies, clone the repository and install the package (in [editable mode](https://setuptools.pypa.io/en/latest/userguide/development_mode.html)) \nwith the extra documentation dependencies by running from the root of the repository\n\n```bash\npip install -e \".[docs]\"\n```\n\nTo build the documentation, run from the root of the repository\n\n```bash\ncd docs \nmake html\nopen _build/html/index.html\n```\n\n## Notebooks 📓\n\nA series of tutorial notebooks are included in the `notebooks` directory\nand rendered [in the documentation](https://astro-informatics.github.io/s2fft/tutorials/index.html).\n\nTo install the dependencies required to run the notebooks locally, clone the repository and install the package (in [editable mode](https://setuptools.pypa.io/en/latest/userguide/development_mode.html)) \nwith the extra documentation and plotting dependencies by running from the root of the repository\n\n```bash\npip install -e \".[docs,plotting]\"\n```\n\nTo run the notebooks in Jupyter Lab, run from the root of the repository\n\n```bash\njupyter lab\n```\n\n## Usage 🚀\n\nTo import and use `S2FFT` is as simple follows:\n\nFor a signal on the sphere\n\n```python\nimport s2fft\n\n# Define sampled signal to transform and harmonic bandlimit\nf = ...\nL = ...\n# Compute harmonic coefficients\nflm = s2fft.forward(f, L, method=\"jax\")  \n# Map back to pixel-space signal\nf = s2fft.inverse(flm, L, method=\"jax\")\n```\n\nFor a signal on the rotation group \n\n```python\nimport s2fft\n\n# Define sampled signal to transform and harmonic and azimuthal bandlimits\nf = ...\nL = ...\nN = ...\n# Compute Wigner coefficients\nflmn = s2fft.wigner.forward(f, L, N, method=\"jax\")\n# Map back to pixel-space signal\nf = fft.wigner.inverse_jax(flmn, L, N, method=\"jax\")\n```\n\nFor further details on usage see the [documentation](https://astro-informatics.github.io/s2fft/) and associated [notebooks](https://astro-informatics.github.io/s2fft/tutorials/spherical_harmonic/spherical_harmonic_transform.html).\n\n\u003e [!NOTE]  \n\u003e We also provide PyTorch support for the precompute version of our transforms, as demonstrated in the [_Torch frontend_ tutorial notebook](https://astro-informatics.github.io/s2fft/tutorials/torch_frontend/torch_frontend.html).\n\n## SSHT \u0026 HEALPix wrappers 💡\n\n`S2FFT` also provides JAX support for existing C/C++ packages, specifically [`HEALPix`](https://healpix.jpl.nasa.gov) and [`SSHT`](https://github.com/astro-informatics/ssht). This works \nby wrapping Python bindings with custom JAX frontends. Note that this C/C++ to JAX interoperability is currently limited to CPU.\n\nFor example, one may call these alternate backends for the spherical harmonic transform by:\n\n``` python\n# Forward SSHT spherical harmonic transform\nflm = s2fft.forward(f, L, sampling=\"mw\", method=\"jax_ssht\")  \n\n# Forward HEALPix spherical harmonic transform\nflm = s2fft.forward(f, L, nside=nside, sampling=\"healpix\", method=\"jax_healpy\")  \n```\n\nAll of these JAX frontends supports out of the box reverse mode automatic differentiation, \nand under the hood is simply linking to the C/C++ packages you are familiar with. In this \nway `S2fft` enhances existing packages with gradient functionality for modern scientific computing or machine learning \napplications!\n\nFor further details on usage see the associated [notebooks](https://astro-informatics.github.io/s2fft/tutorials/spherical_harmonic/JAX_SSHT_backend.html).\n\n## Benchmarks ⏱️\n\nA 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.\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji\nkey](https://allcontributors.org/docs/en/emoji-key)):\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://cosmomatt.github.io\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/32554533?v=4?s=100\" width=\"100px;\" alt=\"Matt Price\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatt Price\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=CosmoMatt\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/pulls?q=is%3Apr+reviewed-by%3ACosmoMatt\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"#ideas-CosmoMatt\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.jasonmcewen.org\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3181701?v=4?s=100\" width=\"100px;\" alt=\"Jason McEwen \"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJason McEwen \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=jasonmcewen\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/pulls?q=is%3Apr+reviewed-by%3Ajasonmcewen\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"#ideas-jasonmcewen\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://matt-graham.github.io\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6746980?v=4?s=100\" width=\"100px;\" alt=\"Matt Graham\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatt Graham\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=matt-graham\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/pulls?q=is%3Apr+reviewed-by%3Amatt-graham\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://sfmig.github.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/33267254?v=4?s=100\" width=\"100px;\" alt=\"sfmig\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003esfmig\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=sfmig\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/pulls?q=is%3Apr+reviewed-by%3Asfmig\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Devaraj-G\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/36169767?v=4?s=100\" width=\"100px;\" alt=\"Devaraj Gopinathan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDevaraj Gopinathan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=Devaraj-G\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://flanusse.net\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/861591?v=4?s=100\" width=\"100px;\" alt=\"Francois Lanusse\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFrancois Lanusse\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=EiffL\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/issues?q=author%3AEiffL\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/eltociear\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/22633385?v=4?s=100\" width=\"100px;\" alt=\"Ikko Eltociear Ashimine\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIkko Eltociear Ashimine\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=eltociear\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kmulderdas\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/33317219?v=4?s=100\" width=\"100px;\" alt=\"Kevin Mulder\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKevin Mulder\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/issues?q=author%3Akmulderdas\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/PhilippMisofCH\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/142883157?v=4?s=100\" width=\"100px;\" alt=\"Philipp Misof\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePhilipp Misof\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/issues?q=author%3APhilippMisofCH\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=PhilippMisofCH\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ElisR\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/19764906?v=4?s=100\" width=\"100px;\" alt=\"Elis Roberts\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eElis Roberts\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/issues?q=author%3AElisR\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=ElisR\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ASKabalan\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/83787080?v=4?s=100\" width=\"100px;\" alt=\"Wassim KABALAN\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWassim KABALAN\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=ASKabalan\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/pulls?q=is%3Apr+reviewed-by%3AASKabalan\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"https://github.com/astro-informatics/s2fft/commits?author=ASKabalan\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\nWe encourage contributions from any interested developers. A simple\nfirst addition could be adding support for more spherical sampling\npatterns!\n\n## Attribution 📚\n\nShould this code be used in any way, we kindly request that the following article is\nreferenced. A BibTeX entry for this reference may look like:\n\n``` \n@article{price:s2fft, \n   author      = \"Matthew A. Price and Jason D. McEwen\",\n   title       = \"Differentiable and accelerated spherical harmonic and Wigner transforms\",\n   journal     = \"Journal of Computational Physics\",\n   year        = \"2024\",\n   volume      = \"510\",\n   pages       = \"113109\",\n   eprint      = \"arXiv:2311.14670\",\n   doi         = \"10.1016/j.jcp.2024.113109\"\n}\n```\n\nYou might also like to consider citing our related papers on which this\ncode builds:\n\n``` \n@article{mcewen:fssht,\n    author      = \"Jason D. McEwen and Yves Wiaux\",\n    title       = \"A novel sampling theorem on the sphere\",\n    journal     = \"IEEE Trans. Sig. Proc.\",\n    year        = \"2011\",\n    volume      = \"59\",\n    number      = \"12\",\n    pages       = \"5876--5887\",        \n    eprint      = \"arXiv:1110.6298\",\n    doi         = \"10.1109/TSP.2011.2166394\"\n}\n```\n\n``` \n@article{mcewen:so3,\n    author      = \"Jason D. McEwen and Martin B{\\\"u}ttner and Boris ~Leistedt and Hiranya V. Peiris and Yves Wiaux\",\n    title       = \"A novel sampling theorem on the rotation group\",\n    journal     = \"IEEE Sig. Proc. Let.\",\n    year        = \"2015\",\n    volume      = \"22\",\n    number      = \"12\",\n    pages       = \"2425--2429\",\n    eprint      = \"arXiv:1508.03101\",\n    doi         = \"10.1109/LSP.2015.2490676\"    \n}\n```\n\n## License 📝\n\nWe provide this code under an MIT open-source licence with the hope that\nit will be of use to a wider community.\n\nCopyright 2023 Matthew Price, Jason McEwen and contributors.\n\n`S2FFT` is free software made available under the MIT License. For\ndetails see the [`LICENCE.txt`](https://github.com/astro-informatics/s2fft/blob/main/LICENCE.txt) file.\n\nThe file [`lib/include/kernel_helpers.h`](https://github.com/astro-informatics/s2fft/blob/main/lib/include/kernel_helpers.h) is adapted from\n[code](https://github.com/dfm/extending-jax/blob/c33869665236877a2ae281f3f5dbff579e8f5b00/lib/kernel_helpers.h) in [a tutorial on extending JAX](https://github.com/dfm/extending-jax) by \n[Dan Foreman-Mackey](https://github.com/dfm) and licensed under a [MIT license](https://github.com/dfm/extending-jax/blob/371dca93c6405368fa8e71690afd3968d75f4bac/LICENSE).\n\nThe file [`lib/include/kernel_nanobind_helpers.h`](https://github.com/astro-informatics/s2fft/blob/main/lib/include/kernel_nanobind_helpers.h)\nis adapted from [code](https://github.com/jax-ml/jax/blob/3d389a7fb440c412d95a1f70ffb91d58408247d0/jaxlib/kernel_nanobind_helpers.h) \nby the [JAX](https://github.com/jax-ml/jax) authors \nand licensed under a [Apache-2.0 license](https://github.com/jax-ml/jax/blob/3d389a7fb440c412d95a1f70ffb91d58408247d0/LICENSE). \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastro-informatics%2Fs2fft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastro-informatics%2Fs2fft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastro-informatics%2Fs2fft/lists"}