An implementation of the fast spin-weighted spherical harmonic transform methods of McEwan and Wiaux (2011) [1], using the recursion relations of Trapani and Navaza (2006) [2] to calculate Wigner-d functions. Transforms are supported for any spherical sampling pattern with equally-spaced samples of azimuth at each latitude (iso-latitude sampling). Additional functions are provided to evaluate spin-weighted spherical harmonics at arbitrary positions.
These methods are written entirely in Python, taking advantage of numba jit compilation and numpy vector operations for speed.
This README, a tutorial, and all function docstrings may be found on ReadTheDocs.
Required:
numpy
numba
scipy
Optional:
sympy
pytest
The latest release of pyspherical
is available on PyPi:
pip install pyspherical
The bleeding-edge version may be installed directly from the repository:
> git clone https://github.com/aelanman/pyspherical.git
> python setup.py install
# or
> pip install .
Tests can be run using pytest
to confirm that the installation was successful.
An example script scripts/example_1.py
demonstrates how to use some of the available evaluation and transform functions. Another script scripts/example_2.py
plots the spherical harmonics for el < 4. Further documentation is under development.
[1] McEwen, J. D., and Y. Wiaux. “A Novel Sampling Theorem on the Sphere.” IEEE Transactions on Signal Processing, vol. 59, no. 12, Dec. 2011, pp. 5876–87. arXiv.org, doi:10.1109/TSP.2011.2166394.
[2] S, Trapani, and Navaza J. “Calculation of Spherical Harmonics and Wigner d Functions by FFT. Applications to Fast Rotational Matching in Molecular Replacement and Implementation into AMoRe.” Acta Crystallographica Section A, vol. 62, no. 4, 2006, pp. 262–69. Wiley Online Library, doi:10.1107/S0108767306017478.