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)
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()
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)