Skip to content

Commit 60db28d

Browse files
committed
domain mask added based on observations
1 parent 3d61318 commit 60db28d

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

pcmdi_metrics/monsoon_wang/monsoon_wang_driver.py

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,17 @@ def monsoon_wang_runner(args):
126126
# FCN TO COMPUTE GLOBAL ANNUAL RANGE AND MONSOON PRECIP INDEX
127127

128128
annrange_obs, mpi_obs = mpd(dobs_orig)
129+
130+
# create monsoon domain mask based on observations: annual range > 2.5 mm/day
131+
132+
domain_mask_obs = xr.where(annrange_obs>thr, 1, 0)
133+
domain_mask_obs.name = 'mask'
134+
#domain_mask_obs.to_netcdf('/home/dong12/PMP_240131/pcmdi_metrics/pcmdi_metrics/monsoon_wang/domain_mask_obs.nc')
135+
136+
mpi_obs = mpi_obs.where(domain_mask_obs)
137+
#sys.exit()
138+
139+
129140
#########################################
130141
# SETUP WHERE TO OUTPUT RESULTING DATA (netcdf)
131142
nout = os.path.join(
@@ -231,6 +242,10 @@ def monsoon_wang_runner(args):
231242

232243
annrange_mod, mpi_mod = mpd(d_orig)
233244

245+
domain_mask_mod = xr.where(annrange_mod>thr, 1, 0)
246+
#domain_mask_mod.name = 'mask'
247+
mpi_mod = mpi_mod.where(domain_mask_mod)
248+
234249
#print('mod_annrange.dims = ', annrange_mod.dims)
235250
#print('obs_annrange_dims = ', annrange_obs.dims)
236251
#print('mod_annrange.coords = ', annrange_mod.coords)
@@ -271,7 +286,7 @@ def monsoon_wang_runner(args):
271286

272287
regions_specs = load_regions_specs()
273288
#print("regions_specs - ", regions_specs)
274-
print("list(regions_specs.keys())", list(regions_specs.keys()))
289+
# print("list(regions_specs.keys())", list(regions_specs.keys()))
275290

276291
for dom in doms:
277292
mpi_stats_dic[mod][dom] = {}
@@ -282,7 +297,8 @@ def monsoon_wang_runner(args):
282297

283298
#mpi_obs.to_netcdf("xd_mpi_obs.nc")
284299

285-
mpi_obs_reg = region_subset(mpi_obs, dom, data_var="pr", regions_specs=regions_specs)
300+
mpi_obs_reg = region_subset(mpi_obs, dom)
301+
#mpi_obs_reg = region_subset(mpi_obs, dom, data_var="pr", regions_specs=regions_specs)
286302
#mpi_obs_reg = region_subset(mpi_obs, dom)#, var="pr", regions_specs=regions_specs)
287303
#mpi_obs_reg = region_subset(mpi_obs, dom, var="pr")#, regions_specs=regions_specs)
288304
#mpi_obs_reg = region_subset(mpi_obs, regions_specs, region=dom)#, var="pr", regions_specs=regions_specs)
@@ -305,17 +321,22 @@ def monsoon_wang_runner(args):
305321
da2_flat = mpi_obs_reg.values.ravel()
306322
#print("da1_flat = ", da1_flat)
307323
#print("da2_flat = ", da2_flat)
308-
cor = np.corrcoef(da1_flat, da2_flat)[0, 1]
324+
325+
#cor = np.corrcoef(da1_flat, da2_flat)[0, 1]
326+
cor = np.ma.corrcoef(np.ma.masked_invalid(da1_flat), np.ma.masked_invalid(da2_flat) )[0, 1]
327+
309328
print("cor = ", cor)
310-
#sys.exit()
329+
330+
sys.exit()
311331

312332
#rms = float(statistics.rms(mpi_mod_reg, mpi_obs_reg, axis="xy"))
313333
squared_diff = (mpi_mod_reg - mpi_obs_reg) ** 2
314334
mean_squared_error = squared_diff.mean(skipna=True)
315335
rms = np.sqrt(mean_squared_error)
316336

317337
rmsn = rms / mpi_obs_reg_sd
318-
del(mpi_mod_reg)
338+
#del(mpi_mod_reg)
339+
#del(mpi_obs_reg)
319340

320341
# DOMAIN SELECTED FROM GLOBAL ANNUAL RANGE FOR MODS AND OBS
321342
#annrange_mod_dom = annrange_mod(reg_sel)
@@ -347,13 +368,19 @@ def monsoon_wang_runner(args):
347368
#g.write(falarmmap, dtype=numpy.int32)
348369
#g.close()
349370
ds_out = xr.Dataset({
371+
"obsmap": annrange_obs_dom,
372+
"modmap": annrange_mod_dom,
350373
"hitmap": hitmap,
351374
"missmap": missmap,
352375
"falarmmap": falarmmap
353376
})
354377
ds_out.to_netcdf(fm)
355378
f.close()
356379

380+
if np.isnan(cor):
381+
sys.exit()
382+
383+
357384
# OUTPUT METRICS TO JSON FILE
358385
OUT = pcmdi_metrics.io.base.Base(os.path.abspath(jout), json_filename)
359386

0 commit comments

Comments
 (0)