示例#1
0
def geweke_source_params(srcs, imgs, Niter = 10):
    e_samps = np.zeros((Niter, len(imgs)))    # sky term
    t_samps = np.zeros((Niter, len(srcs)))    # source temp
    b_samps = np.zeros((Niter, len(srcs)))    # source brightness
    u_samps = np.zeros((Niter, len(srcs), 2)) # source location 
    ll_samps = np.zeros(Niter)
    prev_ll = celeste_likelihood_multi_image(srcs, imgs)
    print prev_ll
    for n in range(Niter):
        if n%1==0:
            print "===== iter %d of %d (curr_ll = %2.2f)==="%(n, Niter, prev_ll)

        if n%100==0:
            save_samples(e_samps, t_samps, b_samps, u_samps, ll_samps, fname='star_samples_teff_seed.bin')

        # run a gibbs step
        if n > 0:
            celeste_gibbs_sample(srcs, imgs, subiter=1, verbose=False, debug=False)

        # save current likelihood and samples
        ll_samps[n] = celeste_likelihood_multi_image(srcs, imgs)
        prev_ll = ll_samps[n]
        for n_img in range(len(imgs)):
            e_samps[n, n_img] = imgs[n_img].epsilon
        for s in range(len(srcs)):
            t_samps[n, s] = srcs[s].t
            b_samps[n, s] = srcs[s].b
            u_samps[n, s, :] = srcs[s].u
    return t_samps, b_samps, u_samps, e_samps, ll_samps
示例#2
0
def geweke_source_params(srcs, imgs, Niter = 10):
    e_samps = np.zeros((Niter, len(imgs)))    # sky term
    t_samps = np.zeros((Niter, len(srcs)))    # source temp
    b_samps = np.zeros((Niter, len(srcs)))    # source brightness
    u_samps = np.zeros((Niter, len(srcs), 2)) # source location 
    ll_samps = np.zeros(Niter)
    prev_ll = celeste_likelihood_multi_image(srcs, imgs)
    print prev_ll
    for n in range(Niter):
        if n%1==0:
            print "===== iter %d of %d (curr_ll = %2.2f)==="%(n, Niter, prev_ll)

        if n%100==0:
            save_samples(e_samps, t_samps, b_samps, u_samps, ll_samps, fname='star_samples_teff_seed.bin')

        # run a gibbs step
        if n > 0:
            celeste_gibbs_sample(srcs, imgs, subiter=1, verbose=False, debug=False)

        # save current likelihood and samples
        ll_samps[n] = celeste_likelihood_multi_image(srcs, imgs)
        prev_ll = ll_samps[n]
        for n_img in range(len(imgs)):
            e_samps[n, n_img] = imgs[n_img].epsilon
        for s in range(len(srcs)):
            t_samps[n, s] = srcs[s].t
            b_samps[n, s] = srcs[s].b
            u_samps[n, s, :] = srcs[s].u
    return t_samps, b_samps, u_samps, e_samps, ll_samps
示例#3
0
def testBirth():
    np.random.seed(42)

    ##
    ## Generate some fake sources using real image data (PSF and stuff)
    ##
    cat_glob = glob('../data/stamp_catalog/cat*.fits')[1:2]
    srcs, imgs, teff_catalog, us = load_imgs_and_catalog(cat_glob)
    print "initialized with %d sources and %d images"%(len(srcs), len(imgs))

    ## pixel location of source in image 0
    u_pixel = imgs[0].equa2pixel(srcs[0].u)

    ## generate fake sources information
    t_gt = np.array([5500])         # synthetic temperatures
    b_gt = np.array([5e-10])       # synthetic brightnesses
    gt_srcs = []
    for s in range(1):
        u_equa  = imgs[0].pixel2equa(u_pixel)
        src_s = celeste.PointSrcParams(u = u_equa, b = b_gt[s], t = t_gt[s])
        gt_srcs.append(src_s)

    print "Source at ", gt_srcs[0].u
    print "Brightness ", gt_srcs[0].b

    # re-generate images using these source params
    for img in imgs: 
        mimg      = celeste.gen_model_image(gt_srcs, img)
        img.nelec = np.random.poisson(mimg)

    # check out the first image
    #compare_to_model(gt_srcs, imgs[0])
    #plt.show()

    np.random.seed(42)
    rand = np.random.RandomState()
    Niter = 1
    e_samps  = np.zeros((Niter, len(imgs)))  # num images is fixed
    ll_samps = np.zeros(Niter)
    srcs = []
    post_samps = [srcs]                      # 
    for iter_n in range(Niter):
        print "Doing iteration", iter_n

        # fresh new universe model
        srcs = copy.deepcopy(srcs)
        srcs = birthStar(srcs, imgs, rand=rand)

        # keep track of universe model and image specific noise params
        post_samps.append(srcs)
        for n_img in range(len(imgs)):
            e_samps[iter_n, n_img] = imgs[n_img].epsilon
        ll_samps[iter_n] = celeste.celeste_likelihood_multi_image(srcs, imgs)
        print "After iteration %s: %s, cat len %s" % (iter_n, ll_samps[iter_n], len(srcs))
        print "Location: ", [src.u for src in srcs]
        print "Brightness: ", [src.b for src in srcs]
示例#4
0
def testDeath():
    np.random.seed(42)

    ##
    ## Generate some fake sources using real image data (PSF and stuff)
    ##
    cat_glob = glob('../data/stamp_catalog/cat*.fits')[1:2]
    srcs, imgs, teff_catalog, us = load_imgs_and_catalog(cat_glob)
    print "initialized with %d sources and %d images"%(len(srcs), len(imgs))

    ## pixel location of source in image 0
    u_pixel = imgs[0].equa2pixel(srcs[0].u)

    ## generate fake sources information
    gt_srcs = []

    ## generate a fake source (that we want to die)
    t_new = np.array([5500])         # synthetic temperatures
    b_new = np.array([5e-10])       # synthetic brightnesses
    for s in range(1):
        us_equa  = imgs[0].pixel2equa(u_pixel)
        src_s = celeste.PointSrcParams(u = us_equa, b = b_new[s], t = t_new[s])
        #srcs.append(src_s)

    # re-generate images using these source params
    for img in imgs: 
        mimg      = celeste.gen_model_image(gt_srcs, img)
        img.nelec = np.random.poisson(mimg)

    # check out the first image
    #ll_trace, conv = celeste_em.celeste_em(srcs, imgs, maxiter=40, debug=False, verbose=1)
    #compare_to_model(gt_srcs, imgs[0])
    #plt.show()

    ##
    ## Initialize a single source with EM
    ##
    np.random.seed(42)
    rand = np.random.RandomState()
    Niter = 1
    e_samps  = np.zeros((Niter, len(imgs)))  # num images is fixed
    ll_samps = np.zeros(Niter)
    post_samps = [srcs]                      # 
    for iter_n in range(Niter):

        print "number of sources: ", len(srcs)
        # fresh new universe model
        srcs = deathStar(srcs, imgs, rand=rand)

        # keep track of universe model and image specific noise params
        post_samps.append(srcs)
        for n_img in range(len(imgs)):
            e_samps[iter_n, n_img] = imgs[n_img].epsilon
        ll_samps[iter_n] = celeste.celeste_likelihood_multi_image(srcs, imgs)
示例#5
0
def testSplit():
    np.random.seed(42)

    ##
    ## Generate some fake sources using real image data (PSF and stuff)
    ##
    cat_glob = glob('data/stamp_catalog/cat*.fits')[1:2]
    srcs, imgs, teff_catalog, us = load_imgs_and_catalog(cat_glob)
    print "initialized with %d sources and %d images"%(len(srcs), len(imgs))

    ## pixel location of source in image 0
    u_pixel = imgs[0].equa2pixel(srcs[0].u)

    ## generate fake sources information
    t_gt = np.array([5500, 8500])         # synthetic temperatures
    b_gt = np.array([5e-10, 8e-10])       # synthetic brightnesses
    gt_srcs = []
    for s in range(2):
        us_pixel = u_pixel + 3*np.random.randn(2)
        us_equa  = imgs[0].pixel2equa(us_pixel)
        src_s = celeste.PointSrcParams(u = us_equa, b = b_gt[s], t = t_gt[s])
        gt_srcs.append(src_s)
    srcs = [celeste.PointSrcParams(u=u, b=6e-10, t=6500)]

    # re-generate images using these source params
    for img in imgs: 
        mimg      = celeste.gen_model_image(gt_srcs, img)
        img.nelec = np.random.poisson(mimg)

    # check out the first image
    compare_to_model(gt_srcs, imgs[0])
    plt.show()

    np.random.seed(42)
    rand = np.random.RandomState()
    e_samps  = np.zeros(100, len(imgs)))  # num images is fixed
    ll_samps = np.zeros(100)
    iter_n = 1
    while len(srcs) == 1:
        print "Doing iteration", iter_n
        srcs = copy.deepcopy(srcs)
        srcs = splitStar(srcs, imgs, rand=rand)

        post_samps.append(srcs)
        for n_img in range(len(imgs)):
            e_samps[iter_n, n_img] = imgs[n_img].epsilon
        ll_samps[iter_n] = celeste.celeste_likelihood_multi_image(srcs, imgs)
        print "After iteration %s: %s, cat len %s" % (iter_n, ll_samps[iter_n], len(srcs))
        print "Location: ", [src.u for src in srcs]
        print "Brightness: ", [src.b for src in srcs]

        iter_n += 1
        s.fluxes = None
    for img in imgs:
        img.epsilon = np.random.rand() * 1e3

    # save ground truth values
    t_gt = np.array([s.t for s in srcs])
    b_gt = np.array([s.b for s in srcs])
    e_gt = np.array([img.epsilon for img in imgs])

    # re-generate images using these source params
    for img in imgs:
        mimg = gen_model_image(srcs, img)
        img.nelec = np.random.poisson(mimg)

    #cache initial likelihood, initial temp
    ll0 = celeste_likelihood_multi_image(srcs, imgs)
    print "Data generating log like: ", ll0

    # re-initialize source values randomly
    for s in srcs:
        s.t = np.random.rand() * 9e3 + 1000
        s.b = np.random.rand() * 1e-9

    for img in imgs:
        img.epsilon = np.random.rand() * 1e3

    print "random initial ll = %2.2f" % celeste_likelihood_multi_image(
        srcs, imgs)

    print "========= EM for %d sources, %d images ================" % (
        len(srcs), len(imgs))
示例#7
0
        s.fluxes = None
    for img in imgs:
        img.epsilon = np.random.rand()*1e3

    # save ground truth values
    t_gt = np.array([s.t for s in srcs])
    b_gt = np.array([s.b for s in srcs])
    e_gt = np.array([img.epsilon for img in imgs])

    # re-generate images using these source params
    for img in imgs: 
        mimg      = gen_model_image(srcs, img)
        img.nelec = np.random.poisson(mimg)

    #cache initial likelihood, initial temp
    ll0 = celeste_likelihood_multi_image(srcs, imgs)
    print "Data generating log like: ", ll0

    # re-initialize source values randomly
    for s in srcs:
        s.t = np.random.rand()*9e3 + 1000
        s.b = np.random.rand()*1e-9

    for img in imgs:
        img.epsilon = np.random.rand()*1e3

    print "random initial ll = %2.2f"%celeste_likelihood_multi_image(srcs, imgs)

    print "========= EM for %d sources, %d images ================"%(len(srcs), len(imgs))
    #%prun -s tottime ll_trace, conv = celeste_em(srcs, imgs, 2, debug=False, verbose=1)
    ll_trace, conv = celeste_em(srcs, imgs, maxiter=40, debug=False, verbose=1)
示例#8
0
        for img in imgs:
            img.epsilon = np.random.rand()*1e3

        # save ground truth values
        t_gt = np.array([s.t for s in srcs])
        teff_catalog = t_gt
        b_gt = np.array([s.b for s in srcs])
        e_gt = np.array([img.epsilon for img in imgs])

        # re-generate images using these source params
        for img in imgs: 
            mimg      = gen_model_image(srcs, img)
            img.nelec = np.random.poisson(mimg)

    #cache initial likelihood, initial temp
    %lprun -m celeste  ll0 = celeste_likelihood_multi_image(srcs, imgs)
    print "Data generating log like: ", ll0

    # re-initialize source values randomly
    for s in srcs:
        s.t = np.random.rand()*9e3 + 1000
        s.b = np.random.rand()*1e-9
        s.fluxes = None

    for img in imgs:
        img.epsilon = np.random.rand()*1e3

    print "========= EM for %d sources, %d images ================"%(len(srcs), len(imgs))
    #%prun -s tottime ll_trace, conv = celeste_em(srcs, imgs, 2, debug=False, verbose=1)
    ll_trace, conv = celeste_em(srcs, imgs, maxiter=10, debug=False, verbose=1)
    for s in srcs: