def ChangeMapUnits(files, fref):
    """
    Change the units of the maps provides form PLA to K_RJ. The data come in
    units K_cmb or MJy/sr.

    Parameters:
    -----------
    - files, list/array.    Sequence with the file names of the planck maps as
                            strings.
    - fref. list/array.     The reference frequencies of each map.

    Returns:
    -----------
    - out_maps, ndarray.    List with each of the maps read in and converted to
                            units of K_RJ.
    """

    f, tau = cu.read_freq()
    U_rj = np.zeros(len(f))
    out_maps = []
    # use only values close to f_ref since zero else.
    for j in range(3, len(f)):
        ind = np.where((f[j] > fref[j] / 2.) & (f[j] < 2 * fref[j]))[0]
        f_temp = f[j][ind]
        f[j] = f_temp

    for i in range(len(f)):
        # maps are sorted after frequency, from low to high.
        print('Load frequency map for {} GHz'.format(fref[i]))
        in_map = load_planck_map(files[i])

        dBdTrj = cu.dBdTrj(f[i])
        #print(i, dBdTrj)
        if i < 7:
            # convert K_cmb to K_RJ
            dBdTcmb = cu.dBdTcmb(f[i])
            dBdTcmb = np.nan_to_num(dBdTcmb)
            #print('', dBdTcmb)
            U_rj[i] = cu.UnitConv(f[i], tau[i], dBdTcmb, dBdTrj,\
                                    'K_CMB', 'K_RJ', fref[i])
        else:
            # Convert MJy/sr to K_RJ
            dBdTiras = cu.dBdTiras(f[i], f_ref=fref[i])
            dBdTiras = np.nan_to_num(dBdTiras)
            #print('', dBdTiras)
            U_rj[i] = cu.UnitConv(f[i], tau[i], dBdTiras, dBdTrj,\
                                    'MJy/sr 1e-20', 'K_RJ', fref[i]) * 1e-20
        #
        #print(U_rj[i])
        out_map = in_map * U_rj[i]
        print('-----------')
        out_maps.append(out_map)
    #
    #print(U_rj)
    return (out_maps)
def Krj2Kcmb(map, f_ref=353.):
    # Convert dust units to pol units, uK_RJ -> K_cmb
    f, tau = cu.read_freq()
    f = f[6]
    tau = tau[6]
    ind = np.where((f > f_ref / 2.) & (f < 2 * f_ref))[0]
    f_353 = f[ind]
    dBdTrj = cu.dBdTrj(f_353)
    dBdTcmb = cu.dBdTcmb(f_353)

    Ucmb = cu.UnitConv(f_353, tau, dBdTrj, dBdTcmb, 'K_RJ', 'K_CMB', f_ref)
    return (Ucmb * map * 1e-6)
Exemple #3
0
def Kcmb2Krj(fref, T=19.6):
    bands = np.array([30, 44, 70, 100, 143, 217, 353, 545, 857])
    i = np.where(bands == fref)[0]
    f, tau = cu.read_freq()
    #print(f[i][0])
    #print(np.shape(f), np.shape(f[i][0]), i)
    for j in range(3, len(f)):
        ind = np.where((f[j] > fref / 2.) & (f[j] < 2 * fref))[0]
        f_temp = f[j][ind]
        f[j] = f_temp
    #print(np.shape(f), np.shape(f[i][0]))
    dBdTrj = cu.dBdTrj(f[i][0])
    #print(i, dBdTrj)

    # convert K_cmb to K_RJ
    dBdTcmb = cu.dBdTcmb(f[i][0], T)
    dBdTcmb = np.nan_to_num(dBdTcmb)
    #print('', dBdTcmb)
    U_rj = cu.UnitConv(f[i][0], tau[i][0], dBdTcmb, dBdTrj,\
                              'K_CMB', 'K_RJ', fref)
    #print(U_rj)
    return (U_rj)
Exemple #4
0
def Krj2Kcmb(map, f_ref=353.):
    """
    Function to convert from uK_rj(antenna temp) to K_cmb.
    
    Parameters:
    -----------
    - map, array. The map with units in uK_rj which is to be converted.
    - f_ref, scalar. The reference frequency in GHz, default is 353GHz.
    
    Return:
    - The map with units converted to K_cmb.
    """
    # Convert dust units to pol units, uK_RJ -> K_cmb
    f, tau = cu.read_freq()
    f = f[6]
    tau = tau[6]
    ind = np.where((f > f_ref / 2.) & (f < 2 * f_ref))[0]
    f_353 = f[ind]
    dBdTrj = cu.dBdTrj(f_353)
    dBdTcmb = cu.dBdTcmb(f_353)

    Ucmb = cu.UnitConv(f_353, tau, dBdTrj, dBdTcmb, 'K_RJ', 'K_CMB', f_ref)
    return (Ucmb * map * 1e-6)