Coverage for tests/probabilty/cdf_test_data.py: 100%

85 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2024-02-28 12:51 +1100

1""" 

2Generation of the test data used to test scores.probability.functions.cdfs 

3""" 

4 

5import xarray as xr 

6from numpy import nan 

7 

8### 

9# Test data for cdfvalues_from_probs 

10### 

11DA_CDF_FROM_PROBS = xr.DataArray( # nonexceedance probabilities 

12 data=[0.4, 0.9, 0.6, 0.8, nan], dims=["x"], coords={"x": [0, 10, 5, 6, 11]} 

13) 

14 

15EXP_CDF_FROM_PROBS = xr.DataArray( 

16 data=[0.4, 0.6, 0.8, 0.9, nan], 

17 dims=["x"], 

18 coords={"x": [0, 5, 6, 10, 11]}, 

19 name="cdf", 

20) 

21 

22 

23"""" 

24Test data for cdfvalues_from_quantiles 

25""" 

26DA_CDF_FROM_QUANTS1 = xr.DataArray( # example with no point mass 

27 data=[[8, 11, 15, nan], [1, 3, 13, nan]], 

28 dims=["station", "q_level"], 

29 coords={"station": [1001, 1002], "q_level": [0.2, 0.5, 0.9, 0.95]}, 

30) 

31 

32EXP_CDF_FROM_QUANTS1 = xr.DataArray( 

33 data=[ 

34 [nan, nan, 0.2, 0.5, nan, 0.9], 

35 [0.2, 0.5, nan, nan, 0.9, nan], 

36 ], 

37 dims=["station", "x"], 

38 coords={"station": [1001, 1002], "x": [1, 3, 8, 11, 13, 15]}, 

39 name="cdf", 

40) 

41 

42DA_CDF_FROM_QUANTS2 = xr.DataArray( # point mass at x=13 

43 data=[[8, 8, 15], [1, 3, 13]], 

44 dims=["station", "q_level"], 

45 coords={"station": [1001, 1002], "q_level": [0.2, 0.5, 0.9]}, 

46) 

47 

48EXP_CDF_FROM_QUANTS2 = xr.DataArray( 

49 data=[[nan, nan, 0.35, nan, 0.9], [0.2, 0.5, nan, nan, nan]], 

50 dims=["station", "x"], 

51 coords={"station": [1001, 1002], "x": [1, 3, 8, 13, 15]}, 

52 name="cdf", 

53) 

54 

55DA_CDF_FROM_QUANTS3 = xr.DataArray( # quantile levels outside interval (0,1) 

56 data=[[8, 8, 15], [1, 3, 13]], 

57 dims=["station", "q_level"], 

58 coords={"station": [1001, 1002], "q_level": [-0.2, 0.5, 0.9]}, 

59) 

60 

61DA_CDF_FROM_QUANTS4 = xr.DataArray( # quantile levels outside interval (0,1) 

62 data=[[8, 8, 15], [1, 3, 13]], 

63 dims=["station", "q_level"], 

64 coords={"station": [1001, 1002], "q_level": [0.2, 0.5, 1.0]}, 

65) 

66 

67DA_WITHIN_BOUNDS1 = xr.DataArray( # all nans 

68 data=[[nan, nan, nan], [nan, nan, nan]], 

69 dims=["station", "x"], 

70 coords={"station": [1001, 1002], "x": [0.2, 0.5, 1.0]}, 

71) 

72 

73DA_WITHIN_BOUNDS2 = xr.DataArray( 

74 data=[[nan, 0, 0.9], [0.5, nan, 1]], 

75 dims=["station", "x"], 

76 coords={"station": [1001, 1002], "x": [0.2, 0.5, 1.0]}, 

77) 

78 

79DA_WITHIN_BOUNDS3 = xr.DataArray( 

80 data=[[nan, 0, -0.9], [0.5, nan, 1]], 

81 dims=["station", "x"], 

82 coords={"station": [1001, 1002], "x": [0.2, 0.5, 1.0]}, 

83) 

84 

85 

86DA_FILL_CDF1 = xr.DataArray( 

87 data=[ 

88 [nan, nan, nan, nan, nan, nan, nan], 

89 [nan, 0.4, nan, nan, nan, nan, nan], 

90 [nan, 0.2, nan, 0.8, 0.9, nan, nan], 

91 [0, 0.1, 0.6, 0.8, 1, nan, nan], 

92 ], 

93 dims=["station", "x"], 

94 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4, 5, 6]}, 

95) 

96 

97EXP_FILL_CDF1A = xr.DataArray( # linear fill 

98 data=[ 

99 [nan, nan, nan, nan, nan, nan, nan], 

100 [nan, nan, nan, nan, nan, nan, nan], 

101 [0, 0.2, 0.5, 0.8, 0.9, 1, 1], 

102 [0, 0.1, 0.6, 0.8, 1, 1, 1], 

103 ], 

104 dims=["station", "x"], 

105 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4, 5, 6]}, 

106) 

107 

108EXP_FILL_CDF1B = xr.DataArray( # step fill 

109 data=[ 

110 [nan, nan, nan, nan, nan, nan, nan], 

111 [0, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], 

112 [0, 0.2, 0.2, 0.8, 0.9, 0.9, 0.9], 

113 [0, 0.1, 0.6, 0.8, 1, 1, 1], 

114 ], 

115 dims=["station", "x"], 

116 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4, 5, 6]}, 

117) 

118 

119EXP_FILL_CDF1C = xr.DataArray( # step fill, min_nonnan=2 

120 data=[ 

121 [nan, nan, nan, nan, nan, nan, nan], 

122 [nan, nan, nan, nan, nan, nan, nan], 

123 [0, 0.2, 0.2, 0.8, 0.9, 0.9, 0.9], 

124 [0, 0.1, 0.6, 0.8, 1, 1, 1], 

125 ], 

126 dims=["station", "x"], 

127 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4, 5, 6]}, 

128) 

129 

130EXP_FILL_CDF1D = xr.DataArray( # forward fill 

131 data=[ 

132 [nan, nan, nan, nan, nan, nan, nan], 

133 [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], 

134 [0.2, 0.2, 0.2, 0.8, 0.9, 0.9, 0.9], 

135 [0, 0.1, 0.6, 0.8, 1, 1, 1], 

136 ], 

137 dims=["station", "x"], 

138 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4, 5, 6]}, 

139) 

140 

141EXP_FILL_CDF1E = xr.DataArray( # backward fill 

142 data=[ 

143 [nan, nan, nan, nan, nan, nan, nan], 

144 [0.4, 0.4, 0.4, 0.4, 0.4, 0.4, 0.4], 

145 [0.2, 0.2, 0.8, 0.8, 0.9, 0.9, 0.9], 

146 [0, 0.1, 0.6, 0.8, 1, 1, 1], 

147 ], 

148 dims=["station", "x"], 

149 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4, 5, 6]}, 

150) 

151 

152DA_CDFFPF_PROBS = xr.DataArray( 

153 data=[ 

154 [nan, nan, nan, nan, nan], 

155 [nan, 0.5, nan, 0.8, nan], 

156 [0, 0.2, 0.2, 0.8, 0.9], 

157 ], 

158 dims=["station", "x"], 

159 coords={"station": [1001, 1002, 1003], "x": [0, 1, 2, 3, 4]}, 

160) 

161 

162DA_CDFFPF_PROBS_REORDER = xr.DataArray( # same as above but reorderd coords 

163 data=[ 

164 [nan, nan, nan, nan, nan], 

165 [nan, 0.5, nan, nan, 0.8], 

166 [0, 0.2, 0.2, 0.9, 0.8], 

167 ], 

168 dims=["station", "x"], 

169 coords={"station": [1001, 1002, 1003], "x": [0, 1, 2, 4, 3]}, 

170) 

171 

172DA_CDFFPF_QUANTS = xr.DataArray( 

173 data=[ 

174 [nan, nan, nan], 

175 [0.2, 1, 2.773], 

176 [2.667, 2.8, 2.901], 

177 ], 

178 dims=["station", "level"], 

179 coords={"station": [1001, 1002, 1003], "level": [0.25, 0.5, 0.75]}, 

180) 

181 

182DA_CDFFPF_QUANTS_REORDER = xr.DataArray( # same as above but reorderd coords 

183 data=[ 

184 [nan, nan, nan], 

185 [1, 0.2, 2.773], 

186 [2.8, 2.667, 2.901], 

187 ], 

188 dims=["station", "level"], 

189 coords={"station": [1001, 1002, 1003], "level": [0.5, 0.25, 0.75]}, 

190) 

191 

192EXP_CDFFPF_NOFILL_NOROUND = xr.DataArray( 

193 data=[ 

194 [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], 

195 [nan, 0.25, 0.5, nan, nan, 0.75, nan, nan, 0.8, nan], 

196 [0, nan, 0.2, 0.2, 0.25, nan, 0.5, 0.75, 0.8, 0.9], 

197 ], 

198 dims=["station", "x"], 

199 coords={ 

200 "station": [1001, 1002, 1003], 

201 "x": [0, 0.2, 1, 2, 2.667, 2.773, 2.8, 2.901, 3, 4], 

202 }, 

203 name="cdf", 

204) 

205 

206EXP_CDFFPF_NOFILL_ROUND = xr.DataArray( 

207 data=[ 

208 [nan, nan, nan, nan, nan, nan, nan, nan], 

209 [nan, 0.25, 0.5, nan, nan, 0.75, 0.8, nan], 

210 [0, nan, 0.2, 0.2, 0.25, 0.5, 0.8, 0.9], 

211 ], 

212 dims=["station", "x"], 

213 coords={ 

214 "station": [1001, 1002, 1003], 

215 "x": [0, 0.2, 1, 2, 2.6, 2.8, 3, 4], 

216 }, 

217 name="cdf", 

218) 

219 

220DA_CDFFPF_QUANTS1 = xr.DataArray( 

221 data=[ 

222 [nan, nan, nan], 

223 [0.2, 1, 2.773], 

224 [2.667, 2.8, 5], # last entry differs from DA_CDFFPF_QUANTS 

225 ], 

226 dims=["station", "level"], 

227 coords={"station": [1001, 1002, 1003], "level": [0.25, 0.5, 0.75]}, 

228) 

229 

230EXP_CDFFPF_STEPFILL_NOROUND1 = xr.DataArray( # minnan = 2 

231 data=[ 

232 [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], 

233 [0, 0.25, 0.5, 0.5, 0.5, 0.75, 0.75, 0.75, 0.8, 0.8], 

234 [0, 0, 0.2, 0.2, 0.25, 0.25, 0.5, 0.75, 0.8, 0.9], 

235 ], 

236 dims=["station", "x"], 

237 coords={ 

238 "station": [1001, 1002, 1003], 

239 "x": [0, 0.2, 1, 2, 2.667, 2.773, 2.8, 2.901, 3, 4], 

240 }, 

241 name="cdf", 

242) 

243 

244EXP_CDFFPF_STEPFILL_NOROUND2 = xr.DataArray( # minnan = 5 

245 data=[ 

246 [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], 

247 [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], 

248 [0, 0, 0.2, 0.2, 0.25, 0.25, 0.5, 0.75, 0.8, 0.9], 

249 ], 

250 dims=["station", "x"], 

251 coords={ 

252 "station": [1001, 1002, 1003], 

253 "x": [0, 0.2, 1, 2, 2.667, 2.773, 2.8, 2.901, 3, 4], 

254 }, 

255 name="cdf", 

256) 

257 

258EXP_CDFFPF_PRIORITISE_PROBS1 = xr.DataArray( # inconsistent but not conflicting 

259 data=[ 

260 [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], 

261 [nan, 0.25, 0.5, nan, nan, 0.75, nan, 0.8, nan, nan], 

262 [0, nan, 0.2, 0.2, 0.25, nan, 0.5, 0.8, 0.9, 0.75], 

263 ], 

264 dims=["station", "x"], 

265 coords={ 

266 "station": [1001, 1002, 1003], 

267 "x": [0, 0.2, 1, 2, 2.667, 2.773, 2.8, 3, 4, 5], 

268 }, 

269 name="cdf", 

270) 

271 

272DA_CDFFPF_QUANTS2 = xr.DataArray( 

273 data=[ 

274 [nan, nan, nan], 

275 [0.2, 1, 2.773], 

276 [2.667, 2.8, 4], # last entry differs from DA_CDFFPF_QUANTS 

277 ], 

278 dims=["station", "level"], 

279 coords={"station": [1001, 1002, 1003], "level": [0.25, 0.5, 0.75]}, 

280) 

281 

282EXP_CDFFPF_PRIORITISE_PROBS2 = xr.DataArray( # conflicting, last entry of quants 

283 data=[ 

284 [nan, nan, nan, nan, nan, nan, nan, nan, nan], 

285 [nan, 0.25, 0.5, nan, nan, 0.75, nan, 0.8, nan], 

286 [0, nan, 0.2, 0.2, 0.25, nan, 0.5, 0.8, 0.9], 

287 ], 

288 dims=["station", "x"], 

289 coords={ 

290 "station": [1001, 1002, 1003], 

291 "x": [0, 0.2, 1, 2, 2.667, 2.773, 2.8, 3, 4], 

292 }, 

293 name="cdf", 

294) 

295 

296EXP_CDFFPF_PRIORITISE_QUANTS2 = xr.DataArray( # conflicting, last entry of quants 

297 data=[ 

298 [nan, nan, nan, nan, nan, nan, nan, nan, nan], 

299 [nan, 0.25, 0.5, nan, nan, 0.75, nan, 0.8, nan], 

300 [0, nan, 0.2, 0.2, 0.25, nan, 0.5, 0.8, 0.75], 

301 ], 

302 dims=["station", "x"], 

303 coords={ 

304 "station": [1001, 1002, 1003], 

305 "x": [0, 0.2, 1, 2, 2.667, 2.773, 2.8, 3, 4], 

306 }, 

307 name="cdf", 

308) 

309 

310DA_CDF_ENVELOPE1 = xr.DataArray( 

311 data=[ 

312 [0.2, 0.4, 0.5, 0.8, 1], 

313 [0.2, 0.1, 0.7, 0.4, 0.9], 

314 [0, 0.6, nan, 0.7, 0.5], 

315 [nan, nan, nan, nan, nan], 

316 ], 

317 dims=["station", "x"], 

318 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4]}, 

319) 

320 

321EXP_CDF_ENVELOPE1 = xr.DataArray( 

322 data=[ 

323 [ 

324 [0.2, 0.4, 0.5, 0.8, 1], 

325 [0.2, 0.1, 0.7, 0.4, 0.9], 

326 [0, 0.6, nan, 0.7, 0.5], 

327 [nan, nan, nan, nan, nan], 

328 ], 

329 [ 

330 [0.2, 0.4, 0.5, 0.8, 1], 

331 [0.2, 0.2, 0.7, 0.7, 0.9], 

332 [0, 0.6, nan, 0.7, 0.7], 

333 [nan, nan, nan, nan, nan], 

334 ], 

335 [ 

336 [0.2, 0.4, 0.5, 0.8, 1], 

337 [0.1, 0.1, 0.4, 0.4, 0.9], 

338 [0, 0.5, nan, 0.5, 0.5], 

339 [nan, nan, nan, nan, nan], 

340 ], 

341 ], 

342 dims=["cdf_type", "station", "x"], 

343 coords={ 

344 "cdf_type": ["original", "upper", "lower"], 

345 "station": [1001, 1002, 1003, 1004], 

346 "x": [0, 1, 2, 3, 4], 

347 }, 

348) 

349 

350DA_CDF_ENVELOPE2 = xr.DataArray( # same as DA_CDF_ENVELOPE1, but with coords unordered 

351 data=[ 

352 [0.2, 0.4, 0.5, 1, 0.8], 

353 [0.2, 0.1, 0.7, 0.9, 0.4], 

354 [0, 0.6, nan, 0.5, 0.7], 

355 [nan, nan, nan, nan, nan], 

356 ], 

357 dims=["station", "x"], 

358 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 4, 3]}, 

359) 

360 

361DA_PROPNAN = xr.DataArray( 

362 data=[ 

363 [0, 0, nan, 1.0], 

364 [0, 1.0, 1.0, nan], 

365 [0, 0, 1.0, 1.0], 

366 ], 

367 dims=["x", "y"], 

368 coords={"x": [1001, 1002, 1003], "y": [0, 1, 2, 4]}, 

369) 

370 

371EXP_PROPNAN_X = xr.DataArray( 

372 data=[ 

373 [0, 0, nan, nan], 

374 [0, 1.0, nan, nan], 

375 [0, 0, nan, nan], 

376 ], 

377 dims=["x", "y"], 

378 coords={"x": [1001, 1002, 1003], "y": [0, 1, 2, 4]}, 

379) 

380 

381EXP_PROPNAN_Y = xr.DataArray( 

382 data=[ 

383 [nan, nan, nan, nan], 

384 [nan, nan, nan, nan], 

385 [0, 0, 1.0, 1.0], 

386 ], 

387 dims=["x", "y"], 

388 coords={"x": [1001, 1002, 1003], "y": [0, 1, 2, 4]}, 

389) 

390 

391DA_DECREASING_CDFS1 = xr.DataArray( 

392 data=[ 

393 [0.2, 0.4, 0.5, 0.8, 1], 

394 [0.2, 0.1, 0.7, 0.4, 0.9], 

395 [0, 0.6, 0.59, 0.7, 0.69], 

396 [nan, nan, nan, nan, nan], 

397 ], 

398 dims=["station", "x"], 

399 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4]}, 

400) 

401 

402EXP_DECREASING_CDFS1A = xr.DataArray( 

403 data=[False, True, True, False], 

404 dims=["station"], 

405 coords={"station": [1001, 1002, 1003, 1004]}, 

406) 

407 

408EXP_DECREASING_CDFS1B = xr.DataArray( 

409 data=[False, True, False, False], 

410 dims=["station"], 

411 coords={"station": [1001, 1002, 1003, 1004]}, 

412) 

413 

414DA_NAN_DECREASING_CDFS = xr.DataArray( 

415 data=[ 

416 [nan, nan, nan, nan, nan], 

417 [0.2, 0.4, 0.5, 0.8, 1], 

418 [0, 0.6, 0.59, 0.7, 0.69], 

419 [0, 0.6, 0.59, 0.7, 0.68], 

420 ], 

421 dims=["station", "x"], 

422 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4]}, 

423) 

424 

425EXP_NAN_DECREASING_CDFS = xr.DataArray( 

426 data=[ 

427 [nan, nan, nan, nan, nan], 

428 [0.2, 0.4, 0.5, 0.8, 1], 

429 [0, 0.6, 0.59, 0.7, 0.69], 

430 [nan, nan, nan, nan, nan], 

431 ], 

432 dims=["station", "x"], 

433 coords={"station": [1001, 1002, 1003, 1004], "x": [0, 1, 2, 3, 4]}, 

434) 

435 

436DA_NAN_DECREASING_CDFS2 = xr.DataArray( 

437 data=[[0.2, 0.4, 0.5, 0.8, 1]], 

438 dims=["station", "x"], 

439 coords={"station": [1001], "x": [0, 1, 20, 3, 4]}, 

440) 

441 

442DA_OBSERVED_CDF = xr.DataArray( 

443 data=[[0, 0.15, 10], [0.24, 0, nan]], 

444 dims=["station", "date"], 

445 coords={"station": [1001, 1002], "date": [1, 2, 3]}, 

446) 

447 

448EXP_OBSERVED_CDF1 = xr.DataArray( # no rounding 

449 data=[ 

450 [[1, 1, 1, 1], [0, 1, 1, 1], [0, 0, 0, 1]], 

451 [[0, 0, 1, 1], [1, 1, 1, 1], [nan, nan, nan, nan]], 

452 ], 

453 dims=["station", "date", "x"], 

454 coords={"x": [0, 0.15, 0.24, 10], "station": [1001, 1002], "date": [1, 2, 3]}, 

455) 

456 

457EXP_OBSERVED_CDF2 = xr.DataArray( # round to nearest 0.2 

458 data=[ 

459 [[1, 1, 1], [0, 1, 1], [0, 0, 1]], 

460 [[0, 1, 1], [1, 1, 1], [nan, nan, nan]], 

461 ], 

462 dims=["station", "date", "x"], 

463 coords={"x": [0, 0.2, 10], "station": [1001, 1002], "date": [1, 2, 3]}, 

464) 

465 

466EXP_OBSERVED_CDF3 = xr.DataArray( # include [5] in thresholds 

467 data=[ 

468 [[1, 1, 1, 1], [0, 1, 1, 1], [0, 0, 0, 1]], 

469 [[0, 1, 1, 1], [1, 1, 1, 1], [nan, nan, nan, nan]], 

470 ], 

471 dims=["station", "date", "x"], 

472 coords={"x": [0, 0.2, 5, 10], "station": [1001, 1002], "date": [1, 2, 3]}, 

473) 

474 

475EXP_OBSERVED_CDF4 = xr.DataArray( # include [0, 5, 15] in thresholds, no obs 

476 data=[ 

477 [[1, 1, 1], [0, 1, 1], [0, 0, 1]], 

478 [[0, 1, 1], [1, 1, 1], [nan, nan, nan]], 

479 ], 

480 dims=["station", "date", "x"], 

481 coords={"x": [0, 5, 15], "station": [1001, 1002], "date": [1, 2, 3]}, 

482) 

483 

484DA_OBSERVED_CDF2 = xr.DataArray( 

485 data=[[nan, nan, nan], [nan, nan, nan]], 

486 dims=["station", "date"], 

487 coords={"station": [1001, 1002], "date": [1, 2, 3]}, 

488) 

489 

490DA_ADD_THRESHOLDS = xr.DataArray( 

491 data=[[[0.2, 0.4, 1, 1], [0, 0, 0.6, 1]]], 

492 dims=["date", "station", "x"], 

493 coords={"station": [1001, 1002], "date": ["2020-01-01"], "x": [0, 0.2, 0.5, 1]}, 

494) 

495 

496EXP_ADD_THRESHOLDS1 = xr.DataArray( 

497 data=[[[0.2, 0.4, 1, 1, 1], [0, 0, 0.6, 0.8, 1]]], 

498 dims=["date", "station", "x"], 

499 coords={ 

500 "station": [1001, 1002], 

501 "date": ["2020-01-01"], 

502 "x": [0, 0.2, 0.5, 0.75, 1], 

503 }, 

504) 

505 

506EXP_ADD_THRESHOLDS2 = xr.DataArray( 

507 data=[[[0.2, 0.4, 1, nan, 1], [0, 0, 0.6, nan, 1]]], 

508 dims=["date", "station", "x"], 

509 coords={ 

510 "station": [1001, 1002], 

511 "date": ["2020-01-01"], 

512 "x": [0, 0.2, 0.5, 0.75, 1], 

513 }, 

514) 

515 

516EXP_ECDF = xr.DataArray( 

517 data=[0.4, 0.6, 0.7, 0.8, 0.9, 1], 

518 dims=["x"], 

519 coords={"x": [0, 0.2, 0.3, 0.7, 1.5, 4.2]}, 

520).rename("cdf") 

521 

522 

523DA_CDF_EXPECTEDVALUE = xr.DataArray( 

524 data=[ 

525 [0, 0.5, 1, 1], 

526 [nan, 0.5, 1, 1], 

527 [0, 0, 0.5, 1], 

528 [0, 0, nan, 1], 

529 [nan, nan, nan, nan], 

530 ], 

531 dims=["station", "x"], 

532 coords={"station": [1001, 1002, 1003, 1004, 1005], "x": [-1, 0, 1, 2]}, 

533) 

534 

535EXP_EXPECTEDVALUE = xr.DataArray( 

536 data=[0.25, 0.25, 1.0, nan, nan], 

537 dims=["station"], 

538 coords={"station": [1001, 1002, 1003, 1004, 1005]}, 

539) 

540 

541DA_SUPPORT1 = xr.DataArray( 

542 data=[[0, 0, 0.2, 0.5, 1, 1], [0, 0, nan, 0.5, 1, 1]], 

543 dims=["station", "x"], 

544 coords={"station": [1001, 1002], "x": [-2, -1, 0, 1, 2, 3]}, 

545) 

546 

547DA_SUPPORT2 = xr.DataArray( 

548 data=[[0, 0, nan, 0.2, 0.5, 1, nan, 1], [nan, nan, nan, nan, nan, nan, nan, nan]], 

549 dims=["station", "x"], 

550 coords={"station": [1001, 1002], "x": [-2, -1, 0, 1, 2, 3, 4, 5]}, 

551) 

552 

553DA_SUPPORT3 = xr.DataArray( 

554 data=[[nan, nan, nan, nan, nan, nan, nan, nan]], 

555 dims=["station", "x"], 

556 coords={"station": [1001], "x": [-2, -1, 0, 1, 2, 3, 4, 5]}, 

557) 

558 

559 

560DA_CDF_CHECK_SUPP = xr.DataArray( 

561 data=[[0.2, 0.5, 1, 1]], 

562 dims=["station", "x"], 

563 coords={"station": [1001], "x": [-1, 0, 1, 2]}, 

564) 

565 

566DA_FUNCVALS = xr.DataArray( 

567 data=[ 

568 [0, 0.25, 0.5, 1], 

569 [0.5, 0.5, 0.5, 1], 

570 [0.5, 0.5, nan, 1], 

571 ], 

572 dims=["station", "x"], 

573 coords={"station": [1001, 1002, 1003], "x": [0, 0.5, 1, 2]}, 

574) 

575 

576EXP_VARCDF = xr.DataArray( 

577 data=[2 / 3, 1 / 4 + 2 - 4 / 3 - 1 / 2 + 1 / 6, nan], 

578 dims=["station"], 

579 coords={"station": [1001, 1002, 1003]}, 

580) 

581 

582DA_CDF_VARIANCE = xr.DataArray( 

583 data=[ 

584 [0, 0, 0.5, 1, 1], # std uniform dist 

585 [0, 0, 0.25, 0.5, 1], # uniform dist on [0,2] 

586 [0, 0, 0, 1, 1], # uniform dist on [0.5,1] 

587 [nan, 0, 0.5, 1, 1], # NaN outside support of CDF 

588 [0, 0, nan, 1, 1], # NaN inside support of CDF 

589 [nan, nan, nan, nan, nan], # all NaN 

590 ], 

591 dims=["station", "x"], 

592 coords={"station": [1001, 1002, 1003, 1004, 1005, 1006], "x": [-3, 0, 0.5, 1, 2]}, 

593) 

594 

595EXP_VARIANCE = xr.DataArray( 

596 data=[1 / 12, 4 / 12, 1 / (4 * 12), 1 / 12, nan, nan], 

597 dims=["station"], 

598 coords={"station": [1001, 1002, 1003, 1004, 1005, 1006]}, 

599) 

600 

601DA_CDF_QUANTILES = xr.DataArray( 

602 data=[ 

603 [0, 0.1, 0.3, 0.4, 0.7, 1.0, 1], 

604 [nan, nan, nan, nan, nan, nan, nan], 

605 [0.0, 0.6, 0.6, 0.6, 0.6, 0.6, 1.0], # quantile not unique 

606 [0.0, 0.3, 0.9, 1.0, 1.0, 1.0, 1.0], # nearest not unique 

607 [0.0, 0.5, nan, 0.65, 0.8, 0.9, 0.95], 

608 ], 

609 dims=["date", "x"], 

610 coords={ 

611 "date": ["01", "02", "03", "04", "05"], 

612 "x": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0], 

613 }, 

614) 

615 

616EXP_QUANTILES1 = xr.DataArray( 

617 data=[4.0, nan, 1.0, 1.0, 3.0], 

618 dims=["date"], 

619 coords={"date": ["01", "02", "03", "04", "05"]}, 

620 attrs={"quantile_level": 0.6}, 

621).rename("quantile") 

622 

623EXP_QUANTILES2 = xr.DataArray( 

624 data=[3.5, nan, 1.0, 1.5, 2.5], 

625 dims=["date"], 

626 coords={"date": ["01", "02", "03", "04", "05"]}, 

627 attrs={"quantile_level": 0.6}, 

628).rename("quantile") 

629 

630 

631DA_CDF_PIW = xr.DataArray( 

632 data=[ 

633 [ 

634 [0, 0.1, 0.2, 0.4, 0.7, 0.8, 1], # exact answer 

635 [nan, nan, nan, nan, nan, nan, nan], 

636 ], 

637 [ 

638 [0, 0.2, 0.2, 0.4, 0.7, 0.71, 0.9], # approximated 

639 [0, 0, 0, 0.8, 0.2, 1, 1], # decreasing cdf (clips) 

640 ], 

641 ], 

642 dims=["station", "date", "x"], 

643 coords={ 

644 "station": [101, 102], 

645 "date": ["1", "2"], 

646 "x": [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0], 

647 }, 

648) 

649 

650EXP_PIW1 = xr.DataArray( 

651 data=[[5.0 - 2.0, nan], [5.0 - 1.0, 0.0]], 

652 dims=["station", "date"], 

653 coords={"station": [101, 102], "date": ["1", "2"]}, 

654 attrs={"lower_quantile_level": 0.2, "upper_quantile_level": 0.8}, 

655).rename("prediction_interval_width") 

656 

657EXP_PIW2 = xr.DataArray( 

658 data=[3.0, 2.0], 

659 dims=["station"], 

660 coords={"station": [101, 102]}, 

661 attrs={"lower_quantile_level": 0.2, "upper_quantile_level": 0.8}, 

662).rename("prediction_interval_width") 

663 

664EXP_PIW3 = xr.DataArray( 

665 data=(3.0 + 4.0 + 0.0) / 3, 

666 attrs={"lower_quantile_level": 0.2, "upper_quantile_level": 0.8}, 

667).rename("prediction_interval_width") 

668 

669EXP_PIW4 = xr.DataArray( 

670 data=[[5.0 - 2.0, nan], [5.5 - 1.0, 0.0]], 

671 dims=["station", "date"], 

672 coords={"station": [101, 102], "date": ["1", "2"]}, 

673 attrs={"lower_quantile_level": 0.2, "upper_quantile_level": 0.8}, 

674).rename("prediction_interval_width") 

675 

676DA_CDF_BROACAST1 = xr.DataArray( 

677 data=[[0.0, 0.5, 1.0, 1.0], [nan, nan, nan, nan], [0.0, nan, 0.0, 1.0]], 

678 dims=["station", "x"], 

679 coords={"station": [101, 102, 103], "x": [0.0, 1.0, 2.0, 3.0]}, 

680) 

681 

682DA_CDF_BROACAST2 = xr.DataArray( 

683 data=[ 

684 [[0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0]], 

685 [[0.0, 0.5, 1.0, 1.0], [0.0, 0.2, 1.0, 1.0]], 

686 [[0.0, 0.0, 0.0, 1.0], [0.5, 0.5, 1.0, 1.0]], 

687 ], 

688 dims=["station", "date", "x"], 

689 coords={"station": [100, 101, 102], "date": ["1", "2"], "x": [0.0, 1.0, 2.0, 3.0]}, 

690) 

691 

692DA_CDF_BROACAST3 = xr.DataArray( 

693 data=[ 

694 [[0.0, 0.5, 1.0, 1.0], [0.0, 0.2, nan, 0.4]], 

695 ], 

696 dims=["station", "date", "x"], 

697 coords={"station": [101], "date": ["1", "2"], "x": [0.0, 1.0, 1.5, 2.0]}, 

698) 

699 

700EXP_BROADCAST_T1 = xr.DataArray( 

701 data=[ 

702 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

703 [[0.0, 0.5, 0.75, 1.0, 1.0], [0.0, 0.5, 0.75, 1.0, 1.0]], 

704 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

705 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

706 ], 

707 dims=["station", "date", "x"], 

708 coords={ 

709 "station": [100, 101, 102, 103], 

710 "date": ["1", "2"], 

711 "x": [0.0, 1.0, 1.5, 2.0, 3.0], 

712 }, 

713) 

714 

715EXP_BROADCAST_T2 = xr.DataArray( 

716 data=[ 

717 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

718 [[0.0, 0.5, 0.75, 1.0, 1.0], [0.0, 0.2, 0.6, 1.0, 1.0]], 

719 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

720 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

721 ], 

722 dims=["station", "date", "x"], 

723 coords={ 

724 "station": [100, 101, 102, 103], 

725 "date": ["1", "2"], 

726 "x": [0.0, 1.0, 1.5, 2.0, 3.0], 

727 }, 

728) 

729 

730EXP_BROADCAST_T3 = xr.DataArray( 

731 data=[ 

732 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

733 [[0.0, 0.5, 1.0, 1.0, 1.0], [0.0, 0.2, 0.3, 0.4, 0.6]], 

734 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

735 [[nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan]], 

736 ], 

737 dims=["station", "date", "x"], 

738 coords={ 

739 "station": [100, 101, 102, 103], 

740 "date": ["1", "2"], 

741 "x": [0.0, 1.0, 1.5, 2.0, 3.0], 

742 }, 

743) 

744 

745 

746DA_SAMPLE = xr.DataArray( 

747 data=[ 

748 [0.0, 0.0, 2.0, 5.0, 7.0], 

749 [0.0, 1.0, 1.0, nan, 5.0], 

750 [nan, nan, nan, nan, nan], 

751 ], 

752 dims=["station", "member"], 

753 coords={"station": [100, 101, 102], "member": ["1", "2", "3", "4", "5"]}, 

754) 

755 

756EXP_ECDF1 = xr.DataArray( # preserve station, thresholds=None 

757 data=[ 

758 [2 / 5, 2 / 5, 3 / 5, 4 / 5, 5 / 5], 

759 [1 / 4, 3 / 4, 3 / 4, 4 / 4, 4 / 4], 

760 [nan, nan, nan, nan, nan], 

761 ], 

762 dims=["station", "threshold"], 

763 coords={"station": [100, 101, 102], "threshold": [0.0, 1.0, 2.0, 5.0, 7.0]}, 

764).rename("cdf") 

765 

766EXP_ECDF2 = xr.DataArray( # dims=None, thresholds=None 

767 data=[3 / 9, 5 / 9, 6 / 9, 8 / 9, 9 / 9], 

768 dims=["threshold"], 

769 coords={"threshold": [0.0, 1.0, 2.0, 5.0, 7.0]}, 

770).rename("cdf") 

771 

772EXP_ECDF3 = xr.DataArray( # preserve station, thresholds=[2, 5, 10] 

773 data=[ 

774 [3 / 5, 4 / 5, 5 / 5], 

775 [3 / 4, 4 / 4, 4 / 4], 

776 [nan, nan, nan], 

777 ], 

778 dims=["station", "threshold"], 

779 coords={"station": [100, 101, 102], "threshold": [2.0, 5.0, 10.0]}, 

780).rename("cdf") 

781 

782DA_NAN_SAMPLE = xr.DataArray( 

783 data=[ 

784 [nan, nan, nan, nan, nan], 

785 [nan, nan, nan, nan, nan], 

786 [nan, nan, nan, nan, nan], 

787 ], 

788 dims=["station", "member"], 

789 coords={"station": [100, 101, 102], "member": ["1", "2", "3", "4", "5"]}, 

790) 

791 

792EXP_ECDF4 = xr.DataArray( # preserve station 

793 data=[[nan], [nan], [nan]], 

794 dims=["station", "threshold"], 

795 coords={"station": [100, 101, 102], "threshold": [0.0]}, 

796).rename("cdf")