https://github.com/emsig/pyfftlog
Python version of the logarithmic FFT Fortran code FFTLog by Andrew Hamilton.
https://github.com/emsig/pyfftlog
fftlog fourier-transform python
Last synced: about 1 year ago
JSON representation
Python version of the logarithmic FFT Fortran code FFTLog by Andrew Hamilton.
- Host: GitHub
- URL: https://github.com/emsig/pyfftlog
- Owner: emsig
- License: cc0-1.0
- Created: 2016-12-03T21:30:04.000Z (over 9 years ago)
- Default Branch: main
- Last Pushed: 2024-10-18T14:43:21.000Z (over 1 year ago)
- Last Synced: 2025-05-09T01:46:08.895Z (about 1 year ago)
- Topics: fftlog, fourier-transform, python
- Language: Python
- Size: 134 KB
- Stars: 26
- Watchers: 2
- Forks: 9
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- License: LICENSE
Awesome Lists containing this project
README
`pyfftlog` - A python version of FFTLog
=======================================
This is a python version of the logarithmic FFT code *FFTLog* as presented in
Appendix B of `Hamilton (2000)
`_ and published at
`jila.colorado.edu/~ajsh/FFTLog `_.
A simple `f2py`-wrapper (`fftlog`) can be found on `github.com/emsig/fftlog
`_. Tests have shown that `fftlog` is a bit
faster than `pyfftlog`, but `pyfftlog` is easier to implement, as you only need
`NumPy` and `SciPy`, without the need to compile anything.
I hope that `FFTLog` will make it into `SciPy` in the future, which will make
this project redundant. (If you have the bandwidth and are willing to chip in
have a look at `SciPy PR #7310 `_.)
Be aware that `pyfftlog` has not been tested extensively. It works fine for the
test from the original code, and my use case, which is `pyfftlog.fftl` with
`mu=0.5` (sine-transform), `q=0` (unbiased), `k=1`, `kropt=1`, and `tdir=1`
(forward). Please let me know if you encounter any issues.
- **Documentation**: https://pyfftlog.readthedocs.io
- **Source Code**: https://github.com/emsig/pyfftlog
Description of FFTLog from the FFTLog-Website
---------------------------------------------
FFTLog is a set of fortran subroutines that compute the fast Fourier or Hankel
(= Fourier-Bessel) transform of a periodic sequence of logarithmically spaced
points.
FFTLog can be regarded as a natural analogue to the standard Fast Fourier
Transform (FFT), in the sense that, just as the normal FFT gives the exact (to
machine precision) Fourier transform of a linearly spaced periodic sequence, so
also FFTLog gives the exact Fourier or Hankel transform, of arbitrary order m,
of a logarithmically spaced periodic sequence.
FFTLog shares with the normal FFT the problems of ringing (response to sudden
steps) and aliasing (periodic folding of frequencies), but under appropriate
circumstances FFTLog may approximate the results of a continuous Fourier or
Hankel transform.
The FFTLog algorithm was originally proposed by `Talman (1978)
`_.
*For the full documentation, see* `jila.colorado.edu/~ajsh/FFTLog
`_.
Installation
------------
You can install pyfftlog either via **conda**:
.. code-block:: console
conda install -c conda-forge pyfftlog
or via **pip**:
.. code-block:: console
pip install pyfftlog
License, Citation, and Credits
------------------------------
Released to the public domain under the `CC0 1.0 License
`_.
All releases have a Zenodo-DOI, which can be found on `10.5281/zenodo.3830364
`_.
Be kind and give credits by citing `Hamilton (2000)
`_. See the
`references-section
`_ in the manual for
full references.