Detect eddies from different files and merge tracking

Detect eddies from different files and merge tracking#

Initialisations#

Import needed stuff.

import tempfile
import time

import xarray as xr

from shoot.eddies.eddies2d import EvolEddies2D
from shoot.eddies.track import track_eddies
from shoot.samples import get_sample_file

xr.set_options(display_style="text")

Read data

path = get_sample_file("OBS/SATELLITE/jan2024_ionian_sea_duacs.nc")
out_dir = tempfile.mkdtemp()
# partition into 2 dataset continuous in time
ds1 = xr.open_dataset(path).isel(time=slice(0, 10))
ds2 = xr.open_dataset(path).isel(time=slice(10, 20))

Detect eddies#

Parameters#

Window size in km to compute the LNAM and find eddy centers : Lb

window_center = 50  # 20  # 100#50

Window size in km to fit SSH and make other diagnostics like contours : 10Rd suggested

window_fit = 120  # 100  # 120

Minimal radius of an eddy to retain it

min_radius = 20

Ellipse error

ellipse_error = 0.05

Detection#

start = time.time()
eddies1 = EvolEddies2D.detect_eddies(
    ds1,
    window_center,
    window_fit,
    min_radius,
    ssh="adt",
    ellipse_error=ellipse_error,
)
eddies2 = EvolEddies2D.detect_eddies(
    ds2,
    window_center,
    window_fit,
    min_radius,
    ssh="adt",
    ellipse_error=ellipse_error,
)
end = time.time()
time_detect = end - start
print(f"nb days {len(eddies1.eddies)} in {time_detect / 60:.1f} min")

Tracking#

nbackward = 10  # number of admitted time step without detection

start = time.time()
tracks1 = track_eddies(eddies1, nbackward)  # 10*dt
tracks2 = track_eddies(eddies2, nbackward)  # 10*dt
end = time.time()
print("duree totale du calcul sur 1 mois : %.1f s" % (end - start))
tracks1.to_netcdf(out_dir + "/eddies_med_test1.nc")
tracks2.to_netcdf(out_dir + "/eddies_med_test2.nc")
ds1 = xr.open_dataset(out_dir + "/eddies_med_test1.nc")
ds2 = xr.open_dataset(out_dir + "/eddies_med_test2.nc")
eddies = EvolEddies2D.merge_ds([ds1, ds2])
eddies
print(len(eddies.eddies))
tracks = track_eddies(eddies, 10)
tracks.to_netcdf(out_dir + "/eddies_mest_test_merged.nc")
ds_merged = xr.open_dataset(out_dir + "/eddies_mest_test_merged.nc")

Gallery generated by Sphinx-Gallery