Skip to content

Commit 0a6d2ad

Browse files
committed
deal with sid and name in tc tracks and trop cyclone
1 parent 7006f2e commit 0a6d2ad

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

climada/hazard/tc_tracks.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ class TCTracks():
8282
- max_sustained_wind_unit (attrs)
8383
- central_pressure_unit (attrs)
8484
- name (attrs)
85+
- sid (attrs)
8586
- orig_event_flag (attrs)
8687
- data_provider (attrs)
8788
- basin (attrs)
@@ -109,7 +110,8 @@ def get_track(self, track_name=None):
109110
"""Get track with provided name. Return all tracks if no name provided.
110111
111112
Parameters:
112-
track_name (str, optional): name of track (ibtracsID for IBTrACS)
113+
track_name (str, optional): name or sid (ibtracsID for IBTrACS)
114+
of track
113115
114116
Returns:
115117
xarray.Dataset or [xarray.Dataset]
@@ -120,7 +122,7 @@ def get_track(self, track_name=None):
120122
return self.data
121123

122124
for track in self.data:
123-
if track.name == track_name:
125+
if track.name == track_name or track.sid == track_name:
124126
return track
125127

126128
LOGGER.info('No track with name %s found.', track_name)
@@ -333,8 +335,8 @@ def _one_rnd_walk(track, ens_size, ens_amp0, ens_amp, max_angle):
333335
i_track.lon.values = i_track.lon.values + d_lat_lon[0, :]
334336
i_track.lat.values = i_track.lat.values + d_lat_lon[1, :]
335337
i_track.attrs['orig_event_flag'] = False
336-
i_track.attrs['name'] = i_track.attrs['name'] + '_gen' + \
337-
str(i_ens+1)
338+
i_track.attrs['name'] = i_track.attrs['name'] + '_gen' + str(i_ens+1)
339+
i_track.attrs['sid'] = i_track.attrs['sid'] + '_gen' + str(i_ens+1)
338340
i_track.attrs['id_no'] = i_track.attrs['id_no'] + (i_ens+1)/100
339341

340342
ens_track.append(i_track)
@@ -506,6 +508,7 @@ def _read_one_csv(self, file_name):
506508
tr_ds.attrs['max_sustained_wind_unit'] = max_sus_wind_unit
507509
tr_ds.attrs['central_pressure_unit'] = 'mb'
508510
tr_ds.attrs['name'] = name
511+
tr_ds.attrs['sid'] = name
509512
tr_ds.attrs['orig_event_flag'] = bool(dfr['original_data']. values[0])
510513
tr_ds.attrs['data_provider'] = dfr['data_provider'].values[0]
511514
tr_ds.attrs['basin'] = dfr['gen_basin'].values[0]
@@ -572,7 +575,7 @@ def _read_one_raw(self, nc_data, i_track, provider):
572575
[nc_data.variables['name'][i_track].mask==False].data.astype(str))
573576
sid = ''.join(nc_data.variables['sid'][i_track].astype(str))
574577
basin = ''.join(nc_data.variables['basin'][i_track, 0, :].astype(str))
575-
LOGGER.info('Reading %s', name)
578+
LOGGER.info('Reading %s: %s', sid, name)
576579

577580
isot = nc_data.variables['iso_time'][i_track, :, :]
578581
val_len = isot.mask[isot.mask == False].shape[0]//isot.shape[1]

climada/hazard/test/test_tc_tracks.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def test_read_pass(self):
5959
self.assertEqual(tc_track.data[0].central_pressure_unit, 'mb')
6060
self.assertEqual(tc_track.data[0].orig_event_flag, 1)
6161
self.assertEqual(tc_track.data[0].name, '1951239N12334')
62+
self.assertEqual(tc_track.data[0].sid, '1951239N12334')
6263
self.assertEqual(tc_track.data[0].id_no, 1951239012334)
6364
self.assertEqual(tc_track.data[0].data_provider, 'hurdat_atl')
6465
self.assertTrue(np.isnan(tc_track.data[0].basin))

climada/hazard/trop_cyclone.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def _tc_from_track(track, centroids, coastal_centr, model='H08'):
151151
new_haz.event_id = np.array([1])
152152
# frequency set when all tracks available
153153
new_haz.frequency = np.array([1])
154-
new_haz.event_name = [track.name]
154+
new_haz.event_name = [track.sid]
155155
new_haz.fraction = new_haz.intensity.copy()
156156
new_haz.fraction.data.fill(1)
157157
# store date of start

climada/test/test_tc_tracks.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,6 @@ def test_read_raw_pass(self):
6666
tc_track = TCTracks()
6767
tc_track.read_ibtracs_netcdf(provider='usa', storm_id='2017242N16333')
6868
self.assertEqual(len(tc_track.data), 1)
69-
self.assertEqual(tc_track.get_track().sid, '2017242N16333')
70-
self.assertEqual(tc_track.get_track().name, 'IRMA')
7169
self.assertEqual(tc_track.get_track().time.dt.year.values[0], 2017)
7270
self.assertEqual(tc_track.get_track().time.dt.month.values[0], 8)
7371
self.assertEqual(tc_track.get_track().time.dt.day.values[0], 30)
@@ -97,7 +95,8 @@ def test_read_raw_pass(self):
9795
self.assertEqual(tc_track.get_track().basin, 'NA')
9896
self.assertEqual(tc_track.get_track().max_sustained_wind_unit, 'kn')
9997
self.assertEqual(tc_track.get_track().central_pressure_unit, 'mb')
100-
self.assertEqual(tc_track.get_track().name, '2017242N16333')
98+
self.assertEqual(tc_track.get_track().sid, '2017242N16333')
99+
self.assertEqual(tc_track.get_track().name, 'IRMA')
101100
self.assertEqual(tc_track.get_track().orig_event_flag, True)
102101
self.assertEqual(tc_track.get_track().data_provider, 'usa')
103102
self.assertEqual(tc_track.get_track().category, 5)

0 commit comments

Comments
 (0)