def merge_eddies(): parser = EddyParser('Merge eddies') parser.add_argument('filename', nargs='+', help='all file to merge') parser.add_argument('out', help='output file') parser.add_argument('--add_rotation_variable', help='add rotation variables', action='store_true') parser.add_argument('--include_var', nargs='+', type=str, help='use only listed variable') args = parser.parse_args() if args.include_var is None: with Dataset(args.filename[0]) as h: args.include_var = h.variables.keys() obs = TrackEddiesObservations.load_file(args.filename[0], raw_data=True, include_vars=args.include_var) if args.add_rotation_variable: obs = obs.add_rotation_type() for filename in args.filename[1:]: other = TrackEddiesObservations.load_file( filename, raw_data=True, include_vars=args.include_var) if args.add_rotation_variable: other = other.add_rotation_type() obs = obs.merge(other) obs.write_file(filename=args.out)
def merge_eddies(): parser = EddyParser("Merge eddies") parser.add_argument("filename", nargs="+", help="all file to merge") parser.add_argument("out", help="output file") parser.add_argument( "--add_rotation_variable", help="add rotation variables", action="store_true" ) parser.add_argument( "--include_var", nargs="+", type=str, help="use only listed variable" ) args = parser.parse_args() if args.include_var is None: with Dataset(args.filename[0]) as h: args.include_var = h.variables.keys() obs = TrackEddiesObservations.load_file( args.filename[0], raw_data=True, include_vars=args.include_var ) if args.add_rotation_variable: obs = obs.add_rotation_type() for filename in args.filename[1:]: other = TrackEddiesObservations.load_file( filename, raw_data=True, include_vars=args.include_var ) if args.add_rotation_variable: other = other.add_rotation_type() obs = obs.merge(other) obs.write_file(filename=args.out)
def anim(): parser = EddyParser( """Anim eddy, keyboard shortcut : Escape => exit, SpaceBar => pause, left arrow => t - 1, right arrow => t + 1, + => speed increase of 10 %, - => speed decrease of 10 %""" ) parser.add_argument("filename", help="eddy atlas") parser.add_argument("id", help="Track id to anim", type=int) parser.add_argument( "--intern", action="store_true", help="display intern contour inplace of outter contour", ) parser.add_argument( "--keep_step", default=25, help="number maximal of step displayed", type=int ) parser.add_argument("--cmap", help="matplotlib colormap used") parser.add_argument( "--time_sleep", type=float, default=0.01, help="Sleeping time in second between 2 frame", ) parser.add_argument( "--infinity_loop", action="store_true", help="Press Escape key to stop loop" ) args = parser.parse_args() variables = ["time", "track"] variables.extend(TrackEddiesObservations.intern(args.intern, public_label=True)) atlas = TrackEddiesObservations.load_file(args.filename, include_vars=variables) eddy = atlas.extract_ids([args.id]) a = Anim( eddy, intern=args.intern, sleep_event=args.time_sleep, cmap=args.cmap, nb_step=args.keep_step, ) a.show(infinity_loop=args.infinity_loop)
================ Do Geo stat with frequency and compare with center count method: :ref:`sphx_glr_python_module_10_tracking_diagnostics_pet_center_count.py` """ import py_eddy_tracker_sample from matplotlib import pyplot as plt from matplotlib.colors import LogNorm from py_eddy_tracker.observations.tracking import TrackEddiesObservations # %% # Load an experimental med atlas over a period of 26 years (1993-2019) a = TrackEddiesObservations.load_file( py_eddy_tracker_sample.get_demo_path( "eddies_med_adt_allsat_dt2018/Anticyclonic.zarr" ) ) c = TrackEddiesObservations.load_file( py_eddy_tracker_sample.get_demo_path("eddies_med_adt_allsat_dt2018/Cyclonic.zarr") ) # %% # Parameters step = 0.125 bins = ((-10, 37, step), (30, 46, step)) kwargs_pcolormesh = dict( cmap="terrain_r", vmin=0, vmax=0.75, factor=1 / a.nb_days, name="count" )
ax = fig.add_axes([0.03, 0.03, 0.90, 0.94], aspect="equal") ax.set_xlim(-6, 36.5), ax.set_ylim(30, 46) ax.set_title(title, weight="bold") return ax def update_axes(ax, mappable=None): ax.grid() if mappable: plt.colorbar(mappable, cax=ax.figure.add_axes([0.94, 0.05, 0.01, 0.9])) # %% # Load eddies dataset cyclonic_eddies = TrackEddiesObservations.load_file( py_eddy_tracker_sample.get_demo_path( "eddies_med_adt_allsat_dt2018/Cyclonic.zarr")) anticyclonic_eddies = TrackEddiesObservations.load_file( py_eddy_tracker_sample.get_demo_path( "eddies_med_adt_allsat_dt2018/Anticyclonic.zarr")) # %% # Load loopers dataset loopers_med = TrackEddiesObservations.load_file( data.get_demo_path("loopers_lumpkin_med.nc")) # %% # Global view # =========== ax = start_axes("All drifters available in Med from Lumpkin dataset") loopers_med.plot(ax, lw=0.5, color="r", ref=-10)
Network basic manipulation ========================== """ from matplotlib import pyplot as plt import py_eddy_tracker.gui from py_eddy_tracker import data from py_eddy_tracker.observations.network import NetworkObservations from py_eddy_tracker.observations.tracking import TrackEddiesObservations # %% # Load data # --------- # Load data where observations are put in same network but no segmentation e = TrackEddiesObservations.load_file(data.get_path("c568803.nc")) # FIXME : Must be rewrote e.lon[:] = (e.lon + 180) % 360 - 180 e.contour_lon_e[:] = ((e.contour_lon_e.T - e.lon + 180) % 360 - 180 + e.lon).T e.contour_lon_s[:] = ((e.contour_lon_s.T - e.lon + 180) % 360 - 180 + e.lon).T # %% # Do segmentation # --------------- # Segmentation based on maximum overlap, temporal window for candidates = 5 days n = NetworkObservations.from_split_network(e, e.split_network(intern=False, window=5)) # %% # Timeline # -------- # %%