corrct.data_terms
Data fidelity classes.
@author: Nicola VIGANÒ, Computational Imaging group, CWI, The Netherlands, and ESRF - The European Synchrotron, Grenoble, France
Module Contents
Classes
Define the DataFidelity classes interface. |
|
l2-norm data-fidelity class. |
|
Weighted l2-norm data-fidelity class. |
|
l2-norm ball data-fidelity class. |
|
Huber-norm data-fidelity class. Given a parameter a: l2-norm for x < a, and l1-norm for x > a. |
|
l1-norm data-fidelity class. |
|
l12-norm data-fidelity class. |
|
l1-norm ball data-fidelity class. |
|
KullbackLeibler data-fidelity class. |
|
nuclear-norm data-fidelity class. |
Functions
Data
API
- corrct.data_terms.eps
None
- corrct.data_terms.NDArrayFloat
None
- corrct.data_terms._soft_threshold(values: corrct.data_terms.NDArrayFloat, threshold: Union[float, corrct.data_terms.NDArrayFloat]) None [source]
- class corrct.data_terms.DataFidelityBase(background: Union[float, corrct.data_terms.NDArrayFloat, None] = None)[source]
Bases:
abc.ABC
Define the DataFidelity classes interface.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- data: Union[corrct.data_terms.NDArrayFloat, None]
None
- sigma: Union[float, corrct.data_terms.NDArrayFloat]
None
- background: Union[corrct.data_terms.NDArrayFloat, None]
None
- sigma_data: Union[corrct.data_terms.NDArrayFloat, None]
None
- __data_fidelity_name__ = <Multiline-String>
- __getitem__(ind: Any) corrct.data_terms.DataFidelityBase [source]
Slice the norm and all its attributes.
Parameters
ind : Any Slicing indices.
Returns
DataFidelityBase The sliced norm.
- upper() str [source]
Return the upper case name of the data-fidelity.
Returns
str Upper case string name of the data-fidelity.
- lower() str [source]
Return the lower case name of the data-fidelity.
Returns
str Lower case string name of the data-fidelity.
- assign_data(data: Union[float, corrct.data_terms.NDArrayFloat, None] = None, sigma: Union[float, corrct.data_terms.NDArrayFloat] = 1.0) None [source]
Initialize the data bias, and sigma of the data term.
Parameters
data : Union[float, NDArrayFloat, None], optional The data bias, by default None sigma : Union[float, NDArrayFloat], optional The sigma, by default 1.0
- compute_residual(proj_primal: corrct.data_terms.NDArrayFloat, mask: Union[corrct.data_terms.NDArrayFloat, None] = None) corrct.data_terms.NDArrayFloat [source]
Compute the residual in the dual domain.
Parameters
proj_primal : NDArrayFloat Projection of the primal solution mask : Union[NDArrayFloat, None], optional Mask of the dual domain, by default None
Returns
NDArrayFloat The residual
- abstract compute_residual_norm(dual: corrct.data_terms.NDArrayFloat) float [source]
Compute the norm of the residual.
Parameters
dual : NDArrayFloat The residual in the dual domain.
Returns
float The residual norm.
- compute_data_dual_dot(dual: corrct.data_terms.NDArrayFloat, mask: Union[corrct.data_terms.NDArrayFloat, None] = None) float [source]
Compute the dot product of the data bias and the dual solution.
Parameters
dual : NDArrayFloat The dual solution. mask : Union[NDArrayFloat, None], optional Mask of the dual domain, by default None
Returns
float The dot product between the data bias and the dual solution
- initialize_dual() corrct.data_terms.NDArrayFloat [source]
Initialize the dual domain solution.
Returns
NDArrayFloat A zero array with the dimensions of the dual domain.
- update_dual(dual: corrct.data_terms.NDArrayFloat, proj_primal: corrct.data_terms.NDArrayFloat) None [source]
Update the dual solution.
Parameters
dual : NDArrayFloat The current dual solution proj_primal : NDArrayFloat The projected primal solution
- abstract apply_proximal(dual: corrct.data_terms.NDArrayFloat) None [source]
Apply the proximal in the dual domain.
Parameters
dual : NDArrayFloat The dual solution
- abstract compute_primal_dual_gap(proj_primal: corrct.data_terms.NDArrayFloat, dual: corrct.data_terms.NDArrayFloat, mask: Union[corrct.data_terms.NDArrayFloat, None] = None) float [source]
Compute the primal-dual gap of the current solution.
Parameters
proj_primal : NDArrayFloat The projected primal solution (in the dual domain) dual : NDArrayFloat The dual solution mask : Union[NDArrayFloat, None], optional Mask in the dual domain, by default None
Returns
float The primal-dual gap
- class corrct.data_terms.DataFidelity_l2(background: Union[float, corrct.data_terms.NDArrayFloat, None] = None)[source]
Bases:
corrct.data_terms.DataFidelityBase
l2-norm data-fidelity class.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘l2’
- class corrct.data_terms.DataFidelity_wl2(weights: Union[float, corrct.data_terms.NDArrayFloat], background: Union[float, corrct.data_terms.NDArrayFloat, None] = None)[source]
Bases:
corrct.data_terms.DataFidelity_l2
Weighted l2-norm data-fidelity class.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘wl2’
- assign_data(data: Union[float, corrct.data_terms.NDArrayFloat, None], sigma: Union[float, corrct.data_terms.NDArrayFloat] = 1.0)[source]
- class corrct.data_terms.DataFidelity_l2b(local_error: Union[float, corrct.data_terms.NDArrayFloat], background: Union[float, corrct.data_terms.NDArrayFloat, None] = None)[source]
Bases:
corrct.data_terms.DataFidelity_l2
l2-norm ball data-fidelity class.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘l2b’
- assign_data(data: Union[float, corrct.data_terms.NDArrayFloat, None], sigma: Union[float, corrct.data_terms.NDArrayFloat] = 1.0)[source]
- class corrct.data_terms.DataFidelity_Huber(local_error, background=None, l2_axis=None)[source]
Bases:
corrct.data_terms.DataFidelityBase
Huber-norm data-fidelity class. Given a parameter a: l2-norm for x < a, and l1-norm for x > a.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘Hub’
- class corrct.data_terms.DataFidelity_l1(background=None)[source]
Bases:
corrct.data_terms.DataFidelityBase
l1-norm data-fidelity class.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘l1’
- class corrct.data_terms.DataFidelity_l12(background=None, l2_axis=0)[source]
Bases:
corrct.data_terms.DataFidelity_l1
l12-norm data-fidelity class.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘l12’
- class corrct.data_terms.DataFidelity_l1b(local_error, background=None)[source]
Bases:
corrct.data_terms.DataFidelity_l1
l1-norm ball data-fidelity class.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘l1b’
- class corrct.data_terms.DataFidelity_KL(background: Union[float, corrct.data_terms.NDArrayFloat, None] = None)[source]
Bases:
corrct.data_terms.DataFidelityBase
KullbackLeibler data-fidelity class.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘KL’
- class corrct.data_terms.DataFidelity_ln(background=None, ln_axes: Sequence[int] = (1, -1), spectral_norm: corrct.data_terms.DataFidelityBase = DataFidelity_l1())[source]
Bases:
corrct.data_terms.DataFidelityBase
nuclear-norm data-fidelity class.
Initialization
Initialize the base data-fidelity class.
Parameters
background : float | NDArrayFloat | None, optional The data background. The default is None.
- __data_fidelity_name__
‘ln’