diff --git a/autogalaxy/__init__.py b/autogalaxy/__init__.py index 7e6dad73..1584430d 100644 --- a/autogalaxy/__init__.py +++ b/autogalaxy/__init__.py @@ -26,7 +26,6 @@ from autoarray.mask.derive.zoom_2d import Zoom2D from autoarray.operators.transformer import TransformerDFT # noqa from autoarray.operators.transformer import TransformerNUFFT # noqa -from autoarray.operators.transformer import TransformerNUFFTPyNUFFT # noqa from autoarray.layout.layout import Layout2D # noqa from autoarray.structures.arrays.uniform_1d import Array1D # noqa from autoarray.structures.arrays.uniform_2d import Array2D # noqa diff --git a/docs/index.md b/docs/index.md index e134b12a..21afe8c6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -90,7 +90,7 @@ be passed through `Operator` objects to apply a 2D convolution or Fast Fourier T the `Galaxy`'s image to an imaging or interferometer dataset. The `inversion` package contains a range of non-parametric models which fit a galaxy's light using a Bayesian linear matrix inversion. The `astropy` cosmology module is used to handle unit conversions and calculations are optimized using the packages `NumPy` [@numpy], `numba` [@numba] -and `PyNUFFT` [@pynufft]. +and `nufftax` [@nufftax]. ```python import autogalaxy as ag diff --git a/docs/installation/conda.md b/docs/installation/conda.md index 0e28dfb0..09aeb07c 100644 --- a/docs/installation/conda.md +++ b/docs/installation/conda.md @@ -96,10 +96,10 @@ successful numba install working, with more information provided [at this readth ## Optional -For interferometer analysis there are two optional dependencies that must be installed via the commands: +For interferometer analysis there is one optional dependency that must be installed via the command: ```bash -pip install pynufft +pip install nufftax ``` **PyAutoGalaxy** will run without these libraries and it is recommended that you only install them if you intend to diff --git a/docs/installation/overview.md b/docs/installation/overview.md index fe1023cb..c1eeffde 100644 --- a/docs/installation/overview.md +++ b/docs/installation/overview.md @@ -54,4 +54,4 @@ our [building from source installation guide](https://pyautogalaxy.readthedocs.i And the following optional dependencies: -**pynufft**: +**nufftax**: diff --git a/docs/installation/pip.md b/docs/installation/pip.md index 5bf2c4d6..776333ef 100644 --- a/docs/installation/pip.md +++ b/docs/installation/pip.md @@ -84,10 +84,10 @@ successful numba install working, with more information provided [at this readth ## Optional -For interferometer analysis there are two optional dependencies that must be installed via the commands: +For interferometer analysis there is one optional dependency that must be installed via the command: ```bash -pip install pynufft +pip install nufftax ``` **PyAutoGalaxy** will run without these libraries and it is recommended that you only install them if you intend to diff --git a/docs/installation/source.md b/docs/installation/source.md index 77162dc6..51bc40f4 100644 --- a/docs/installation/source.md +++ b/docs/installation/source.md @@ -52,7 +52,7 @@ pip install numba For unit tests to pass you will also need the following optional requirements: ```bash -pip install pynufft +pip install nufftax ``` If you are using a `conda` environment, add the source repository as follows: diff --git a/docs/overview/overview_3_features.md b/docs/overview/overview_3_features.md index 51774bb6..5bc57198 100644 --- a/docs/overview/overview_3_features.md +++ b/docs/overview/overview_3_features.md @@ -34,7 +34,7 @@ Modeling interferometer data from submillimeter (e.g. ALMA) and radio (e.g. LOFA Visibilities data is fitted directly in the uv-plane, circumventing issues that arise when fitting a dirty image such as correlated noise. This uses the non-uniform fast fourier transform algorithm -\[PyNUFFT\]() to efficiently map the galaxy model images to the uv-plane. +\[nufftax\]() to efficiently map the galaxy model images to the uv-plane. Checkout the `autogalaxy_workspace/*/interferometer` package to get started. diff --git a/files/citations.bib b/files/citations.bib index 7d035281..1e2b48c3 100644 --- a/files/citations.bib +++ b/files/citations.bib @@ -189,19 +189,20 @@ @article{pyautolens title = {`PyAutoLens`: Open-Source Strong Gravitational Lensing}, journal = {J. Open Source Softw.} } -@article{pynufft, -abstract = {A Python non-uniform fast Fourier transform (PyNUFFT) package has been developed to accelerate multidimensional non-Cartesian image reconstruction on heterogeneous platforms. Since scientific computing with Python encompasses a mature and integrated environment, the time efficiency of the NUFFT algorithm has been a major obstacle to real-time non-Cartesian image reconstruction with Python. The current PyNUFFT software enables multi-dimensional NUFFT accelerated on a heterogeneous platform, which yields an efficient solution to many non-Cartesian imaging problems. The PyNUFFT also provides several solvers, including the conjugate gradient method, 1 total variation regularized ordinary least square (L1TV-OLS), and 1 total variation regularized least absolute deviation (L1TV-LAD). Metaprogramming libraries have been employed to accelerate PyNUFFT. The PyNUFFT package has been tested on multi-core central processing units (CPUs) and graphic processing units (GPUs), with acceleration factors of 6.3–9.5× on a 32-thread CPU platform and 5.4–13× on a GPU.}, -author = {Lin, Jyh Miin}, -doi = {10.3390/jimaging4030051}, -file = {:home/jammy/Documents/Papers/Software/jimaging-04-00051-v2.pdf:pdf}, -issn = {2313433X}, -journal = {Journal of Imaging}, -keywords = {Graphic processing unit (GPU),Heterogeneous system architecture (HSA),Magnetic resonance imaging (MRI),Multi-core system,Total variation (TV)}, -number = {3}, -pages = {1--22}, -title = {{Python non-uniform fast fourier transform (PyNUFFT): An accelerated non-cartesian MRI package on a heterogeneous platform (CPU/GPU)}}, -volume = {4}, -year = {2018} +@software{nufftax, +author = {Gragas and Oudoumanessah, Geoffroy and Iollo, Jacopo}, +title = {nufftax: Pure {JAX} implementation of the Non-Uniform Fast Fourier Transform}, +url = {https://github.com/GragasLab/nufftax}, +year = {2026} +} +@article{finufft, +author = {Barnett, Alexander H. and Magland, Jeremy F. and af Klinteberg, Ludvig}, +title = {A parallel non-uniform fast {F}ourier transform library based on an 'exponential of semicircle' kernel}, +journal = {SIAM J. Sci. Comput.}, +volume = {41}, +number = {5}, +pages = {C479--C504}, +year = {2019} } @article{pyswarms, author = {Lester James V. Miranda}, diff --git a/files/citations.md b/files/citations.md index 98f503bc..18621d01 100644 --- a/files/citations.md +++ b/files/citations.md @@ -14,11 +14,11 @@ This work uses the following software packages: - `dynesty` https://github.com/joshspeagle/dynesty [@dynesty] [@dynesty1] [@dynesty2] [@dynesty3] [@dynesty4] - `emcee` https://github.com/dfm/emcee [@emcee] - `matplotlib` https://github.com/matplotlib/matplotlib [@matplotlib] +- `nufftax` https://github.com/GragasLab/nufftax [@nufftax] [@finufft] - `numba` https://github.com/numba/numba [@numba] - `NumPy` https://github.com/numpy/numpy [@numpy] - `PyAutoFit` https://github.com/PyAutoLabs/PyAutoFit [@pyautofit] - `PyAutoGalaxy` https://github.com/PyAutoLabs/PyAutoGalaxy [@Nightingale2018] [@pyautogalaxy] -- `PyNUFFT` https://github.com/jyhmiinlin/pynufft [@pynufft] - `PySwarms` https://github.com/ljvmiranda921/pyswarms [@pyswarms] - `Python` https://www.python.org/ [@python] - `scikit-image` https://github.com/scikit-image/scikit-image [@scikit-image] diff --git a/files/citations.tex b/files/citations.tex index d43a805b..fa1b509b 100644 --- a/files/citations.tex +++ b/files/citations.tex @@ -52,8 +52,8 @@ \section*{Software Citations} \item -\href{https://github.com/jyhmiinlin/pynufft}{\textt{PyNUFFT}} -\citep{pynufft} +\href{https://github.com/GragasLab/nufftax}{\textt{nufftax}} +\citep{nufftax, finufft} \item \href{https://github.com/ljvmiranda921/pyswarms}{\textt{PySwarms}} diff --git a/pyproject.toml b/pyproject.toml index 1c9d386c..ba42d868 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,7 +57,6 @@ jax = [] optional = [ "autogalaxy[jax]", "numba", - "pynufft", "zeus-mcmc==2.5.4", "getdist==1.4" ]