@@ -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