Skip to main content

Python port of the C library SOFT 2.0, that computes fourier transforms on the rotation group SO(3).

Project description

PySOFFT

This package allows to compute Fourier transforms on the rotation group SO(3).
It is a partial python port of soft-2.0 released by Peter Kostelec and Daniel Rockmore.

For details see their paper:
FFTs on the Rotation Group
J Fourier Anal Appl (2008) 14: 145–179
DOI 10.1007/s00041-008-9013-5

The present numba code is a more or less straight copy/adaptation of the original C implementation.
PySOFT is made available with conset of the original authors and under the same GPL3 license.

Installation

pip install pysofft

Dependencies are: numpy and numba

Usage

Creating a Transform class for a fixed bandwidth (maximal considered spherical harmonic order +1)

from pysofft.soft import Soft

bandwidth = 32
soft_obj = Soft(bandwidth)

SO(3) grid points (gives as (2 bandwidth,2 bandwidth,2 bandwidth,3) array of euler angles $\alpha,\beta,\gamma$):

soft_obj.grid

FFT Coefficient grid points labeled by $n,m,l$ corresponding to the Wigner-D matrix $D^l_{n,m}$

soft_obj.coeff_grid

Creating random coefficients and computing the FFT on SO(3)

import numpy as np
Flnm=np.random.rand(*soft_obj.coeff_grid.shape[:-1]).astype('complex')

f = soft_obj.inverse_cmplx(Flnm) # inverse Transform   (Dlnm Coefficients -> SO(3))
Flnm2 = soft_obj.forward_cmplx(f) # forward Transform  (SO(3) -> Dlnm Coefficients)

Known Issues

There are some bugs when spawning child processes after instanciation of the class Soft. So, as of now consider Soft to be not fork save. If you want to use Soft in a multiprocess environment initiallize Soft in each child process individually.

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

pysofft-0.1.3.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

pysofft-0.1.3-py3-none-any.whl (1.8 MB view details)

Uploaded Python 3

File details

Details for the file pysofft-0.1.3.tar.gz.

File metadata

  • Download URL: pysofft-0.1.3.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for pysofft-0.1.3.tar.gz
Algorithm Hash digest
SHA256 25473d4ee6ae240c55f79af2a3a82af57229edc0a3405f5aa550fe31f79bc76b
MD5 cee2b561cf9574f164992f8d2021a22c
BLAKE2b-256 7e92c7032687895bdeaffb898502e4ccf344677111ca073d74f5305a83ce1914

See more details on using hashes here.

File details

Details for the file pysofft-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pysofft-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for pysofft-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b3ce0fcb7c0283eacc0e7ce26ef88a3c594174b3ed8875a753eb494d5d778008
MD5 07408058ae37816e36912820c934563c
BLAKE2b-256 9777fb4754aa4c04748649e8fdf9c682ca58f7926826d810aff3a73663cee296

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page