procrustes.utils
Utility Module.
- procrustes.utils.compute_error(a: ndarray, b: ndarray, t: ndarray, s: ndarray | None = None) float [source]
Return the one- or two-sided Procrustes (squared Frobenius norm) error.
The double-sided Procrustes error is defined as
\[\|\mathbf{S}\mathbf{A}\mathbf{T} - \mathbf{B}\|_{F}^2 = \text{Tr}\left[ \left(\mathbf{S}\mathbf{A}\mathbf{T} - \mathbf{B}\right)^\dagger \left(\mathbf{S}\mathbf{A}\mathbf{T} - \mathbf{B}\right)\right]\]when \(\mathbf{S}\) is the identity matrix \(\mathbf{I}\), this is called the one-sided Procrustes error.
- Parameters:
a (ndarray) -- The 2D-array \(\mathbf{A}_{m \times n}\) which is going to be transformed.
b (ndarray) -- The 2D-array \(\mathbf{B}_{m \times n}\) representing the reference matrix.
t (ndarray) -- The 2D-array \(\mathbf{T}_{n \times n}\) representing the right-hand-side transformation matrix.
s (ndarray, optional) -- The 2D-array \(\mathbf{S}_{m \times m}\) representing the left-hand-side transformation matrix. If set to None, the one-sided Procrustes error is computed.
- Returns:
error -- The squared Frobenius norm of difference between the transformed array, \(\mathbf{S} \mathbf{A}\mathbf{T}\), and the reference array, \(\mathbf{B}\).
- Return type:
float
- procrustes.utils.setup_input_arrays(array_a: ndarray, array_b: ndarray, remove_zero_col: bool, remove_zero_row: bool, pad: bool, translate: bool, scale: bool, check_finite: bool, weight: ndarray | None = None) Tuple[ndarray, ndarray] [source]
Check and process array inputs for the Procrustes transformation routines.
Usually, the precursor step before all Procrustes methods.
- Parameters:
array_a (npdarray) -- The 2D array \(A\) being transformed.
array_b (npdarray) -- The 2D reference array \(B\).
remove_zero_col (bool) -- If True, zero columns (values less than 1e-8) on the right side will be removed.
remove_zero_row (bool) -- If True, zero rows (values less than 1e-8) on the bottom will be removed.
pad (bool) -- Add zero rows (at the bottom) and/or columns (to the right-hand side) of matrices \(\mathbf{A}\) and \(\mathbf{B}\) so that they have the same shape.
translate (bool) -- If true, then translate both arrays \(A, B\) to the origin, ie columns of the arrays will have mean zero.
scale -- If True, both arrays are normalized to one with respect to the Frobenius norm, ie \(Tr(A^T A) = 1\).
check_finite (bool) -- If true, then checks if both arrays \(A, B\) are numpy arrays and two-dimensional.
weight (A list of ndarray or ndarray) -- A list of the weight arrays or one numpy array. When only on numpy array provided, it is assumed that the two arrays \(A\) and \(B\) share the same weight matrix.
- Returns:
Returns the padded arrays, in that they have the same matrix dimensions.
- Return type:
(ndarray, ndarray)
- class procrustes.utils.ProcrustesResult[source]
Represents the Procrustes analysis result.
- error
The Procrustes (squared Frobenius norm) error.
- Type:
float
- new_a
The translated/scaled numpy ndarray \(\mathbf{A}\).
- Type:
ndarray
- new_b
The translated/scaled numpy ndarray \(\mathbf{B}\).
- Type:
ndarray
- t
The 2D-array \(\mathbf{T}\) representing the right-hand-side transformation matrix.
- Type:
ndarray
- s
The 2D-array \(\mathbf{S}\) representing the left-hand-side transformation matrix. If set to None, the one-sided Procrustes was performed.
- Type:
ndarray
Methods
clear
()copy
()fromkeys
(iterable[, value])Create a new dictionary with keys from iterable and values set to value.
get
(key[, default])Return the value for key if key is in the dictionary, else default.
items
()keys
()pop
(key[, default])If the key is not found, return the default if given; otherwise, raise a KeyError.
popitem
(/)Remove and return a (key, value) pair as a 2-tuple.
setdefault
(key[, default])Insert key with a value of default if key is not in the dictionary.
update
([E, ]**F)If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
values
()