"""Monalisa: reconstruction of non-Cartesian and Cartesian MRI data.
Python port of the MATLAB toolbox Monalisa (MattechLab, https://github.com/MattechLab/monalisa).
============================= ==================================================================
``monalisa.recon`` reconstructions: gridded, iterative, chain (motion-compensated)
``monalisa.io`` raw data readers, acquisition parameters, MATLAB v7.3 files
``monalisa.trajectory`` trajectories, grid size and step, line format
``monalisa.geometry`` volume elements (density compensation), Voronoi cells
``monalisa.gridding`` gridding, sparse gridding and deformation matrices
``monalisa.sparse`` Monalisa's sparse matrix and its products
``monalisa.fourier`` centered DFTs, deapodization, non-Cartesian Fourier model
``monalisa.coil`` coil sensitivity estimation and coil combination
``monalisa.binning`` binning of the lines, binned data on disk (mitosius)
``monalisa.image`` crop, zero fill, resize, deformation, smoothing, RMS and MIP
``monalisa.registration`` demons deformation fields between frames
``monalisa.optim`` building blocks of the iterative reconstructions
``monalisa.display`` image viewers and polygon masks
``monalisa.array`` array formats (block, column, point) and cells
``monalisa.util`` argument defaults, clock
============================= ==================================================================
Every public function and class is also available from the top-level package::
import monalisa as ml
x = ml.mathilda(y, t, ve, C, N_u, n_u, dK_u)
The functions keep the arguments, array shapes (column-major) and precision of the MATLAB
functions they are ported from. docs/renaming.md lists the MATLAB name of each one;
``find_function("bmMathilda")`` returns the Python function of a MATLAB name.
"""
from __future__ import annotations
import importlib
from monalisa import (
array,
binning,
coil,
display,
fourier,
geometry,
gridding,
image,
io,
optim,
recon,
registration,
sparse,
trajectory,
util,
)
from monalisa._upstream import MATLAB_NAMES, UPSTREAM_COMMIT
from monalisa.array import (
block_reshape,
cell_to_array,
col,
col_reshape,
index_to_multi_index,
is_block_shape,
is_col_shape,
is_scalar,
permute_to_col,
permute_to_point,
point_reshape,
to_single,
zero,
)
from monalisa.binning import mitosis, mitosius_create, mitosius_load
from monalisa.coil import (
coil_sense_non_cart_data,
coil_sense_non_cart_mask_automatic,
coil_sense_non_cart_primary,
coil_sense_non_cart_ref,
coil_sense_non_cart_secondary,
coil_sense_pinv,
detect_roi,
select_roi,
threshold_rms_mip,
)
from monalisa.display import poly2mask, roipoly, show_image
from monalisa.fourier import (
deapodization,
dft1,
dft1_conj_trans,
dft2,
dft2_conj_trans,
dft3,
dft3_conj_trans,
fc,
fc_conj,
idf,
idf1,
idf1_conj_trans,
idf2,
idf2_conj_trans,
idf3,
idf3_conj_trans,
kf,
kf_conj,
nakatsha,
nakatsha_matlab,
shanna,
shanna_matlab,
)
from monalisa.geometry import (
volume_element,
volume_element1,
volume_element_cartesian2,
volume_element_center_out_radial3,
volume_element_full_radial3,
volume_element_random_partial_cartesian2_x,
volume_element_random_partial_cartesian3_x,
volume_element_voronoi_box2,
volume_element_voronoi_center_out_radial2,
volume_element_voronoi_full_radial2,
volume_element_voronoi_full_radial3,
voronoi,
)
from monalisa.gridding import (
gridder_n2u_leight,
im_deform_field_to_sparse_mat,
im_deform_field_to_sparse_mat_ind_weight,
traj_to_sparse_mat,
)
from monalisa.image import (
im_crop,
im_deform,
im_deform_field_hard_thresholding2,
im_deform_t,
im_dim,
im_laplace_equation_solver,
im_laplace_iterator,
im_laplacian,
im_pseudo_diffusion,
im_pseudo_diffusion_in_mask,
im_reshape,
im_resize,
im_zero_fill,
mip,
rms,
)
from monalisa.io import (
IsmrmrdReader,
MriAcquisitionParam,
RawDataReader,
SiemensReader,
check_dir,
check_metadata_interactive,
correct_metadata_interactive,
create_dir,
create_raw_data_reader,
ismrmrd_read_meta_data,
ismrmrd_read_raw_data,
loadmat73,
savemat73,
siemens_read_meta_data,
siemens_read_raw_data,
)
from monalisa.optim import (
WitnessInfo,
axpy,
back_gradient,
back_gradient_n,
back_gradient_n_t,
back_gradient_t,
euclidean_prod,
initial_witness_info,
minus,
mult,
plus,
prox_one_norm,
squared_norm,
y_norm,
y_ve_reshape,
)
from monalisa.recon import (
mathilda,
nasha,
sensa,
sensitiva_morphosia_chain,
sleva,
steva,
teva_duo_morphosia_chain,
teva_morphosia_chain,
)
from monalisa.registration import im_deform_field_chain_im_reg_demons23, im_deform_field_sheet_im_reg_demons23
from monalisa.sparse import (
SparseMat,
sparse_mat_block_partition,
sparse_mat_complete_matlab_sparse,
sparse_mat_from_matlab_sparse,
sparse_mat_r_n_jump_to_index,
sparse_mat_vec,
)
from monalisa.trajectory import (
low_res,
phyllotaxis_angle3,
traj,
traj_format,
traj_full_radial3_phyllotaxis_line_assym2,
traj_grid,
traj_grid_size,
traj_grid_step,
traj_line_direction,
traj_line_reshape,
traj_n_line,
traj_norm,
traj_squared_norm,
)
from monalisa.util import default_grid, default_kernel, default_sparse_type, time_in_second, varargin
__version__ = "0.1.3"
[docs]
def find_function(matlab_name: str):
"""The Python function or class ported from the MATLAB function ``matlab_name``.
Returns ``None`` when it is not ported. Example: ``find_function("bmMathilda")`` is
``monalisa.recon.mathilda``.
"""
target = MATLAB_NAMES.get(matlab_name)
if target is None:
return None
package, name = target.split(".")
return getattr(importlib.import_module(f"monalisa.{package}"), name)
__all__ = [
"MATLAB_NAMES",
"UPSTREAM_COMMIT",
"find_function",
"array",
"binning",
"coil",
"display",
"fourier",
"geometry",
"gridding",
"image",
"io",
"optim",
"recon",
"registration",
"sparse",
"trajectory",
"util",
"block_reshape",
"cell_to_array",
"col",
"col_reshape",
"index_to_multi_index",
"is_block_shape",
"is_col_shape",
"is_scalar",
"permute_to_col",
"permute_to_point",
"point_reshape",
"to_single",
"zero",
"mitosis",
"mitosius_create",
"mitosius_load",
"coil_sense_non_cart_data",
"coil_sense_non_cart_mask_automatic",
"coil_sense_non_cart_primary",
"coil_sense_non_cart_ref",
"coil_sense_non_cart_secondary",
"coil_sense_pinv",
"detect_roi",
"select_roi",
"threshold_rms_mip",
"poly2mask",
"roipoly",
"show_image",
"deapodization",
"dft1",
"dft1_conj_trans",
"dft2",
"dft2_conj_trans",
"dft3",
"dft3_conj_trans",
"fc",
"fc_conj",
"idf",
"idf1",
"idf1_conj_trans",
"idf2",
"idf2_conj_trans",
"idf3",
"idf3_conj_trans",
"kf",
"kf_conj",
"nakatsha",
"nakatsha_matlab",
"shanna",
"shanna_matlab",
"volume_element",
"volume_element1",
"volume_element_cartesian2",
"volume_element_center_out_radial3",
"volume_element_full_radial3",
"volume_element_random_partial_cartesian2_x",
"volume_element_random_partial_cartesian3_x",
"volume_element_voronoi_box2",
"volume_element_voronoi_center_out_radial2",
"volume_element_voronoi_full_radial2",
"volume_element_voronoi_full_radial3",
"voronoi",
"gridder_n2u_leight",
"im_deform_field_to_sparse_mat",
"im_deform_field_to_sparse_mat_ind_weight",
"traj_to_sparse_mat",
"im_crop",
"im_deform",
"im_deform_field_hard_thresholding2",
"im_deform_t",
"im_dim",
"im_laplace_equation_solver",
"im_laplace_iterator",
"im_laplacian",
"im_pseudo_diffusion",
"im_pseudo_diffusion_in_mask",
"im_reshape",
"im_resize",
"im_zero_fill",
"mip",
"rms",
"IsmrmrdReader",
"MriAcquisitionParam",
"RawDataReader",
"SiemensReader",
"check_dir",
"check_metadata_interactive",
"correct_metadata_interactive",
"create_dir",
"create_raw_data_reader",
"ismrmrd_read_meta_data",
"ismrmrd_read_raw_data",
"loadmat73",
"savemat73",
"siemens_read_meta_data",
"siemens_read_raw_data",
"WitnessInfo",
"axpy",
"back_gradient",
"back_gradient_n",
"back_gradient_n_t",
"back_gradient_t",
"euclidean_prod",
"initial_witness_info",
"minus",
"mult",
"plus",
"prox_one_norm",
"squared_norm",
"y_norm",
"y_ve_reshape",
"mathilda",
"nasha",
"sensa",
"sensitiva_morphosia_chain",
"sleva",
"steva",
"teva_duo_morphosia_chain",
"teva_morphosia_chain",
"im_deform_field_chain_im_reg_demons23",
"im_deform_field_sheet_im_reg_demons23",
"SparseMat",
"sparse_mat_block_partition",
"sparse_mat_complete_matlab_sparse",
"sparse_mat_from_matlab_sparse",
"sparse_mat_r_n_jump_to_index",
"sparse_mat_vec",
"low_res",
"phyllotaxis_angle3",
"traj",
"traj_format",
"traj_full_radial3_phyllotaxis_line_assym2",
"traj_grid",
"traj_grid_size",
"traj_grid_step",
"traj_line_direction",
"traj_line_reshape",
"traj_n_line",
"traj_norm",
"traj_squared_norm",
"default_grid",
"default_kernel",
"default_sparse_type",
"time_in_second",
"varargin",
]