Note
Click here to download the full example code or to run this example in your browser via Binder
Display Tracks¶
from matplotlib import pyplot as plt
import py_eddy_tracker_sample
from py_eddy_tracker.observations.tracking import TrackEddiesObservations
Load experimental atlas
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")
)
print(a)
/home/docs/checkouts/readthedocs.org/user_builds/py-eddy-tracker/conda/stable/lib/python3.10/site-packages/pyEddyTracker-3.6.1+0.g9d408e5.dirty-py3.10.egg/py_eddy_tracker/observations/observation.py:300: RuntimeWarning: invalid value encountered in true_divide
v = v.astype("f4") / v.sum() * 100
/home/docs/checkouts/readthedocs.org/user_builds/py-eddy-tracker/conda/stable/lib/python3.10/site-packages/pyEddyTracker-3.6.1+0.g9d408e5.dirty-py3.10.egg/py_eddy_tracker/observations/observation.py:302: RuntimeWarning: invalid value encountered in true_divide
v /= hist_numba(x, bins=bins)[0]
| 473554 observations from 15706.0 to 25334.0 (9629.0 days, ~49 obs/day)
| Speed area : 0.00 Mkm²/day
| Effective area : 0.00 Mkm²/day
----Distribution in Amplitude:
| Amplitude bounds (cm) 0.00 1.00 2.00 3.00 4.00 5.00 10.00 500.00
| Percent of eddies : 21.69 25.72 15.32 9.95 6.20 14.80 6.32
----Distribution in Radius:
| Speed radius (km) 0.00 15.00 30.00 45.00 60.00 75.00 100.00 200.00 2000.00
| Percent of eddies : 0.85 48.58 36.33 10.97 2.59 0.64 0.03 0.00
| Effective radius (km) 0.00 15.00 30.00 45.00 60.00 75.00 100.00 200.00 2000.00
| Percent of eddies : 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
----Distribution in Latitude
Latitude bounds -90.00 -60.00 -15.00 15.00 60.00 90.00
Percent of eddies : 0.00 0.00 0.00 100.00 0.00
Percent of speed area : nan nan nan nan nan
Percent of effective area : nan nan nan nan nan
Mean speed radius (km) : nan nan nan 32.28 nan
Mean effective radius (km): nan nan nan 0.00 nan
Mean amplitude (cm) : nan nan nan 3.51 nan
| 12224 tracks (38.74 obs/tracks, shorter 10 obs, longer 1183 obs)
| 27246 filled observations (2.23 obs/tracks, 5.75 % of total)
| Intepolated speed area : 0.00 Mkm²/day
| Intepolated effective area : 0.00 Mkm²/day
| Distance by day : Mean 3.68 , Median 2.53 km/day
| Distance by track : Mean 139.01 , Median 77.28 km/track
----Distribution in lifetime:
| Lifetime (days ) 1.00 30.00 90.00 180.00 270.00 365.00 1000.00 10000.00
| Percent of tracks : 65.03 26.87 5.72 1.20 0.51 0.65 0.03
| Percent of eddies : 27.88 33.88 17.90 6.74 4.02 8.65 0.93
keep only eddies longer than 20 weeks, use -1 to have no upper limit
a = a.extract_with_length((7 * 20, -1))
c = c.extract_with_length((7 * 20, -1))
print(a)
/home/docs/checkouts/readthedocs.org/user_builds/py-eddy-tracker/conda/stable/lib/python3.10/site-packages/pyEddyTracker-3.6.1+0.g9d408e5.dirty-py3.10.egg/py_eddy_tracker/observations/observation.py:300: RuntimeWarning: invalid value encountered in true_divide
v = v.astype("f4") / v.sum() * 100
/home/docs/checkouts/readthedocs.org/user_builds/py-eddy-tracker/conda/stable/lib/python3.10/site-packages/pyEddyTracker-3.6.1+0.g9d408e5.dirty-py3.10.egg/py_eddy_tracker/observations/observation.py:302: RuntimeWarning: invalid value encountered in true_divide
v /= hist_numba(x, bins=bins)[0]
| 124198 observations from 15706.0 to 25334.0 (9629.0 days, ~13 obs/day)
| Speed area : 0.00 Mkm²/day
| Effective area : 0.00 Mkm²/day
----Distribution in Amplitude:
| Amplitude bounds (cm) 0.00 1.00 2.00 3.00 4.00 5.00 10.00 500.00
| Percent of eddies : 5.11 9.99 12.06 11.79 9.32 31.51 20.21
----Distribution in Radius:
| Speed radius (km) 0.00 15.00 30.00 45.00 60.00 75.00 100.00 200.00 2000.00
| Percent of eddies : 0.19 22.20 46.88 22.96 6.31 1.39 0.07 0.00
| Effective radius (km) 0.00 15.00 30.00 45.00 60.00 75.00 100.00 200.00 2000.00
| Percent of eddies : 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
----Distribution in Latitude
Latitude bounds -90.00 -60.00 -15.00 15.00 60.00 90.00
Percent of eddies : 0.00 0.00 0.00 100.00 0.00
Percent of speed area : nan nan nan nan nan
Percent of effective area : nan nan nan nan nan
Mean speed radius (km) : nan nan nan 40.03 nan
Mean effective radius (km): nan nan nan 0.00 nan
Mean amplitude (cm) : nan nan nan 6.62 nan
| 469 tracks (264.81 obs/tracks, shorter 140 obs, longer 1183 obs)
| 3348 filled observations (7.14 obs/tracks, 2.70 % of total)
| Intepolated speed area : 0.00 Mkm²/day
| Intepolated effective area : 0.00 Mkm²/day
| Distance by day : Mean 3.13 , Median 2.00 km/day
| Distance by track : Mean 825.11 , Median 695.99 km/track
----Distribution in lifetime:
| Lifetime (days ) 1.00 30.00 90.00 180.00 270.00 365.00 1000.00 10000.00
| Percent of tracks : 0.00 0.00 37.74 31.34 13.22 16.84 0.85
| Percent of eddies : 0.00 0.00 22.44 25.72 15.34 32.97 3.53
Position filtering for nice display
a.position_filter(median_half_window=1, loess_half_window=5)
c.position_filter(median_half_window=1, loess_half_window=5)
Plot
fig = plt.figure(figsize=(12, 5))
ax = fig.add_axes((0.05, 0.1, 0.9, 0.9))
ax.set_aspect("equal")
ax.set_xlim(-6, 36.5), ax.set_ylim(30, 46)
a.plot(ax, ref=-10, label="Anticyclonic ({nb_tracks} tracks)", color="r", lw=0.1)
c.plot(ax, ref=-10, label="Cyclonic ({nb_tracks} tracks)", color="b", lw=0.1)
ax.legend()
ax.grid()
Total running time of the script: ( 0 minutes 3.394 seconds)