Note
Go to the end 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/latest/lib/python3.10/site-packages/pyEddyTracker-3.6.1+9.g6597187.dirty-py3.10.egg/py_eddy_tracker/observations/observation.py:303: RuntimeWarning: invalid value encountered in divide
v = v.astype("f4") / v.sum() * 100
/home/docs/checkouts/readthedocs.org/user_builds/py-eddy-tracker/conda/latest/lib/python3.10/site-packages/pyEddyTracker-3.6.1+9.g6597187.dirty-py3.10.egg/py_eddy_tracker/observations/observation.py:305: RuntimeWarning: invalid value encountered in 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/latest/lib/python3.10/site-packages/pyEddyTracker-3.6.1+9.g6597187.dirty-py3.10.egg/py_eddy_tracker/observations/observation.py:303: RuntimeWarning: invalid value encountered in divide
v = v.astype("f4") / v.sum() * 100
/home/docs/checkouts/readthedocs.org/user_builds/py-eddy-tracker/conda/latest/lib/python3.10/site-packages/pyEddyTracker-3.6.1+9.g6597187.dirty-py3.10.egg/py_eddy_tracker/observations/observation.py:305: RuntimeWarning: invalid value encountered in 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.578 seconds)