Skip to content

brahmap.lbsim.LBSim_InvNoiseCovLO_UnCorr

Bases: BlockDiagInvNoiseCovLO

The assumption is that at a given MPI process, all observations contain same set of detectors

Source code in brahmap/lbsim/lbsim_noise_operators.py
class LBSim_InvNoiseCovLO_UnCorr(BlockDiagInvNoiseCovLO):
    """The assumption is that at a given MPI process, all observations
    contain same set of detectors"""

    # Keep a note of the hard-coded factor of 1e4

    def __init__(
        self,
        obs: Union[lbs.Observation, List[lbs.Observation]],
        noise_variance: Union[dict, None] = None,
        dtype=np.float64,
    ):
        if isinstance(obs, lbs.Observation):
            obs_list = [obs]
        else:
            obs_list = obs

        if noise_variance is None:
            noise_variance = dict(
                zip(
                    obs_list[0].name,
                    lbs.mapmaking.common.get_map_making_weights(obs_list[0]) / 1.0e4,
                )
            )

        # setting the `noise_variance` to 1 for the detectors whose noise variance is not provided in the dictionary
        det_no_variance = np.setdiff1d(obs_list[0].name, list(noise_variance.keys()))
        for detector in det_no_variance:
            noise_variance[detector] = 1.0

        block_size = []
        block_input = []

        for obs in obs_list:
            for det_idx in range(obs.n_detectors):
                block_size.append(obs.n_samples)
                block_input.append(noise_variance[obs.name[det_idx]])

        super(LBSim_InvNoiseCovLO_UnCorr, self).__init__(
            InvNoiseCovLO_Diagonal,
            block_size=block_size,
            block_input=block_input,
            input_type="covariance",
            dtype=dtype,
        )