コード例 #1
0
def compileSpectra(p):
    """
    @brief compile the various auto/cross spectra
    """
    
    patchDir = "patches"
    labels = p['labels']
    taper = p['taper']
    gaussApod = p['gaussianApodization']
    applyMask = p['applyMask']
    
    nPatches = 0
    l = os.listdir(patchDir)
    for il in l:
        if 'patch_%s_00'%labels[0] in il and '_season' in il[-7:]:
            nPatches += 1
    print "Found %d season patch(es) ..."%nPatches
    
    
    
    
    if taper['apply'] and gaussApod['apply']:
        raise ValueError, "Both taper and Gaussian Apodization cannot be applied."+\
              "Use one or the other"
    
    
    trimAtL = p['trimAtL']
    specDir = 'spectra/'
    
    try:
        os.makedirs(specDir)
    except:
        pass
    
    lU,lL,lCen = fftTools.readBinningFile(p['binningFile'])
    ii = numpy.where(lU<p['trimAtL'])
    
    #beam transfer ()
    binnedBeamWindow = []
    for label in labels:
        Bb = speckMisc.getBinnedBeamTransfer(p['beamFile_%s'%label],p['binningFile'],trimAtL)
        binnedBeamWindow += [Bb]
    
    hpfDict = p['highPassCosSqFilter']
    filter = 1.0
    if hpfDict['apply']:
        print "Will take off the cos^2 high pass filter"
        filter = speckMisc.getBinnedInvCosSqFilter(hpfDict['lMin'],hpfDict['lMax'],p['binningFile'],trimAtL)
        
        
    
    for iPatch in xrange(nPatches):
        
        mbb = pickle.load(open('mcm/'+p['mcmFileRoot']+'_%03d.pkl'%iPatch,mode="r"))
        mbbInv = scipy.linalg.inv(mbb)

        if applyMask:
            mask = liteMap.liteMapFromFits("%s/mask%03d"%(patchDir,iPatch))
        else:
            mask = None
        pixW = None
        if p['applyPixelWeights']:
            pixW = (liteMap.liteMapFromFits("%s/totalWeightMap_%03d"%(patchDir,iPatch)))


        binWeightMap = pickle.load(open('noiseAndWeights/weightMap%03d.pkl'%iPatch,mode="r"))

        # Get the auto spectra first
        ilabel = 0 
        for label in labels:

            print "In patch: %03d, computing %sx%s season spectrum "%(iPatch,label,label)
            m0 = liteMap.liteMapFromFits("%s/patch_%s_%03d_season" %(patchDir,label,iPatch))
            area = m0.Nx*m0.Ny*m0.pixScaleX*m0.pixScaleY
            p2d = get2DSpectrum(m0,m0,taper,gaussApod,mask=mask,pixelWeight=pixW)
            lL,lU,lbin,clbin,binCount = weightedBinInAnnuli(p2d,\
                                                            binWeightMap.powerMap,\
                                                            p['binningFile'],p['trimAtL'],\
                                                            p['powerOfL'])
            
            clbinDecoup = numpy.dot(mbbInv,clbin)*area*filter**2
            # There is an additional correction for the autos as MCM had a transfer
            # function B_l_AR1*B_l_AR_2
            clbinDecoup *= binnedBeamWindow[ilabel-1]/binnedBeamWindow[ilabel]

            inds = numpy.where(clbinDecoup < 0.0)[0]
            clbinDecoup[inds] = 0.0

            fName = "%s/clBinAutoSeason_%sX%s_%03d.dat"%(specDir,label,label,iPatch)
            speckMisc.writeBinnedSpectrum(lbin,clbinDecoup,binCount,fName)

            ilabel += 1


        # Now do the cross- spectra
        m0 = liteMap.liteMapFromFits("%s/patch_%s_%03d_season"\
                                     %(patchDir,labels[0],iPatch))
        area = m0.Nx*m0.Ny*m0.pixScaleX*m0.pixScaleY

        m1 = liteMap.liteMapFromFits("%s/patch_%s_%03d_season"\
                                     %(patchDir,labels[1],iPatch))

        print "In patch: %03d, computing %sx%s season spectrum "%(iPatch,labels[0],labels[-1])



        p2d = get2DSpectrum(m0,m1,taper,gaussApod,mask=mask,pixelWeight=pixW)
        lL,lU,lbin,clbin,binCount = weightedBinInAnnuli(p2d,\
                                                        binWeightMap.powerMap,\
                                                        p['binningFile'],p['trimAtL'],\
                                                        p['powerOfL'])
        clbinDecoup = numpy.dot(mbbInv,clbin)*area*filter**2

        fName = "%s/clBinCrossSeason_%sX%s_%03d.dat"%(specDir,labels[0],labels[-1],iPatch)
        speckMisc.writeBinnedSpectrum(lbin,clbinDecoup,binCount,fName)
        
    return 0 #success
コード例 #2
0
    seasonPairs = []

    for i in xrange(len(seasons)):
        for j in xrange(len(seasons)):
            if arrays[0] == arrays[-1] and i > j: continue
            seasonPairs += [[seasons[i], seasons[j]]]

    print arraysPair
    print seasonPairs

    binnedBeamDict = {}

    for seas in seasons:
        binnedBeamWindow = []
        for ar in arraysPair:
            Bb = speckMisc.getBinnedBeamTransfer(p['beam_%s_%s' % (ar, seas)],
                                                 p['binningFile'], trimAtL)
            binnedBeamWindow += [Bb]
        binnedBeamDict[seas] = binnedBeamWindow

    mbbInvArray = {}

    for sps in seasonPairs:
        spTag = '%sx%s' % (sps[0], sps[1])
        arrayTag = '%sx%s' % (arraysPair[0], arraysPair[1])

        mbb = numpy.loadtxt('mcm/' + p['mcmFileRoot'] + '_%s_%s.dat' %
                            (arrayTag, spTag))
        mbb_cos1 = numpy.loadtxt('mcm/' + p['mcmFileRoot'] +
                                 '_cos1_%s_%s.dat' % (arrayTag, spTag))
        mbb_sin1 = numpy.loadtxt('mcm/' + p['mcmFileRoot'] +
                                 '_sin1_%s_%s.dat' % (arrayTag, spTag))
コード例 #3
0
    seasonPairs = []

    for i in xrange(len(seasons)):
        for j in xrange(len(seasons)):
            if arrays[0] == arrays[-1] and i>j: continue
            seasonPairs += [[seasons[i],seasons[j]]]

    print arraysPair
    print seasonPairs

    binnedBeamDict = {}

    for seas in seasons:
        binnedBeamWindow = []
        for ar in arraysPair:
            Bb = speckMisc.getBinnedBeamTransfer(p['beam_%s_%s'%(ar,seas)],p['binningFile'],trimAtL)
            binnedBeamWindow += [Bb]
        binnedBeamDict[seas] = binnedBeamWindow

    mbbInvArray={}

    for sps in seasonPairs:
        spTag = '%sx%s'%(sps[0],sps[1])
        arrayTag = '%sx%s'%(arraysPair[0],arraysPair[1])
        
        mbb = numpy.loadtxt('mcm/'+p['mcmFileRoot']+'_%s_%s.dat'%(arrayTag,spTag))
        mbb_cos1 = numpy.loadtxt('mcm/'+p['mcmFileRoot']+'_cos1_%s_%s.dat'%(arrayTag,spTag))
        mbb_sin1 = numpy.loadtxt('mcm/'+p['mcmFileRoot']+'_sin1_%s_%s.dat'%(arrayTag,spTag))
        mbb_cos2 =numpy.loadtxt('mcm/'+p['mcmFileRoot']+'_cos2_%s_%s.dat'%(arrayTag,spTag))
        mbb_sin2 = numpy.loadtxt('mcm/'+p['mcmFileRoot']+'_sin2_%s_%s.dat'%(arrayTag,spTag))
        mbb_sincos = numpy.loadtxt('mcm/'+p['mcmFileRoot']+'_sincos_%s_%s.dat'%(arrayTag,spTag))