Skip to content

Commit 3915c69

Browse files
committed
qc'd code and relevant scripts
1 parent b5b5d2b commit 3915c69

File tree

5 files changed

+11773
-36
lines changed

5 files changed

+11773
-36
lines changed

IDF-shifter.ipynb

Lines changed: 48 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,30 @@
22
"cells": [
33
{
44
"cell_type": "code",
5-
"execution_count": null,
5+
"execution_count": 1,
66
"id": "8d311496-9c7f-4390-8f76-f6bc5a8914c7",
77
"metadata": {},
8-
"outputs": [],
8+
"outputs": [
9+
{
10+
"name": "stdout",
11+
"output_type": "stream",
12+
"text": [
13+
"2022-02-10 20:59:38,451 - pint.util - WARNING - Redefining 'year' (<class 'pint.definitions.UnitDefinition'>)\n",
14+
"2022-02-10 20:59:38,453 - pint.util - WARNING - Redefining 'yr' (<class 'pint.definitions.UnitDefinition'>)\n",
15+
"2022-02-10 20:59:38,454 - pint.util - WARNING - Redefining 'degree_Celsius' (<class 'pint.definitions.UnitDefinition'>)\n",
16+
"2022-02-10 20:59:38,455 - pint.util - WARNING - Redefining '°C' (<class 'pint.definitions.UnitDefinition'>)\n",
17+
"2022-02-10 20:59:38,456 - pint.util - WARNING - Redefining 'celsius' (<class 'pint.definitions.UnitDefinition'>)\n",
18+
"2022-02-10 20:59:38,457 - pint.util - WARNING - Redefining 'degC' (<class 'pint.definitions.UnitDefinition'>)\n",
19+
"2022-02-10 20:59:38,458 - pint.util - WARNING - Redefining 'degreeC' (<class 'pint.definitions.UnitDefinition'>)\n",
20+
"2022-02-10 20:59:38,458 - pint.util - WARNING - Redefining 'C' (<class 'pint.definitions.UnitDefinition'>)\n",
21+
"2022-02-10 20:59:38,459 - pint.util - WARNING - Redefining 'deg_C' (<class 'pint.definitions.UnitDefinition'>)\n",
22+
"2022-02-10 20:59:38,460 - pint.util - WARNING - Redefining 'degrees_north' (<class 'pint.definitions.UnitDefinition'>)\n",
23+
"2022-02-10 20:59:38,463 - pint.util - WARNING - Redefining 'degrees_east' (<class 'pint.definitions.UnitDefinition'>)\n",
24+
"2022-02-10 20:59:38,464 - pint.util - WARNING - Redefining '[speed]' (<class 'pint.definitions.DimensionDefinition'>)\n",
25+
"2022-02-10 20:59:43,080 - xclim - INFO - Matplotlib installed. Setting make_graph to True.\n"
26+
]
27+
}
28+
],
929
"source": [
1030
"import importlib as il\n",
1131
"il.invalidate_caches()\n",
@@ -53,7 +73,7 @@
5373
},
5474
{
5575
"cell_type": "code",
56-
"execution_count": null,
76+
"execution_count": 3,
5777
"id": "a5e79bb5-b724-4b15-8eb7-4b4199e26a43",
5878
"metadata": {},
5979
"outputs": [],
@@ -68,13 +88,14 @@
6888
},
6989
{
7090
"cell_type": "code",
71-
"execution_count": null,
72-
"id": "d99e5d78-431d-4f58-9b0c-d41f02106ca4",
91+
"execution_count": 4,
92+
"id": "fdab51b5-4087-46a2-a23e-1f0d3c2442ec",
7393
"metadata": {},
7494
"outputs": [],
7595
"source": [
7696
"# Load IDF data\n",
77-
"IDF_files=glob.glob('IDF-files/IDF_v-3.20_2021_03_26_*/*.txt')\n",
97+
"input_path = \"path to input\n",
98+
"IDF_files=glob.glob('/***REMOVED******REMOVED***/IDF-files/IDF_v-3.20_2021_03_26_*/*')\n",
7899
"tmp=ECCC_IDF_reader.read_ECCC_IDF(IDF_files[0])\n",
79100
"n_stations=len(IDF_files)\n",
80101
"station_names=[ECCC_IDF_reader.read_ECCC_IDF(f)['location']['name'] for f in IDF_files]\n",
@@ -91,13 +112,14 @@
91112
"outputs": [],
92113
"source": [
93114
"#create new, empty xarray dataset to hold all results\n",
115+
"#change model to realization to work in xclim\n",
94116
"IDF_da=xr.DataArray(np.empty((n_stations,n_durations,n_return_periods,n_rcps,n_models,n_time)),\n",
95117
" dims=[ 'station', 'duration', 'return_period', 'rcp', 'model', 'time',],\n",
96118
" coords=dict(station=station_ID,\n",
97119
" duration=tmp['IDF_rates'].index.values,\n",
98120
" return_period=tmp['IDF_rates'].columns.values,\n",
99121
" rcp=rcps,\n",
100-
" models=temperature_data.coords['model'],\n",
122+
" model=temperature_data.coords['model'],\n",
101123
" time=temperature_data.coords['time'],\n",
102124
" ))\n",
103125
"\n",
@@ -114,6 +136,10 @@
114136
"IDF_station_longitude_da=xr.DataArray(np.empty((n_stations)),\n",
115137
" dims=[ 'station'],\n",
116138
" coords=dict(station=station_ID,))\n",
139+
"#add ref array for each station\n",
140+
"IDF_station_ref_da=xr.DataArray(np.empty((n_stations)),\n",
141+
" dims=[ 'station'],\n",
142+
" coords=dict(station=station_ID,))\n",
117143
"\n",
118144
"for n,f in enumerate(tqdm(IDF_files)):\n",
119145
" IDF_dict=ECCC_IDF_reader.read_ECCC_IDF(f)\n",
@@ -124,12 +150,14 @@
124150
" #Get mid-point of IDF period of record\n",
125151
" base_time=int(np.mean((IDF_dict['period']['start_date'],\n",
126152
" IDF_dict['period']['end_date'])))\n",
127-
" ibase_T=np.argmin(abs(mod_time_as_int-base_time-15))\n",
153+
" \n",
154+
" #Use to determine which 30y period to use - subtract 15 from base_time so that you choose a 30y period with base_time in middle (there must be a better way)\n",
155+
" ibase_T=np.argmin(abs(mod_time_as_int-(base_time-15)))\n",
128156
" \n",
129157
" print(ibase_T)\n",
130158
" \n",
131159
" dT=T-T[:,:,ibase_T] #calculate dT - broadcast to all models, RCPs, times\n",
132-
" dT.attrs['units']='delta_degreeC'\n",
160+
" dT.attrs['units']='delta_degreeC' #change units for CC equation\n",
133161
" \n",
134162
" pr_baseline=xr.DataArray(IDF_dict['IDF_rates'],\n",
135163
" coords=dict(duration=IDF_da.coords['duration'],\n",
@@ -143,36 +171,40 @@
143171
" \n",
144172
" IDF_station_latitude_da.loc[IDF_dict['location']['ID']] = IDF_dict['location']['latitude']\n",
145173
" IDF_station_longitude_da.loc[IDF_dict['location']['ID']] = IDF_dict['location']['longitude']\n",
174+
" IDF_station_ref_da.loc[IDF_dict['location']['ID']] =mod_time_as_int[ibase_T] #add each stations ref period for later use\n",
146175
" #TODO: add station name variable accumulator\n",
147176
"\n"
148177
]
149178
},
150179
{
151180
"cell_type": "code",
152-
"execution_count": null,
181+
"execution_count": 69,
153182
"id": "e7c2efdf-4537-4f0e-be38-47e31ae5916e",
154183
"metadata": {},
155184
"outputs": [],
156185
"source": [
186+
"#used lat and lon to align with other ds on CD.ca\n",
157187
"IDF_df=xr.Dataset(dict(IDF_data=IDF_da,\n",
158188
" IDF_confidence=IDF_confidence_da,\n",
159-
" IDF_station_latitude=IDF_station_latitude_da,\n",
160-
" IDF_station_longitude=IDF_station_longitude_da,))"
189+
" lat=IDF_station_latitude_da,\n",
190+
" lon=IDF_station_longitude_da,\n",
191+
" ref=IDF_station_ref_da,\n",
192+
" ))"
161193
]
162194
},
163195
{
164196
"cell_type": "code",
165-
"execution_count": null,
197+
"execution_count": 70,
166198
"id": "026f8724-014c-454e-a3c4-f846839b2427",
167199
"metadata": {},
168200
"outputs": [],
169201
"source": [
170-
"fname='national_IDF_projection_dataset.nc'"
202+
"fname='/notebook_dir/writable-workspace/IDF/national_IDF_projection_dataset.nc'"
171203
]
172204
},
173205
{
174206
"cell_type": "code",
175-
"execution_count": null,
207+
"execution_count": 71,
176208
"id": "101a81d2-0825-43c8-9639-d65beae7dd75",
177209
"metadata": {},
178210
"outputs": [],
@@ -247,14 +279,6 @@
247279
"metadata": {},
248280
"outputs": [],
249281
"source": []
250-
},
251-
{
252-
"cell_type": "code",
253-
"execution_count": null,
254-
"id": "53313f84-18ac-47c3-abfb-57b071568287",
255-
"metadata": {},
256-
"outputs": [],
257-
"source": []
258282
}
259283
],
260284
"metadata": {
@@ -273,7 +297,7 @@
273297
"name": "python",
274298
"nbconvert_exporter": "python",
275299
"pygments_lexer": "ipython3",
276-
"version": "3.7.10"
300+
"version": "3.8.12"
277301
}
278302
},
279303
"nbformat": 4,

0 commit comments

Comments
 (0)