Skip to content

brahmap.base.BaseBlockDiagNoiseCovLinearOperator

Bases: BlockDiagonalLinearOperator

Base class for block-diagonal noise covariance operator

Parameters:

Name Type Description Default
block_list List[NoiseCovLinearOperator]

description

required
**kwargs Any

description

{}
Source code in brahmap/base/noise_ops.py
class BaseBlockDiagNoiseCovLinearOperator(BlockDiagonalLinearOperator):
    """Base class for block-diagonal noise covariance operator

    Parameters
    ----------
    block_list : List[NoiseCovLinearOperator]
        _description_
    **kwargs: Any
        _description_
    """

    def __init__(
        self,
        block_list: List[NoiseCovLinearOperator],
        **kwargs: Any,
    ):
        super(BaseBlockDiagNoiseCovLinearOperator, self).__init__(block_list, **kwargs)

        MPI_RAISE_EXCEPTION(
            condition=(not self.symmetric),
            exception=ValueError,
            message="The noise (inv-)covariance operators must be symmetric",
        )
        self.size = sum(self.col_size)

    @property
    def diag(self) -> np.ndarray:
        diag = np.concatenate(
            [block.diag for block in self.block_list],
            axis=None,
        )
        return diag

    def get_inverse(self) -> "BaseBlockDiagInvNoiseCovLinearOperator":
        inverse_list = [block.get_inverse() for block in self.block_list]
        return BaseBlockDiagInvNoiseCovLinearOperator(block_list=inverse_list)