Annotations for Linear Operators

Applying an annotation to a linear operator will add to its set of annotations attribute.

A = cola.SelfAdjoint(LinearOperator(...))
A.annotations
# Output:
# {cola.SelfAdjoint}

These annotations can be to make simplifications, such as for transposes or the algorithms used.

A.isa(cola.SelfAdjoint)
# Output:
# True
class cola.annotations.Stiefel(obj: LinearOperator)[source]

Bases: Annotation

Annotation for Stiefel matrices (incomplete unitary). A^H A = I but A A^H != I.

class cola.annotations.Unitary(obj: LinearOperator)[source]

Bases: Stiefel

Annotation for Unitary matrices. A^H A = I and A A^H = I.

class cola.annotations.SelfAdjoint(obj: LinearOperator)[source]

Bases: Annotation

Annotation for Self-Adjoint (Hermitian) matrices. A^H=A Means symmetric for real matrices. A^T = A

class cola.annotations.PSD(obj: LinearOperator)[source]

Bases: SelfAdjoint

Annotation for Positive Semi-Definite matrices. A >= 0 all eigenvalues are greater than or equal to zero, and the matrix should be self-adjoint.

cola.annotations.get_annotations(A)[source]

Return the get_annotations of a linear operator. Called in the constructor of LinearOperator.

cola.annotations.get_annotations(A: cola.ops.operators.Kronecker)[source]
cola.annotations.get_annotations(A: cola.ops.operators.Product)[source]
cola.annotations.get_annotations(A: cola.ops.operators.Sum)[source]
cola.annotations.get_annotations(A: cola.ops.operators.BlockDiag)[source]
cola.annotations.get_annotations(A: cola.ops.operators.Hessian)[source]
cola.annotations.get_annotations(A: cola.ops.operators.Identity)[source]
cola.annotations.get_annotations(A: cola.ops.operators.Permutation)[source]
cola.annotations.get_annotations(A: cola.ops.operators.Sliced)[source]
cola.annotations.get_annotations(A: cola.ops.operators.Transpose)[source]
cola.annotations.get_annotations(A: cola.ops.operators.Adjoint)[source]
Return type:

Set[str]