The SO3 code provides functionality to perform fast and exact Wigner transforms based on the sampling theorem on the rotation group derived in McEwen et al. (2015).

This documentation describes installation details and documents the source code. Reference, author and license information is also given. The code itself is hosted on GitHub.


The SO3 package in based on a core C implementation. Python and Matlab interfaces to the C implementation are provided.


SO3 requires the FFTW and the SSHT package. Obviously suitable C compilers will be required to build the implementation. Both C and Matlab mex compilers will be required to build the Matlab interface to the C implementation. The python interface requires numpy and, in addition, the demos require matplotlib.

Python installation

The python package, so3, is available on pypi and can be installed with:

pip install so3

The python package is backed by scikit-build and CMake. It will install a local version of FFTW and will compile its own version of the C package.

C installation

The C package can be installed with CMake and conan.

Both can be installed using pip:

pip install conan cmake

Then SO3 can be compiled with:

  git clone
  mkdir so3/build && cd so3/build
  cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -Dconan_deps=True ..
  make install

The above will also download FFTW and SSHT, if necessary.

Matlab installation

The Matlab interface requires the C version to be installed.

It can be built using make by configuring appropriate compilers and dependencies, and then running:

make matlab

Source code documentation

SO3 code is self documented. Source code documentation for each language is available here:


If you use SO3 for work that results in publication, please reference and cite our related academic paper:

J. D. McEwen, M. Büttner, B. Leistedt, H. V. Peiris, Y. Wiaux, A novel sampling theorem on the rotation group, IEEE Sig. Proc. Let., 22(12):2425-2429, 2015 (ArXiv | DOI)


SO3 package to perform Wigner transforms
Copyright (C) 2014- Martin Büttner, Jason McEwen, Boris Leistedt and contributors

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details (

You should have received a copy of the GNU General Public License along with this program. If not, see


SO3 was initially developed by Martin Büttner, Jason McEwen, and Boris Leistedt but significant contributors have since been made by a number of others.