예제 #1
0
def calc_parameters(mgnt, p, vp, posp, negp):
    """Calculates certain parameters based on passed pixel groups.

    p:      pixels defined by the polar crown
    vp:     finite pixels in the polar crown
    posp:   positive flux pixels in the polar crown
    negp:   negative flux pixels in the polar crown
    """
    swt = 0
    meanf = M.nanmean(mgnt.im_raw_u[vp])
    meanfc = M.nanmean(mgnt.im_corr[vp])
    sumf = M.nansum(mgnt.im_raw_u[vp])
    sumfc = M.nansum(mgnt.im_corr[vp])
    unsflux = M.nansum(abs(mgnt.mflux_raw[vp]))
    unsfluxc = M.nansum(abs(mgnt.mflux_corr[vp]))
    sflux = M.nansum(mgnt.mflux_raw[vp])
    sfluxc = M.nansum(mgnt.mflux_corr[vp])
    posfluxc = M.nansum(mgnt.mflux_corr[posp])
    negfluxc = M.nansum(mgnt.mflux_corr[negp])
    visarea = M.nansum(mgnt.area[vp])
    max_pxflux = M.nanmax(abs(mgnt.mflux_corr[vp]))
    max_pxf = M.nanmax(mgnt.im_raw.data[vp])
    max_pxfc =  M.nanmax(mgnt.im_corr[vp])

    # Corrected field might be zero. Replace entries with NaNs.
    if unsfluxc == 0.0:
        unsfluxc = M(np.nan, np.nan)
        sfluxc = M(np.nan, np.nan)
        posfluxc = M(np.nan, np.nan)
        negfluxc = M(np.nan, np.nan)
        max_pxflux = np.nan
        swt = 4

    var = {'meanf': meanf, 'meanfc': meanfc, 'sumf': sumf, 'sumfc': sumfc,
                'unsflux': unsflux, 'unsfluxc': unsfluxc, 'sflux': sflux,
                'sfluxc': sfluxc, 'posfluxc': posfluxc, 'negfluxc': negfluxc,
                'nvp_px': np.size(vp), 'p_ratio': np.size(vp)/np.size(p),
                'visarea': visarea, 'max_pxflux': max_pxflux, 'max_pxf': max_pxf,
                'max_pxfc': max_pxfc, 'swt': swt}
    return var