def readData(manager):

        options = manager.options

        manager.zcluster = options.zcluster
        manager.r500 = options.r500
        manager.psfsize = options.psfsize
        manager.pixscale = options.pixscale


        if 'lensingcat' not in manager:
            manager.open('lensingcat', options.lensingcat, ldac.openObjectFile)

        r_arc, E, B = sp.calcTangentialShear(cat=manager.lensingcat,
                                             center=(options.centerx, options.centery),
                                             pixscale=options.pixscale,
                                             xcol=options.xcol,
                                             ycol=options.ycol,
                                             g1col=options.g1col,
                                             g2col=options.g2col)

        r_pix = r_arc / options.pixscale

        r_mpc = r_arc * (1. / 3600.) * (np.pi / 180. ) * sp.angulardist(options.zcluster)

        size = manager.lensingcat[options.sizecol] / options.psfsize
        snratio = manager.lensingcat[options.snratio]

        manager.open('bpzcat', options.bpzfile, ldac.openObjectFile, 'STDTAB')

        manager.store('matched_bpzcat', manager.bpzcat.matchById, manager.lensingcat)
        z_b = manager.matched_bpzcat['BPZ_Z_B']
        odds = manager.matched_bpzcat['BPZ_ODDS']
        nfilt = manager.matched_bpzcat['NFILT']
        galtype = manager.matched_bpzcat['BPZ_T_B']

        cols = [pyfits.Column(name='SeqNr', format='J', array=manager.lensingcat['SeqNr']),
                pyfits.Column(name='r_mpc', format='E', array=r_mpc),
                pyfits.Column(name='size', format='E', array=size),
                pyfits.Column(name='snratio', format='E', array=snratio),
                pyfits.Column(name='z_b', format='E', array=z_b),
                pyfits.Column(name='z_t', format='E', array=galtype),
                pyfits.Column(name='odds', format='E', array=odds),
                pyfits.Column(name='nfilt', format='I', array=nfilt),
                pyfits.Column(name='ghats', format='E', array=E),
                pyfits.Column(name='B', format='E', array=B)]

        manager.store('inputcat', ldac.LDACCat(pyfits.BinTableHDU.from_columns(pyfits.ColDefs(cols))))

        manager.open('pdzmanager', options.inputPDZ, pdzfile_utils.PDZManager.open)
        manager.store('pdzrange pdz'.split(),
                      manager.pdzmanager.associatePDZ(manager.lensingcat['SeqNr']))

        manager.replace('pdzmanager', None)
        manager.replace('matched_bpz', None)
        manager.replace('bpzcat', None)
예제 #2
0
def beta_contamination(x,
                       y,
                       g1,
                       g2,
                       mag,
                       useInContam,
                       areamap,
                       zdist,
                       zcluster,
                       norm_radii,
                       concentration_prior=4.,
                       density_prior=[0, 30],
                       contam_prior=[0, 10],
                       fitrange=(0.4, 4.),
                       bins=15,
                       logbin=False,
                       pixscale=__DEFAULT_PIXSCALE__,
                       center=__DEFAULT_CENTER__):

    #######
    # save config setting
    #######

    momento = {
        'x': x,
        'y,': y,
        'g1': g1,
        'g2': g2,
        'mag': mag,
        'useInContam': useInContam,
        'areamap': areamap,
        'zdist': zdist,
        'zcluster': zcluster,
        'norm_radii': norm_radii,
        'concentration_prior': concentration_prior,
        'density_prior': density_prior,
        'contam_prior': contam_prior,
        'fitrange': fitrange,
        'bins': bins,
        'logbin': logbin,
        'pixscale': pixscale,
        'center': center
    }

    #######
    # Data Prep
    #######

    D_lens = sp.angulardist(zcluster)

    cat = {'Xpos': x, 'Ypos': y, 'gs1': g1, 'gs2': g2}
    r_arcsec, E, B = sp.calcTangentialShear(cat, center, pixscale)
    r_mpc = r_arcsec * (1. / 3600.) * (np.pi / 180.) * D_lens

    if logbin:
        dr = log(dr)
        rmin = log(rmin)
        rmax = log(rmax)

        leftedges, binwidth = linspace(rmin,
                                       rmax,
                                       bins + 1,
                                       endpoint=True,
                                       retstep=True)

        rbin = exp(leftedges)

        rbin = (rbin[1:] + rbin[:-1]) / 2.

    else:
        leftedges, binwidth = linspace(rmin,
                                       rmax,
                                       bins,
                                       endpoint=False,
                                       retstep=True)
        rbin = leftedges + binwidth / 2.

    # Set up binning grid:

    Ebin = zeros(bins, dtype=float64)
    Ebinerr = zeros(bins, dtype=float64)
    Bbin = zeros(bins)
    Bbinerr = zeros(bins)
    nbin = zeros(bins)

    index = ((dr - rmin) / binwidth).astype(int)

    goodentry = logical_and(index >= 0, index < bins)

    #######
    # Model
    #######

    ## r_scale is log-uniform
    log_r_scale = pymc.Uniform('log_r_scale', np.log(.01), np.log(1.))

    normgal_density = pymc.Uniform('n_normgals', density_prior[0],
                                   density_prior[1])

    contam_amp = pymc.Uniform('A_contam', contam_prior[0], contam_prior[1])

    @pymc.stochastic(observed=True)
    def shear(value=ghats,
              log_r_scale=log_r_scale,
              normgal_density=normgal_density,
              contam_amp=contam_amp):

        return tools.likelihood(log_r_scale, r_mpc, ghat_matrix, beta_matrix,
                                pdz, concentration, zcluster, D_lens,
                                shape_sigma)

    @pymc.stochastic(observed=True)
    def numcounts(value=ngals,
                  normgal_density=normgal_density,
                  contam_amp=contam_amp):

        pass

    ########

    return locals()
예제 #3
0
import os, subprocess

import pylab

if len(sys.argv) != 6:
    sys.stderr.write("wrong number of arguments!\n")
    sys.exit(1)
catfile = sys.argv[1]
clusterz = float(sys.argv[2])
center = map(float, sys.argv[3].split(','))
pixscale = float(sys.argv[4])  # arcsec / pix
clustername = sys.argv[5]

catalog = ldac.openObjectFile(catfile)

r, E = sp.calcTangentialShear(catalog, center, pixscale)

beta = sp.beta(catalog["Z_BEST"], clusterz, calcAverage=False)

kappacut = sp.calcWLViolationCut(r, beta, sigma_v=1300)
radiuscut = r > 60  #arcseconds
largeradiuscut = r < 500
zcut = logical_and(catalog['Z_BEST'] > 1.2 * clusterz, catalog['Z_BEST'] < 1.2)

cleancut = logical_and(
    kappacut, logical_and(radiuscut, logical_and(largeradiuscut, zcut)))

cleancat = catalog.filter(cleancut)

samples = sp.simpleBootstrap(cleancat, clusterz, pixscale, center,
                             beta[cleancut])
예제 #4
0
        command = 'ldacfilter -i ' + catfile + " -c '(BPZ_ODDS > 0.3);' -t OBJECTS -o " + catfile + '.tmp'
        #os.system('rm ' + catfile + '.tmp')
        print command
        #os.system(command)

        command = 'ldacfilter -i ' + catfile + " -c '(e1_acs > 0.0);' -t OBJECTS -o " + catfile + '.tmp'
        #os.system('rm ' + catfile + '.tmp')
        print command
        #os.system(command)

        print catfile
        #catalog= ldac.openObjectFile(catfile+'.tmp',table='OBJECTS')

        r, E, B = sp.calcTangentialShear(lens,
                                         center,
                                         pixscale,
                                         g1col='gs1corr',
                                         g2col='gs2corr')
        beta = sp.beta(phot["BPZ_Z_B"], clusterz)
        import scipy
        kappacut = scipy.array(
            [False] * len(beta),
            dtype=bool)  #sp.calcWLViolationCut(r, beta, sigma_v = 1300)

        for i in range(len(r)):
            if 100 < r[i]:
                kappacut[i] = True

        #print kappacut

        kappacut = (phot['BPZ_Z_B_MAX'] - phot['BPZ_Z_B_MIN'] < 2.0) * (
예제 #5
0
def createBootstrapCats(cluster, filter, image, outdir, nbootstraps = 100, startnum = 0):

    clusterdir = '%s/%s' % (subarudir, cluster)
    lensingdir = '%s/LENSING_%s_%s_aper/%s' % (clusterdir, filter, filter, image)
    lensingcat = '%s/coadd_photo2.cat' % lensingdir
    cutsfile = '%s/cc_cuts3.dat' % lensingdir

    outdir = '%s/%s' % (outdir, cluster)
    if not os.path.exists(outdir):
        os.mkdir(outdir)

    cat = ldac.openObjectFile(lensingcat)

    zcluster = msf.parseZCluster(cluster)
    center = msf.readClusterCenters(cluster)
    r_arc, E, B = sp.calcTangentialShear(cat = cat, 
                                         center = center,
                                         pixscale = 0.2)

    r_mpc =  r_arc * (1./3600.) * (np.pi / 180. ) * sp.angulardist(zcluster)

    cat = cat.filter(np.logical_and(r_mpc > 0.750, r_mpc < 3.0))
    cat.hdu.header.update('EXTNAME','STDTAB')

    try:

        tmpspace = tempfile.mkdtemp(dir = progs.tempdir)

        cat.saveas('%s/base.cat' % tmpspace)

        subprocess.check_call("./prefilter_mlcc_bootstrap.sh %s %s %s %s %s %s" \
                      % (cluster, filter, image, 
                      tmpspace, '%s/base.cat' % tmpspace, '%s/prefiltered.cat' % tmpspace), shell=True)

        cat = ldac.openObjectFile('%s/prefiltered.cat' % tmpspace, 'STDTAB')
        cat.hdu.header.update('EXTNAME', 'OBJECTS')

        for i in range(startnum, startnum + nbootstraps):
    
            bootstrap = np.random.randint(0, len(cat), len(cat))

            bootcat = cat.filter(bootstrap)
            bootcat.saveas('%s/bootstrap_%d.ml.cat' % (outdir, i), clobber=True)

            bootcat.hdu.header['EXTNAME'] = 'STDTAB'
            curcat = '%s/filter.cat' % tmpspace
            bootcat.saveas(curcat, clobber=True)

            with open(cutsfile) as cuts:

                for j, cut in enumerate(cuts.readlines()):

                    cut = cut.strip()

                    nextcat = '%s/filter_%d.cat' % (tmpspace, j)

                    print "ldacfilter -i %s -o %s -t STDTAB -c '(%s);'" % (curcat, nextcat, cut)

                    subprocess.check_call("ldacfilter -i %s -o %s -t STDTAB -c '(%s);'" % (curcat, nextcat, cut), shell=True)

                    curcat = nextcat

            shutil.copyfile(curcat, '%s/bootstrap_%d.cc.cat' % (outdir, i))
            for filterfile in glob.glob('%s/filter*' % tmpspace):
                os.remove(filterfile)







    finally:

        shutil.rmtree(tmpspace)
    def readData(manager):

        options = manager.options

        manager.zcluster = options.zcluster
        manager.r500 = options.r500
        manager.psfsize = options.psfsize
        manager.pixscale = options.pixscale

        if 'lensingcat' not in manager:
            manager.open('lensingcat', options.lensingcat, ldac.openObjectFile)

        r_arc, E, B = sp.calcTangentialShear(cat=manager.lensingcat,
                                             center=(options.centerx,
                                                     options.centery),
                                             pixscale=options.pixscale,
                                             xcol=options.xcol,
                                             ycol=options.ycol,
                                             g1col=options.g1col,
                                             g2col=options.g2col)

        r_pix = r_arc / options.pixscale

        r_mpc = r_arc * (1. / 3600.) * (np.pi / 180.) * sp.angulardist(
            options.zcluster)

        size = manager.lensingcat[options.sizecol] / options.psfsize
        snratio = manager.lensingcat[options.snratio]

        manager.open('bpzcat', options.bpzfile, ldac.openObjectFile, 'STDTAB')

        manager.store('matched_bpzcat', manager.bpzcat.matchById,
                      manager.lensingcat)
        z_b = manager.matched_bpzcat['BPZ_Z_B']
        odds = manager.matched_bpzcat['BPZ_ODDS']
        nfilt = manager.matched_bpzcat['NFILT']
        galtype = manager.matched_bpzcat['BPZ_T_B']

        cols = [
            pyfits.Column(name='SeqNr',
                          format='J',
                          array=manager.lensingcat['SeqNr']),
            pyfits.Column(name='r_mpc', format='E', array=r_mpc),
            pyfits.Column(name='size', format='E', array=size),
            pyfits.Column(name='snratio', format='E', array=snratio),
            pyfits.Column(name='z_b', format='E', array=z_b),
            pyfits.Column(name='z_t', format='E', array=galtype),
            pyfits.Column(name='odds', format='E', array=odds),
            pyfits.Column(name='nfilt', format='I', array=nfilt),
            pyfits.Column(name='ghats', format='E', array=E),
            pyfits.Column(name='B', format='E', array=B)
        ]

        manager.store(
            'inputcat',
            ldac.LDACCat(pyfits.BinTableHDU.from_columns(
                pyfits.ColDefs(cols))))

        manager.open('pdzmanager', options.inputPDZ,
                     pdzfile_utils.PDZManager.open)
        manager.store(
            'pdzrange pdz'.split(),
            manager.pdzmanager.associatePDZ(manager.lensingcat['SeqNr']))

        manager.replace('pdzmanager', None)
        manager.replace('matched_bpz', None)
        manager.replace('bpzcat', None)
예제 #7
0
phot = photldac.matchById(lens)

print phot['SeqNr'], lens['SeqNr']

#matchedCat.saveas(os.environ['bonn'] + 'test.cat')

#command1 = 'ldacaddtab -i %(inputcat) -o /tmp/tmp1000.cat -p

cluster_z = float(sys.argv[2])
center = map(float, sys.argv[3].split(','))
pixscale = float(sys.argv[4])  # arcsec / pix

#catalog= ldac.openObjectFile(catfile)

r, E, B = sp.calcTangentialShear(lens, center, pixscale)

beta = sp.beta(phot["BPZ_Z_B"], cluster_z)  #, calcAverage = False)

import scipy
kappacut = scipy.array(
    [False] * len(beta),
    dtype=bool)  #sp.calcWLViolationCut(r, beta, sigma_v = 1300)

for i in range(len(r)):
    if 0 < r[i] < 1000:
        kappacut[i] = True

print kappacut

#kappacut = sp.calcWLViolationCut(r, beta, sigma_v = 1300)
예제 #8
0
minZ = min(back_cat['Z_BEST'])
maxZ = max(back_cat['Z_BEST'])

zstep = float(maxZ - minZ) / back_bins

for curbin in xrange(back_bins):

    z_low = minZ + curbin * zstep
    z_high = z_low + zstep

    inBin = numpy.logical_and(back_cat['Z_BEST'] >= z_low,
                              back_cat['Z_BEST'] < z_high)

    curGals = back_cat.filter(inBin)

    r, E = sp.calcTangentialShear(curGals, (5000, 5000), .2)
    beta = sp.beta(curGals["Z_BEST"], redshift, calcAverage=False)
    kappacut = sp.calcWLViolationCut(r, beta, sigma_v=1300)
    curGals = curGals.filter(kappacut)

    aprofile = sp.easyprofile(curGals, (1, 3000),
                              bins=8,
                              center=(5000, 5000),
                              logbin=False)

    pylab.subplot(back_bins, 1, curbin + 1)

    if emode:

        spp.plotprofile((0, 3000), aprofile.r, aprofile.E, aprofile.Eerr)
예제 #9
0
        pylab.savefig(cluster + 'BPZODDS_new.png')

        command = 'ldacfilter -i ' + catfile + " -c '(BPZ_ODDS > 0.3);' -t OBJECTS -o " + catfile + '.tmp'
        os.system('rm ' + catfile + '.tmp')
        print command
        os.system(command)

        command = 'ldacfilter -i ' + catfile + " -c '(e1_acs > 0.0);' -t OBJECTS -o " + catfile + '.tmp'
        #os.system('rm ' + catfile + '.tmp')
        print command
        #os.system(command)

        print catfile
        catalog = ldac.openObjectFile(catfile + '.tmp', table='OBJECTS')

        r, E, B = sp.calcTangentialShear(
            catalog, center, pixscale)  #,g1col='e1_acs',g2col='e2_acs')
        beta = sp.beta(catalog["Z_BEST"], clusterz)
        import scipy
        kappacut = scipy.array(
            [False] * len(beta),
            dtype=bool)  #sp.calcWLViolationCut(r, beta, sigma_v = 1300)

        for i in range(len(r)):
            if 100 < r[i]:
                kappacut[i] = True

        #print kappacut

        kappacut = sp.calcWLViolationCut(r, beta, sigma_v=1300)

        r = r[kappacut]