Skip to content

brahmap.core.separate_map_vectors

The output maps of the GLS are in the form [I_1, Q_1, U_1, I_2, Q_2, U_2, ...]. Following the typical conventions, the Stokes parameters have to be separated as [I_1, I_2, ...], [Q_1, Q_2, ...] and [U_1, U_2, ...]. This function performs this operation ane returns the maps of different Stokes parameters separately.

Parameters:

Name Type Description Default
map_vector ndarray

description

required
processed_samples ProcessTimeSamples

description

required

Returns:

Type Description
ndarray

description

Source code in brahmap/core/GLS.py
def separate_map_vectors(
    map_vector: np.ndarray, processed_samples: ProcessTimeSamples
) -> np.ndarray:
    """The output maps of the GLS are in the form
    [I_1, Q_1, U_1, I_2, Q_2, U_2, ...]. Following the typical conventions,
    the Stokes parameters have to be separated as [I_1, I_2, ...],
    [Q_1, Q_2, ...] and [U_1, U_2, ...]. This function performs this operation
    ane returns the maps of different Stokes parameters separately.

    Parameters
    ----------
    map_vector : np.ndarray
        _description_
    processed_samples : ProcessTimeSamples
        _description_

    Returns
    -------
    np.ndarray
        _description_
    """
    try:
        map_vector = np.reshape(
            map_vector,
            shape=(processed_samples.solver_type, processed_samples.new_npix),
            order="F",
        )
    except TypeError:
        # `newshape` parameter has been deprecated since numpy 2.1.0. This part should be removed once the support is dropped for lower version
        map_vector = np.reshape(
            map_vector,
            newshape=(processed_samples.solver_type, processed_samples.new_npix),
            order="F",
        )

    output_maps = np.ma.MaskedArray(
        data=np.empty(processed_samples.npix, dtype=processed_samples.dtype_float),
        mask=~processed_samples.pixel_flag,
        fill_value=-1.6375e30,
    )

    output_maps = np.tile(A=output_maps, reps=(processed_samples.solver_type, 1))

    for idx in range(processed_samples.solver_type):
        output_maps[idx][~output_maps[idx].mask] = map_vector[idx]

    return output_maps