Skip to content

Commit

Permalink
move some updated doc pages to master
Browse files Browse the repository at this point in the history
  • Loading branch information
ahbarnett committed Jun 5, 2020
1 parent d27fb6c commit d8f49f3
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 53 deletions.
50 changes: 29 additions & 21 deletions docs/ackn.rst
Original file line number Diff line number Diff line change
@@ -1,36 +1,44 @@
.. _ackn:

Acknowledgments
===============

The main code and mathematical development is by:
FINUFFT was initiated by Jeremy Magland and Alex Barnett at the
Center for Computational Mathematics, Flatiron Institute.
The main developer and maintainer is:

* Alex Barnett (Flatiron Institute)
* Jeremy Magland (Flatiron Institute)

Significant SIMD vectorization/acceleration of the spreader by:
* Alex Barnett

* Ludvig af Klinteberg (SFU)
Major code contributions by:

Other code contributions:
* Jeremy Magland - multithreaded spreader, benchmark vs other codes
* Ludvig af Klinteberg - SIMD vectorization/acceleration of spreader, julia wrapper
* Yu-Hsuan ("Melody") Shih - 2d1many, 2d2many vectorized interface, GPU version
* Andrea Malleo - guru interface prototype and tests
* Libin Lu - guru Fortran, python, MATLAB/octave, julia interfaces

Other significant code contributions by:

* Yu-Hsuan ("Melody") Shih - 2d1many, 2d2many interface for many vectors same points
* Leslie Greengard and June-Yub Lee - CMCL fortran drivers and test codes
* Dan Foreman-Mackey - python wrappers
* Joakim Andén - catching bugs, Matlab/FFTW issues, performance tests, python
* Leslie Greengard and June-Yub Lee - CMCL Fortran test drivers
* Dan Foreman-Mackey - early python wrappers
* David Stein - python wrappers
* Dylan Simon - sphinx help
* Amit Moscovich - Mac OSX build

Testing, bug reports:
* Vineet Bansal - pypy packaging

Testing, bug reports, helpful discussions:

* Joakim Anden - catching memory leak, Matlab/FFTW issues, performance tests
* Hannah Lawrence - user testing and finding bugs
* Marina Spivak - fortran testing
* Marina Spivak - Fortran testing
* Hugo Strand - python bugs
Helpful discussions:

* Charlie Epstein - analysis of kernel Fourier transform sums
* Amit Moscovich - Mac OSX build
* Dylan Simon - sphinx help
* Zydrunas Gimbutas - explanation that NFFT uses Kaiser-Bessel backwards
* Charlie Epstein - help with analysis of kernel Fourier transform sums
* Christian Muller - optimization (CMA-ES) for early kernel design
* Andras Pataki - complex number speed in C++
* Timo Heister - pass/fail numdiff testing ideas
* Zydrunas Gimbutas - explanation that NFFT uses Kaiser-Bessel backwards
* Vladimir Rokhlin - piecewise polynomial approximation on complex boxes

We are also indebted to the authors of other NUFFT codes
such as NFFT3, CMCL NUFFT, MIRT, BART, etc, upon whose interfaces, code,
and algorithms we have built.
31 changes: 9 additions & 22 deletions docs/related.rst
Original file line number Diff line number Diff line change
@@ -1,35 +1,22 @@
.. _related:

Related packages
================

Other recommended NUFFT libraries
---------------------------------

- `NFFT3 <https://www-user.tu-chemnitz.de/~potts/nfft/>`_: well-supported and multi-featured C++ library using FFTW. Has MATLAB interface. However, significantly slower and/or more memory-intensive than FINUFFT (see reference [FIN]).
- `NFFT3 <https://www-user.tu-chemnitz.de/~potts/nfft/>`_: well-supported and multi-featured C++ library using FFTW. Has MATLAB MEX interface. However, significantly slower and/or more memory-intensive than FINUFFT (see reference [FIN]). Has many more general abilities, eg, inverse NUFFT. We are working on this too.

- `CMCL NUFFT <https://cims.nyu.edu/cmcl/nufft/nufft.html>`_: NYU single-threaded Fortran library using self-contained FFT, fast Gaussian gridding kernel. Has MATLAB MEX interface. Much (up to 50x even for one thread) slower than FINUFFT, but very easy to compile.

- `CMCL NUFFT <https://cims.nyu.edu/cmcl/nufft/nufft.html>`_: NYU single-threaded Fortran library using self-contained FFT, Gaussian kernel. Has MATLAB interface. Much slower than FINUFFT.
- `cuFINUFFT <https://github.com/flatironinstitute/cufinufft>`_: Our GPU version of FINUFFT, for single precision in 2D and 3D, type 1 and 2. Still under development by Melody Shih (NYU) and others. Often achieves speeds around 10x the CPU version.

- `MIRT <https://web.eecs.umich.edu/~fessler/code/index.html>`_ Michigan Image Reconstruction Toolbox. Native MATLAB, single-threaded sparse mat-vec, prestores all kernel evaluations, thus is memory-intensive. Slower than FINUFFT for all tolerances smaller than 0.1.
- `MIRT <https://web.eecs.umich.edu/~fessler/code/index.html>`_ Michigan Image Reconstruction Toolbox. Native MATLAB, single-threaded sparse mat-vec, prestores all kernel evaluations, thus is memory-intensive but surprisingly fast for a single-threaded implementation. However, slower than FINUFFT for all tolerances smaller than 0.1.

- `PyNUFFT <https://github.com/jyhmiinlin/pynufft>`_ Python code supporting CPU and GPU operation. Have not compared against FINUFFT yet.


Also see the summary of library performances in our paper [FIN].
Also see the summary of library performances in our paper [FIN] in the
:ref:`references <refs>`.


Interfaces to FINUFFT from other languages
------------------------------------------

- `FINUFFT.jl <https://github.com/ludvigak/FINUFFT.jl>`_: a `julia <https://julialang.org/>`_ language wrapper by Ludvig af Klinteberg (SFU). This is actually a secondary wrapper around our python interface, so you should make sure that the latter is working first.

- Vineet Bansal's pypi package https://pypi.org/project/finufftpy/


Packages making use of FINUFFT
------------------------------

Here are some packages dependent on FINUFFT (please let us know others):

- `ASPIRE <http://spr.math.princeton.edu>`_: software for cryo-EM, based at Amit Singer's group at Princeton. `github <https://github.com/PrincetonUniversity/ASPIRE-Python>`_

- `sinctransform <https://github.com/hannahlawrence/sinctransform>`_: C++
and MATLAB codes to evaluate sums of the sinc and sinc^2 kernels between arbitrary nonuniform points in 1,2, or 3 dimensions, by Hannah Lawrence (2017 summer intern at Flatiron).
53 changes: 43 additions & 10 deletions docs/users.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,35 @@
Users and citations
===================
.. _users:

Here we list papers describing work which uses FINUFFT or its new spreading
kernel. Papers that merely cite our work are listed separately at the bottom. Please let me know if you are a user but not listed:
Dependent packages, users, and citations
========================================

1. ASPIRE software for cryo-EM, based at Amit Singer's group at Princeton. https://github.com/PrincetonUniversity/ASPIRE-Python http://spr.math.princeton.edu/
Here we list packages that depend on FINUFFT, and papers or groups using it.
Papers that merely cite our work are listed separately at the bottom. Please let us know (and use github's dependent package link) if you are a user or package maintainer but not listed.

Packages relying on FINUFFT
---------------------------

Here are some packages dependent on FINUFFT (please let us know of others,
and also add them to github's Used By feature):

1. `SMILI <https://github.com/astrosmili/smili>`_, very long baseline interferometry reconstruction code by `Kazu Akiyama <http://kazuakiyama.github.io/>`_ and others, uses FINUFFT (2d1, 2d2, Fortran interfaces) as a `key library <https://smili.readthedocs.io/en/latest/install.html#external-libraries>`_. Akiyama used SMILI to reconstruct the `famous black hole image <https://physicstoday.scitation.org/do/10.1063/PT.6.1.20190411a/full/>`_ in 2019 from the Event Horizon Telescope.

#. `ASPIRE <http://spr.math.princeton.edu>`_: software for cryo-EM, based at Amit Singer's group at Princeton. `github <https://github.com/PrincetonUniversity/ASPIRE-Python>`_

#. `sinctransform <https://github.com/hannahlawrence/sinctransform>`_: C++ and MATLAB codes to evaluate sums of the sinc and sinc^2 kernels between arbitrary nonuniform points in 1,2, or 3 dimensions, by Hannah Lawrence (2017 summer intern at Flatiron).

#. `fsinc <https://github.com/gauteh/fsinc>`_: Gaute Hope's fast sinc transform and interpolation python package.

#. `FTK <https://github.com/flatironinstitute/ftk>`_: Factorization of the translation kernel for fast rigid image alignment, by Rangan, Spivak, Andén, and Barnett.

#. `FINUFFT.jl <https://github.com/ludvigak/FINUFFT.jl>`_: a `julia <https://julialang.org/>`_ language wrapper by Ludvig af Klinteberg (SFU), now using pure julia rather than python.

#. Vineet Bansal's pypi package https://pypi.org/project/finufftpy/. This will be updated soon.



Research output using FINUFFT
-----------------------------

#. "Cryo-EM reconstruction of continuous heterogeneity by Laplacian spectral volumes", Amit Moscovich, Amit Halevi, Joakim Andén, and Amit Singer. To appear, Inv. Prob. (2020), https://arxiv.org/abs/1907.01898

Expand All @@ -18,20 +43,28 @@ kernel. Papers that merely cite our work are listed separately at the bottom. Pl
series taken at unknown view angles with non-uniform distribution",
International Conference on Image Processing (ICIP), (2019).

#. Aleks Donev's group at NYU.
#. "Factorization of the translation kernel for fast rigid image alignment,"
Aaditya Rangan, Marina Spivak, Joakim Andén, and Alex Barnett.
Inverse Problems 36 (2), 024001 (2020).
https://arxiv.org/abs/1905.12317

Papers using our new window function but not the whole FINUFFT package:
#. Aleks Donev's group at NYU; ongoing

Papers using our new window (spreading) function but not the whole FINUFFT package:

1. Davood Shamshirgar and Anna-Karin Tornberg, "Fast Ewald summation for electrostatic potentials with arbitrary periodicity", exploit our "Barnett-Magland" (BM), aka exp-sqrt, window function. https://arxiv.org/abs/1712.04732

#. Daniel Potts and Manfred Tasche, "Uniform error estimates for the NFFT", (2019) https://arxiv.org/abs/1912.09746 Claims a proof of tighter error constant for our exp-sqrt kernel, via Chebyshev expansions. See our remark on this in
https://arxiv.org/abs/2001.09405



Citations to FINUFFT or its paper, that are not actual users:
Citations to FINUFFT that do not appear to be actual users
----------------------------------------------------------

1. https://arxiv.org/abs/1903.08365

#. https://arxiv.org/abs/1908.00041

#. https://arxiv.org/abs/1908.00574

#. https://arxiv.org/abs/1912.09746

Binary file modified finufft-manual.pdf
Binary file not shown.

0 comments on commit d8f49f3

Please sign in to comment.