-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_algorithm.py
70 lines (44 loc) · 2.24 KB
/
test_algorithm.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import numpy as np
import pytest
import xarray
from seas_flash_drougth_count_CMS import *
def test_find_fd1D_loop():
# Make a test array of "rainfall"
a = np.array([10,99,43,35,27,10,5,5,5,40,70,5,35])
assert((find_fd1D_loop(a, 7, [10, 30, 40], verbose=False) ==
np.array([0,0,7,0,0,0,0,0,0,0,2,0,0])).all())
a = np.array([10,99,43,35,27,10,5,5,5,40,70,5,35])
assert((find_fd1D_loop(a, 4, [10, 30, 40], verbose=False) ==
np.array([0,0,7,0,0,0,0,0,0,0,2,0,0])).all())
a = np.array([10,99,43,35,27,10,5,5,5,40,70,5,35])
assert((find_fd1D_loop(a, 3, [10, 30, 40], verbose=False) ==
np.array([0,0,0,0,0,0,0,0,0,0,2,0,0])).all())
def test_find_fd1D_mask():
# Make a test array of "rainfall"
a = np.array([10,99,43,35,27,10,5,5,5,40,70,5,35])
assert((find_fd1D_mask(a, 7, [10, 30, 40],verbose=False) ==
np.array([0,0,7,0,0,0,0,0,0,0,2,0,0])).all())
a = np.array([10,99,43,35,27,10,5,5,5,40,70,5,35])
assert((find_fd1D_loop(a, 4, [10, 30, 40], verbose=False) ==
np.array([0,0,7,0,0,0,0,0,0,0,2,0,0])).all())
a = np.array([10,99,43,35,27,10,5,5,5,40,70,5,35])
assert((find_fd1D_loop(a, 3, [10, 30, 40], verbose=False) ==
np.array([0,0,0,0,0,0,0,0,0,0,2,0,0])).all())
def test_dubbo():
"""
Test one time series of CanESM data from near Wagga
"""
filename = 'dubbo.nc'
ds = xr.open_dataset(filename).isel(lat=0,lon=0)
percentiles = ds.mrsos.quantile([0.1, 0.3, 0.4])
res = find_fd1D_mask(ds.mrsos.values, 7, percentiles.values)
res = ds.mrsos.copy(data=res)
res.to_netcdf('dubbo_res.nc')
assert(np.all( [np.min(res),np.max(res),np.sum(res),np.count_nonzero(res) ]
== [0.0, 33.0, 100.0, 5,]) )
ds = xr.open_dataset(filename).isel(lat=0,lon=0)
percentiles = ds.mrsos.quantile([0.1, 0.3, 0.4])
# res = find_fd1D_loop(ds.mrsos.sel(time=slice('2002-01-01','2002-01-30')).values, 7, percentiles.values, verbose=True)
res = find_fd1D_loop(ds.mrsos.values, 7, percentiles.values)
assert(np.all( [np.min(res),np.max(res),np.sum(res),np.count_nonzero(res) ]
== [0.0, 33.0, 100.0, 5,]) )