예제 #1
0
def test(log,
         file='data/psf1x.fits',
         oversample=1.0,
         sigma=0.75,
         scale=1e2,
         level=10,
         covering=1.4,
         single=False):
    #read in PSF and renormalize it to norm
    data = pf.getdata(file)
    data /= np.max(data)

    #derive reference values from clean PSF
    settings = dict(sampling=1.0 / oversample, sigma=sigma, iterations=10)
    scaled = data.copy() * scale
    sh = shape.shapeMeasurement(scaled.copy(), log, **settings)
    reference = sh.measureRefinedEllipticity()
    print 'Reference:'
    pprint.pprint(reference)

    cosmics = cosmicrays.cosmicrays(log, np.zeros((2, 2)))
    crInfo = cosmics._readCosmicrayInformation()

    print 'Deposited Energy of Cosmic Rays: %i electrons' % level
    #add cosmic rays to the scaled image
    cosmics = cosmicrays.cosmicrays(log, scaled, crInfo=crInfo)
    if single:
        #only one cosmic with a given energy level, length drawn from a distribution
        newdata = cosmics.addSingleEvent(limit=level)
    else:
        #x cosmic ray events to reach a covering fraction, say 1.4 per cent
        newdata = cosmics.addUpToFraction(covering, limit=level)

    #write out new data for inspection
    fileIO.writeFITS(newdata, 'example.fits', int=False)

    #measure e and R2 from the postage stamp image
    sh = shape.shapeMeasurement(newdata.copy(), log, **settings)
    results = sh.measureRefinedEllipticity()
    print 'Results:'
    pprint.pprint(results)

    print 'delta e_1: ', results['e1'] - reference['e1']
    print 'delta e_2: ', results['e2'] - reference['e2']
    print 'delta e: ', results['ellipticity'] - reference['ellipticity']
    print 'delta R**2: ', results['R2'] - reference['R2']
def test(log, file="data/psf1x.fits", oversample=1.0, sigma=0.75, scale=1e2, level=10, covering=1.4, single=False):
    # read in PSF and renormalize it to norm
    data = pf.getdata(file)
    data /= np.max(data)

    # derive reference values from clean PSF
    settings = dict(sampling=1.0 / oversample, sigma=sigma, iterations=10)
    scaled = data.copy() * scale
    sh = shape.shapeMeasurement(scaled.copy(), log, **settings)
    reference = sh.measureRefinedEllipticity()
    print "Reference:"
    pprint.pprint(reference)

    cosmics = cosmicrays.cosmicrays(log, np.zeros((2, 2)))
    crInfo = cosmics._readCosmicrayInformation()

    print "Deposited Energy of Cosmic Rays: %i electrons" % level
    # add cosmic rays to the scaled image
    cosmics = cosmicrays.cosmicrays(log, scaled, crInfo=crInfo)
    if single:
        # only one cosmic with a given energy level, length drawn from a distribution
        newdata = cosmics.addSingleEvent(limit=level)
    else:
        # x cosmic ray events to reach a covering fraction, say 1.4 per cent
        newdata = cosmics.addUpToFraction(covering, limit=level)

    # write out new data for inspection
    fileIO.writeFITS(newdata, "example.fits", int=False)

    # measure e and R2 from the postage stamp image
    sh = shape.shapeMeasurement(newdata.copy(), log, **settings)
    results = sh.measureRefinedEllipticity()
    print "Results:"
    pprint.pprint(results)

    print "delta e_1: ", results["e1"] - reference["e1"]
    print "delta e_2: ", results["e2"] - reference["e2"]
    print "delta e: ", results["ellipticity"] - reference["ellipticity"]
    print "delta R**2: ", results["R2"] - reference["R2"]
예제 #3
0
def testCosmicrayRejection(log,
                           file='data/psf1x.fits',
                           oversample=1.0,
                           sigma=0.75,
                           psfs=20000,
                           scale=1e3,
                           min=1e-5,
                           max=50,
                           levels=15,
                           covering=1.4,
                           single=False):
    """
    This is for a single PSF.

    :param log:
    :param file:
    :param oversample:
    :param sigma:
    :param psfs:
    :param scale:
    :param min:
    :param max:
    :param levels:
    :param covering:
    :param single:
    :return:
    """
    data = pf.getdata(file)
    data /= np.max(data)

    #derive reference values from clean PSF
    settings = dict(sampling=1.0 / oversample, sigma=sigma, iterations=6)
    scaled = data.copy() * scale
    sh = shape.shapeMeasurement(scaled.copy(), log, **settings)
    reference = sh.measureRefinedEllipticity()

    cosmics = cosmicrays.cosmicrays(log, np.zeros((2, 2)))
    crInfo = cosmics._readCosmicrayInformation()

    out = {}
    #loop over all the amplitudes to be studied
    for level in np.logspace(np.log10(min), np.log10(max), levels):
        print 'Deposited Energy of Cosmic Rays: %e electrons' % level

        de1 = []
        de2 = []
        de = []
        R2 = []
        dR2 = []
        e1 = []
        e2 = []
        e = []

        for i in range(psfs):
            print 'Run %i / %i' % (i + 1, psfs)

            #add cosmic rays to the scaled image
            cosmics = cosmicrays.cosmicrays(log, scaled.copy(), crInfo=crInfo)
            #newdata = cosmics.addCosmicRays(limit=level)
            if single:
                newdata = cosmics.addSingleEvent(limit=level)
            else:
                newdata = cosmics.addUpToFraction(covering, limit=level)

            #measure e and R2 from the postage stamp image
            sh = shape.shapeMeasurement(newdata.copy(), log, **settings)
            results = sh.measureRefinedEllipticity()

            #save values
            e1.append(results['e1'])
            e2.append(results['e2'])
            e.append(results['ellipticity'])
            R2.append(results['R2'])
            de1.append(results['e1'] - reference['e1'])
            de2.append(results['e2'] - reference['e2'])
            de.append(results['ellipticity'] - reference['ellipticity'])
            dR2.append(results['R2'] - reference['R2'])

        out[level] = [e1, e2, e, R2, de1, de2, de, dR2]

    return reference, out
def testCosmicrayRejection(
    log,
    file="data/psf1x.fits",
    oversample=1.0,
    sigma=0.75,
    psfs=20000,
    scale=1e3,
    min=1e-5,
    max=50,
    levels=15,
    covering=1.4,
    single=False,
):
    """
    This is for a single PSF.

    :param log:
    :param file:
    :param oversample:
    :param sigma:
    :param psfs:
    :param scale:
    :param min:
    :param max:
    :param levels:
    :param covering:
    :param single:
    :return:
    """
    data = pf.getdata(file)
    data /= np.max(data)

    # derive reference values from clean PSF
    settings = dict(sampling=1.0 / oversample, sigma=sigma, iterations=6)
    scaled = data.copy() * scale
    sh = shape.shapeMeasurement(scaled.copy(), log, **settings)
    reference = sh.measureRefinedEllipticity()

    cosmics = cosmicrays.cosmicrays(log, np.zeros((2, 2)))
    crInfo = cosmics._readCosmicrayInformation()

    out = {}
    # loop over all the amplitudes to be studied
    for level in np.logspace(np.log10(min), np.log10(max), levels):
        print "Deposited Energy of Cosmic Rays: %e electrons" % level

        de1 = []
        de2 = []
        de = []
        R2 = []
        dR2 = []
        e1 = []
        e2 = []
        e = []

        for i in range(psfs):
            print "Run %i / %i" % (i + 1, psfs)

            # add cosmic rays to the scaled image
            cosmics = cosmicrays.cosmicrays(log, scaled.copy(), crInfo=crInfo)
            # newdata = cosmics.addCosmicRays(limit=level)
            if single:
                newdata = cosmics.addSingleEvent(limit=level)
            else:
                newdata = cosmics.addUpToFraction(covering, limit=level)

            # measure e and R2 from the postage stamp image
            sh = shape.shapeMeasurement(newdata.copy(), log, **settings)
            results = sh.measureRefinedEllipticity()

            # save values
            e1.append(results["e1"])
            e2.append(results["e2"])
            e.append(results["ellipticity"])
            R2.append(results["R2"])
            de1.append(results["e1"] - reference["e1"])
            de2.append(results["e2"] - reference["e2"])
            de.append(results["ellipticity"] - reference["ellipticity"])
            dR2.append(results["R2"] - reference["R2"])

        out[level] = [e1, e2, e, R2, de1, de2, de, dR2]

    return reference, out