dubfi.linalg.csc_sparse¶
CSC sparse matrix implementation of generic operators.
Added in version 0.1.0: (initial release)
Classes¶
Compressed sparse column representation of a linear operator. |
|
Auxiliary class used for computing trace products. |
|
CSC representation of R matrix in flux inversion problem. |
Functions¶
|
Compute trace of a matrix in compressed sparse column representation. |
|
Compute trace(A @ B) where Ax := apply_a(x) and B is represented as BSR (data, indices, indptr). |
|
Compute trace(A @ B) where Ax := apply_a(x) and B is represented as BSC (data, indices, indptr). |
|
Compute trace(A @ B) represented as sparse CSC and CSR arrays. |
|
Construct ensemble contribution to R CSC data. |
|
Construct gradient of R CSC data. |
|
Construct Hesse matrix of R CSC data. |
Module Contents¶
- class dubfi.linalg.csc_sparse.CscMatrix(array, symmetric=False, use_inv=True)¶
Bases:
dubfi.linalg.types.OperatorCompressed sparse column representation of a linear operator.
- property symmetric¶
Indicate whether matrix is (or must be) real-symmetric.
- property splu¶
Sparse LU decomposition of self.
- tonumpy()¶
Convert to dense array.
- property csc_array: scipy.sparse.csc_array¶
Return CSC sparse array representation.
- Return type:
scipy.sparse.csc_array
- diagonal()¶
Return diagonal of self.
- __mul__(other)¶
Multiply by scalar or numpy array treated as scalar along vector space dimensions.
- __add__(other)¶
Add other operator.
- __iadd__(other)¶
Add other operator in-place.
- __sub__(other)¶
Subtract other operator.
- __isub__(other)¶
Subtract other operator in-place.
- apply(vec)¶
Apply operator on vector: self @ vec.
- rapply(vec)¶
Apply transpose operator on vector: self.T @ vec.
- inv()¶
Compute (multiplicative) inverse operator.
- solve(vec)¶
Solve linear equation self @ x = vec for x.
- chain(other)¶
Combine operators: self @ other.
- trace()¶
Compute trace of self.
- logdet()¶
Compute log(det(self)) assuming that self is a positive definite, real-symmetric matrix.
- class dubfi.linalg.csc_sparse.CscTraceProdOperator(data, indices, indptr, symmetric=False)¶
Bases:
dubfi.linalg.types.AbstractOperatorAuxiliary class used for computing trace products.
- property shape¶
Shape of array (matrix) representation of self.
- property symmetric¶
True if self equals its adjoint.
- apply(vec)¶
Apply operator on vector: self @ vec.
- rapply(vec)¶
Apply transpose operator on vector: self.T @ vec.
- trace()¶
Compute trace of self.
- trace_product(other)¶
Compute trace(self @ other).
- tonumpy()¶
Numpy array (matrix) representation of self.
- chain(other)¶
Combine operators: self @ other.
- __mul__(other)¶
Multiply element-wise.
- __imul__(other)¶
Multiply element-wise in-place.
- abstractmethod solve(vec)¶
Solve linear equation self @ x = vec for x.
- dot(other)¶
Inner product along non-vector dimensions.
- __add__(other)¶
Add two linear operators.
- __iadd__(other)¶
Add two linear operators in-place.
- __sub__(other)¶
Subtract two linear operators.
- __isub__(other)¶
Subtract two linear operators in-place.
- dubfi.linalg.csc_sparse._csc_trace(data, indices, indptr)¶
Compute trace of a matrix in compressed sparse column representation.
- Parameters:
data (numpy.ndarray)
indices (numpy.ndarray)
indptr (numpy.ndarray)
- Return type:
numpy.ndarray
- dubfi.linalg.csc_sparse.tr_asolver_bcsr(apply_a, data, indices, indptr)¶
Compute trace(A @ B) where Ax := apply_a(x) and B is represented as BSR (data, indices, indptr).
- dubfi.linalg.csc_sparse.tr_asolver_bcsc(apply_a, data, indices, indptr)¶
Compute trace(A @ B) where Ax := apply_a(x) and B is represented as BSC (data, indices, indptr).
Note
This function assumes that apply_a is expensive.
tr_asolver_bcsr()is generally more efficient.
- dubfi.linalg.csc_sparse._csc_csr_trace_prod(data1, indices1, indptr1, data2, indices2, indptr2)¶
Compute trace(A @ B) represented as sparse CSC and CSR arrays.
Consider two sparse square matrices A and B of equal shape. Let (data1, indices1, indptr1) be the CSC representation of A and (data2, indices2, indptr2) be the CSR representation of B. Then this function returns (a @ b).trace().
This function assumes sorted indices!
- Parameters:
data1 (numpy.ndarray)
indices1 (numpy.ndarray)
indptr1 (numpy.ndarray)
data2 (numpy.ndarray)
indices2 (numpy.ndarray)
indptr2 (numpy.ndarray)
- Return type:
numpy.ndarray
- class dubfi.linalg.csc_sparse.CscEnsLinPostR(h_ensemble, loc, regularization=0.0, bg_ens=None, bc_ens=None)¶
Bases:
dubfi.linalg.generic.ParametrizedOperatorCSC representation of R matrix in flux inversion problem.
- Parameters:
h_ensemble (numpy.ndarray)
loc (scipy.sparse.csc_array)
regularization (float | numpy.ndarray)
bg_ens (numpy.ndarray | None)
bc_ens (numpy.ndarray | None)
- set_bg_ens(bg_ens)¶
Set the background (or total concentration) meteorological ensemble.
- Parameters:
bg_ens (numpy.ndarray)
- Return type:
None
- set_bc_ens(bc_ens)¶
Set boundary condition ensemble.
- Parameters:
bc_ens (numpy.ndarray)
- Return type:
None
- __call__(s)¶
Compute operator at given parameter vector s.
- grad(s)¶
Gradient at given parameter vector s.
- hess(s)¶
Hesse matrix at given parameter vector s.
- dubfi.linalg.csc_sparse._r_csc_from_ens(loc_data, indices, indptr, h)¶
Construct ensemble contribution to R CSC data.
Given a localization in CSC format and the ensemble observation operator H, construct the CSC data for R, assuming it share the same CSC indices and indptr as the localization.
- dubfi.linalg.csc_sparse._rgrad_csc_from_ens(loc_data, indices, indptr, h, h_ens)¶
Construct gradient of R CSC data.
Given a localization in CSC format and the ensemble observation operator H, construct the CSC data for grad(R), assuming it share the same CSC indices and indptr as the localization.
- dubfi.linalg.csc_sparse._rhess_csc_from_ens(loc_data, indices, indptr, h_ens)¶
Construct Hesse matrix of R CSC data.
Given a localization in CSC format and the ensemble observation operator H, construct the CSC data for hess(R), assuming it share the same CSC indices and indptr as the localization.