Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update mrinufft_convention.rst #146

Merged
merged 1 commit into from
Jun 28, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions docs/mrinufft_convention.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ The NUFFT Operator
==================


MRI-NUFFT provides a common interface for computing NUFFT, regardless of the computation backend choosen. All the backend implements the followings methods and attributes. More technical details are available in the API reference.
MRI-NUFFT provides a common interface for computing NUFFT, regardless of the chosen computation backend. All the backends implement the following methods and attributes. More technical details are available in the API reference.

All MRI-NUFFT operator inherits from :class:`FourierOperatorBase` . The minimum signature of an MRI nufft operator is:
All MRI-NUFFT operators inherit from :class:`FourierOperatorBase` . The minimum signature of an MRI nufft operator is:

.. code-block:: python

Expand All @@ -37,7 +37,7 @@ All MRI-NUFFT operator inherits from :class:`FourierOperatorBase` . The minimum

.. tip::

The precision of the samples array will determine the precision of the computation. See also :ref:`K-Space Trajectories`
The precision of the samples array will determine the precision of the computation. See also :ref:`K-Space Trajectories`

Moreover, the two following methods should be implemented for each backend

Expand All @@ -49,33 +49,33 @@ After initialization, defaults for the following methods are available, as well
* ``data_consistency(image, obs_data)``: perform the data consistency step :math:`\cal{F}^*(\cal{F} x - y)`
* ``get_lipschitz_cst(max_iter)``: Estimate the spectral radius of the auto adjoint operator :math:`\cal{F}^*\cal{F}`

If the NUFFT backend makes some optimization possible for these backend, these can be manually overriden.
If the NUFFT backend makes some optimization possible, these backends can be manually overriden.



Extensions
----------

The base NUFFT operators can be extended to add extra functionality. With MRI-NUFFT we already provides:
The base NUFFT operators can be extended to add extra functionality. With MRI-NUFFT we already provide:

- Off-Resonnance Correction operators, using subspace separation (Sutton et al. , )
- Off-resonnance Correction operators, using subspace separation (Sutton et al. IEEE TMI 2005)
- Auto-differentiation (for Deep Learning applications)


Adding a NUFFT Backend
----------------------

Adding a NUFFT backend to MRI-NUFFT should be easy. We recommend to check how other backend have been inplemented. CPU-based nufft interface can use the `FourierOperatorCPU` to minimize the boiler-plate.
Adding a NUFFT backend to MRI-NUFFT should be easy. We recommend to check how other backends have been inplemented. CPU-based nufft interface can use the `FourierOperatorCPU` to minimize the boiler-plate.


K-Space Trajectories
====================

The k-space sampling trajectories are generated in the :py:mod:`mrinufft.trajectories` module and then use in the differents backends.
The k-space sampling trajectories are generated in the :py:mod:`mrinufft.trajectories` module and then used in the differents backends.
They are ``numpy`` arrays with the followings characteristics:

- ``float32`` or ``float64`` precision (this will trigger the use of single or double precision in the computations using this trajectory). ``float32`` precision is recommended for computational efficiency.

- They are row major array (C Convention) with the following shape: ``(N_shot, N_samples, dim)`` (where dim is either 2 or 3). A "flatten" version of shape ``(N_shots * N_samples, dim)`` is also acceptable by operators.
- They are row-major array (C Convention) with the following shape: ``(N_shot, N_samples, dim)`` (where dim is either 2 or 3). A "flatten" version of shape ``(N_shots * N_samples, dim)`` is also acceptable by operators.

- By convention all k-space coordinate are contains in :math:`[-0.5,0.5)`, They will be rescaled internally by operator if required.
- By convention all k-space coordinates are in the range :math:`[-0.5,0.5)`. They will be rescaled internally by operator if required.
Loading