6
6
7
7
class GlobalTracking (object ):
8
8
"""
9
-
9
+
10
10
"""
11
11
def __init__ (self , eddy , ymd_str ):
12
12
"""
13
13
"""
14
14
self .tracklist = eddy .tracklist
15
- self .SIGN_TYPE = eddy .SIGN_TYPE
15
+ self .sign_type = eddy .SIGN_TYPE
16
16
self .ymd_str = ymd_str
17
17
self .num_tracks = np .sum ([i .alive for i in self .tracklist ])
18
-
19
-
18
+
20
19
def create_netcdf (self ):
21
20
"""
22
21
"""
23
- with Dataset ('%s_%s.nc' % (self .SIGN_TYPE , self .ymd_str ),
22
+ with Dataset ('%s_%s.nc' % (self .sign_type , self .ymd_str ),
24
23
'w' , format = 'NETCDF4' ) as nc :
25
-
24
+
26
25
# Create dimensions
27
26
nc .createDimension ('tracks' , self .num_tracks )
28
27
nc .createDimension ('properties' , None )
29
-
30
28
# Create variables
31
29
t = 0
32
30
for track in self .tracklist :
33
- if track .alive :
31
+ # if track.alive:
34
32
varname = 'track_%s' % np .str (t ).zfill (4 )
35
33
nc .createVariable (varname , np .float64 , ('properties' ))
36
34
t += 1
37
35
nc .createVariable ('track_lengths' , np .int , ('tracks' ))
38
-
39
-
36
+
40
37
def write_tracks (self ):
41
38
"""
42
39
"""
43
40
t = 0
44
41
for track in self .tracklist :
45
42
tracklen = len (track .lon )
46
43
if track .alive :
47
- properties = np .hstack ((track .dayzero , track .saved2nc ,
48
- track .save_extras , track .lon , track .lat ,
49
- track .amplitude , track .radius_s ,
50
- track .radius_e , track .uavg ,
51
- track .teke , track .ocean_time ))
44
+ properties = np .hstack ((
45
+ track .dayzero , track .saved2nc ,
46
+ track .save_extras , track .lon , track .lat ,
47
+ track .amplitude , track .radius_s ,
48
+ track .radius_e , track .uavg ,
49
+ track .teke , track .ocean_time ))
52
50
53
- with Dataset ('%s_%s.nc' % (self .SIGN_TYPE , self .ymd_str ), 'a' ) as nc :
51
+ with Dataset ('%s_%s.nc' % (self .sign_type , self .ymd_str ), 'a' ) as nc :
54
52
varname = 'track_%s' % np .str (t ).zfill (4 )
55
53
nc .variables [varname ][:] = properties
56
54
nc .variables ['track_lengths' ][t ] = tracklen
57
55
t += 1
58
-
59
-
56
+
60
57
def read_tracks (self ):
61
58
"""
62
59
Read and sort the property data for returning to the
@@ -65,13 +62,13 @@ def read_tracks(self):
65
62
with Dataset ('Anticyclonic_20140312.nc' ) as nc :
66
63
tracklens = nc .variables ['track_lengths' ][:]
67
64
for t , tracklen in enumerate (tracklengths ):
68
-
65
+
69
66
varname = 'track_%s' % np .str (t ).zfill (4 )
70
67
track = nc .variables [varname ][:]
71
68
dayzero = track [0 ].astype (bool )
72
69
saved2nc = track [1 ].astype (bool )
73
70
save_extras = track [2 ].astype (bool )
74
-
71
+
75
72
inds = np .arange (3 , 3 + (tracklen * 8 ), tracklen )
76
73
lon = track [inds [0 ]:inds [1 ]]
77
74
lat = track [inds [1 ]:inds [2 ]]
@@ -81,10 +78,5 @@ def read_tracks(self):
81
78
uavg = track [inds [5 ]:inds [6 ]]
82
79
teke = track [inds [6 ]:inds [7 ]]
83
80
ocean_time = track [inds [7 ]:]
84
-
85
-
81
+
86
82
properties = nc .variables ['track_0000' ][:]
87
-
88
-
89
-
90
-
0 commit comments