@@ -37,151 +37,3 @@ for tracking.
3737
3838### Grid manipulation ###
3939
40- Loading grid
41- ``` python
42- from py_eddy_tracker.dataset.grid import RegularGridDataset
43- grid_name, lon_name, lat_name = ' share/nrt_global_allsat_phy_l4_20190223_20190226.nc' , ' longitude' , ' latitude'
44- h = RegularGridDataset(grid_name, lon_name, lat_name)
45- ```
46-
47- Plotting grid
48- ``` python
49- from matplotlib import pyplot as plt
50- fig = plt.figure(figsize = (14 , 12 ))
51- ax = fig.add_axes([.02 , .51 , .9 , .45 ])
52- ax.set_title(' ADT (m)' )
53- ax.set_ylim(- 75 , 75 )
54- ax.set_aspect(' equal' )
55- m = h.display(ax, name = ' adt' , vmin = - 1 , vmax = 1 )
56- ax.grid(True )
57- plt.colorbar(m, cax = fig.add_axes([.94 , .51 , .01 , .45 ]))
58- ```
59-
60- Filtering
61- ``` python
62- h = RegularGridDataset(grid_name, lon_name, lat_name)
63- h.bessel_high_filter(' adt' , 500 , order = 3 )
64- ```
65-
66- Save grid
67- ``` python
68- h.write(' /tmp/grid.nc' )
69- ```
70-
71- Add second plot
72- ``` python
73- ax = fig.add_axes([.02 , .02 , .9 , .45 ])
74- ax.set_title(' ADT Filtered (m)' )
75- ax.set_aspect(' equal' )
76- ax.set_ylim(- 75 , 75 )
77- m = h.display(ax, name = ' adt' , vmin = - .1 , vmax = .1 )
78- ax.grid(True )
79- plt.colorbar(m, cax = fig.add_axes([.94 , .02 , .01 , .45 ]))
80- fig.savefig(' share/png/filter.png' )
81- ```
82-
83- ![ signal filtering] ( share/png/filter.png )
84-
85- #### Compute spectrum and spectrum ratio on some area ####
86- Load data
87- ``` python
88- raw = RegularGridDataset(grid_name, lon_name, lat_name)
89- filtered = RegularGridDataset(grid_name, lon_name, lat_name)
90- filtered.bessel_low_filter(' adt' , 150 , order = 3 )
91-
92- areas = dict (
93- sud_pacific = dict (llcrnrlon = 188 , urcrnrlon = 280 , llcrnrlat = - 64 , urcrnrlat = - 7 ),
94- atlantic_nord = dict (llcrnrlon = 290 , urcrnrlon = 340 , llcrnrlat = 19.5 , urcrnrlat = 43 ),
95- indien_sud = dict (llcrnrlon = 35 , urcrnrlon = 110 , llcrnrlat = - 49 , urcrnrlat = - 26 ),
96- )
97- ```
98-
99- Compute and display spectrum
100- ``` python
101- fig = plt.figure(figsize = (10 ,6 ))
102- ax = fig.add_subplot(111 )
103- ax.set_title(' Spectrum' )
104- ax.set_xlabel(' km' )
105- for name_area, area in areas.items():
106-
107- lon_spec, lat_spec = raw.spectrum_lonlat(' adt' , area = area)
108- mappable = ax.loglog(* lat_spec, label = ' lat %s raw' % name_area)[0 ]
109- ax.loglog(* lon_spec, label = ' lon %s raw' % name_area, color = mappable.get_color(), linestyle = ' --' )
110-
111- lon_spec, lat_spec = filtered.spectrum_lonlat(' adt' , area = area)
112- mappable = ax.loglog(* lat_spec, label = ' lat %s high' % name_area)[0 ]
113- ax.loglog(* lon_spec, label = ' lon %s high' % name_area, color = mappable.get_color(), linestyle = ' --' )
114-
115- ax.set_xscale(' log' )
116- ax.legend()
117- ax.grid()
118- fig.savefig(' share/png/spectrum.png' )
119- ```
120-
121- ![ spectrum] ( share/png/spectrum.png )
122-
123- Compute and display spectrum ratio
124- ``` python
125- fig = plt.figure(figsize = (10 ,6 ))
126- ax = fig.add_subplot(111 )
127- ax.set_title(' Spectrum ratio' )
128- ax.set_xlabel(' km' )
129- for name_area, area in areas.items():
130- lon_spec, lat_spec = filtered.spectrum_lonlat(' adt' , area = area, ref = raw)
131- mappable = ax.plot(* lat_spec, label = ' lat %s high' % name_area)[0 ]
132- ax.plot(* lon_spec, label = ' lon %s high' % name_area, color = mappable.get_color(), linestyle = ' --' )
133-
134- ax.set_xscale(' log' )
135- ax.legend()
136- ax.grid()
137- fig.savefig(' share/png/spectrum_ratio.png' )
138- ```
139- ![ spectrum ratio] ( share/png/spectrum_ratio.png )
140-
141- #### Run an identification on a grid ####
142-
143- Activate verbose
144- ``` python
145- import logging
146- logging.getLogger().setLevel(' DEBUG' ) # Values: ERROR, WARNING, INFO, DEBUG
147- ```
148-
149- Run identification
150- ``` python
151- from datetime import datetime
152- h = RegularGridDataset(grid_name, lon_name, lat_name)
153- h.bessel_high_filter(' adt' , 500 , order = 3 )
154- date = datetime(2019 , 2 , 23 )
155- a, c = h.eddy_identification(
156- ' adt' , ' ugos' , ' vgos' , # Variable to use for identification
157- date, # Date of identification
158- 0.002 , # step between two isolines of detection (m)
159- pixel_limit = (5 , 2000 ), # Min and max of pixel can be include in contour
160- shape_error = 55 , # Error maximal of circle fitting over contour to be accepted
161- bbox_surface_min_degree = .125 ** 2 , # degrees surface minimal to take in account contour
162- )
163- ```
164-
165- Plot identification
166- ``` python
167- fig = plt.figure(figsize = (15 ,7 ))
168- ax = fig.add_axes([.03 ,.03 ,.94 ,.94 ])
169- ax.set_title(' Eddies detected -- Cyclonic(red) and Anticyclonic(blue)' )
170- ax.set_ylim(- 75 ,75 )
171- ax.set_xlim(0 ,360 )
172- ax.set_aspect(' equal' )
173- a.display(ax, color = ' b' , linewidth = .5 )
174- c.display(ax, color = ' r' , linewidth = .5 )
175- ax.grid()
176- fig.savefig(' share/png/eddies.png' )
177- ```
178-
179- ![ eddies detected] ( share/png/eddies.png )
180-
181- Save identification datas
182- ``` python
183- with Dataset(date.strftime(' share/Anticyclonic_%Y%m%d .nc' ), ' w' ) as h:
184- a.to_netcdf(h)
185- with Dataset(date.strftime(' share/Cyclonic_%Y%m%d .nc' ), ' w' ) as h:
186- c.to_netcdf(h)
187- ```
0 commit comments