예제 #1
0
def test_track_greedy():
    nx, ny = 512, 512
    sigma = None
    tslice_to_regions = extract_regions(h5fname, sigma=sigma)

    tracks = tracking.track_regions_greedy(tslice_to_regions, nx, ny)
    tracks = tracking.chop_tracks(tracks, area_frac=0.1)
    slice_regions = get_slice_regions(tracks)
    track_regions_image(slice_regions, h5fname, sigma=sigma)
예제 #2
0
def track_regions_image(slice_regions, h5fname, sigma):
    tslice_to_regions = extract_regions(h5fname, sigma=sigma)
    dta = tables.openFile(h5fname, "r")
    pl.ioff()
    for idx, psi_arr in enumerate(dta.walkNodes("/psi", "Array")):
        print idx
        psi_arr = psi_arr.read()
        psi_arr_mask = psi_arr.copy()
        for (reg, num) in slice_regions[idx]:
            psi_arr_mask[zip(*reg.region)] = 2 * psi_arr.max()
        pl.figure()
        pl.imshow(psi_arr_mask, interpolation="nearest", cmap="hot")
        for (reg, num) in slice_regions[idx]:
            loc = reg.loc
            pl.text(loc[1], loc[0], str(num))
        xs = [reg.loc[0] for reg in tslice_to_regions[idx][1]]
        ys = [reg.loc[1] for reg in tslice_to_regions[idx][1]]
        pl.scatter(ys, xs, c="r", marker="s")
        pl.savefig("psi_%03d.pdf" % idx)
        pl.close("all")
    dta.close()
예제 #3
0
def fractional_energy(h5fname, sigma):
    tslice_to_regions = extract_regions(h5fname, sigma=sigma)
    dta = tables.openFile(h5fname, 'r')
    efrac = []
    rfrac = []
    # efrac_by_regfrac = []
    # dual = []
    bx_arrs = dta.walkNodes('/bx', 'Array')
    by_arrs = dta.walkNodes('/by', 'Array')
    for idx, (bx_arr, by_arr) in enumerate(zip(bx_arrs, by_arrs)):
        bx_arr = bx_arr.read()
        by_arr = by_arr.read()
        bmag_arr = bx_arr**2 + by_arr**2
        bmag_arr_regions = np.zeros(bx_arr.shape, dtype=np.bool)
        for reg in tslice_to_regions[idx][1]:
            bmag_arr_regions[zip(*reg.region)] = True
        reg_frac = float(np.sum(bmag_arr_regions)) / bmag_arr_regions.size
        eng_frac = np.sum(bmag_arr[bmag_arr_regions]) / np.sum(bmag_arr)
        efrac.append(eng_frac)
        rfrac.append(reg_frac)
    dta.close()
    return np.array(efrac), np.array(rfrac)