@@ -37,151 +37,3 @@ for tracking.
37
37
38
38
### Grid manipulation ###
39
39
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