removed test_numpy_utils.py + pepified test_trdata + disabled plot in test_specdata1d.py

master
Per A Brodtkorb 9 years ago
parent 9e0b9c2572
commit 2c77550e6f

@ -118,8 +118,8 @@ def test_testgaussian():
Hs = 7 Hs = 7
Sj = sm.Jonswap(Hm0=Hs) Sj = sm.Jonswap(Hm0=Hs)
S0 = Sj.tospecdata() S0 = Sj.tospecdata()
#ns =100; dt = .2 # ns =100; dt = .2
#x1 = S0.sim(ns, dt=dt) # x1 = S0.sim(ns, dt=dt)
S = S0.copy() S = S0.copy()
me, _va, sk, ku = S.stats_nl(moments='mvsk') me, _va, sk, ku = S.stats_nl(moments='mvsk')
@ -128,7 +128,7 @@ def test_testgaussian():
ys = wo.mat2timeseries(S.sim(ns=2 ** 13)) ys = wo.mat2timeseries(S.sim(ns=2 ** 13))
g0, _gemp = ys.trdata() g0, _gemp = ys.trdata()
t0 = g0.dist2gauss() t0 = g0.dist2gauss()
t1 = S0.testgaussian(ns=2 ** 13, test0=t0, cases=50) t1 = S0.testgaussian(ns=2 ** 13, test0=t0, cases=50, plotflag=0)
assert(sum(t1 > t0) < 5) assert(sum(t1 > t0) < 5)

@ -1,253 +0,0 @@
from numpy.testing import (
TestCase, assert_, assert_array_equal, assert_raises,)
# run_module_suite,
# assert_allclose, assert_array_max_ulp, assert_warns,
# assert_equal, assert_array_almost_equal, assert_almost_equal,
# )
import unittest as local_unittest
import numpy as np
from wafo.numpy_utils import (rotation_matrix, rotate_2d, spaceline,
args_flat, sub2index, index2sub, piecewise)
class TestPiecewise(TestCase):
def test_condition_is_single_bool_list(self):
assert_raises(ValueError, piecewise, [0, 0], [True, False], [1])
def test_condition_is_list_of_single_bool_list(self):
x = piecewise([0, 0], [[True, False]], [1])
assert_array_equal(x, [1, 0])
def test_conditions_is_list_of_single_bool_array(self):
x = piecewise([0, 0], [np.array([True, False])], [1])
assert_array_equal(x, [1, 0])
def test_condition_is_single_int_array(self):
assert_raises(ValueError, piecewise, [0, 0], np.array([1, 0]), [1])
def test_condition_is_list_of_single_int_array(self):
x = piecewise([0, 0], [np.array([1, 0])], [1])
assert_array_equal(x, [1, 0])
def test_simple(self):
x = piecewise([0, 0], [[False, True]], [lambda x:-1])
assert_array_equal(x, [0, -1])
x = piecewise([1, 2], [[True, False], [False, True]], [3, 4])
assert_array_equal(x, [3, 4])
def test_default(self):
# No value specified for x[1], should be 0
x = piecewise([1, 2], [[True, False]], [2])
assert_array_equal(x, [2, 0])
# Should set x[1] to 3
x = piecewise([1, 2], [[True, False]], [2, 3])
assert_array_equal(x, [2, 3])
def test_0d(self):
x = np.array(3)
y = piecewise(x, [x > 3], [4, 0])
assert_(y.ndim == 0)
assert_(y == 0)
x = 5
y = piecewise(x, [[True], [False]], [1, 0])
assert_(y.ndim == 0)
assert_(y == 1)
def test_abs_function(self):
x = np.linspace(-2.5, 2.5, 6)
vals = piecewise((x,), [x < 0, x >= 0], [lambda x: -x, lambda x: x])
assert_array_equal(vals,
[2.5, 1.5, 0.5, 0.5, 1.5, 2.5])
def test_abs_function_with_scalar(self):
x = np.array(-2.5)
vals = piecewise((x,), [x < 0, x >= 0], [lambda x: -x, lambda x: x])
assert_(vals == 2.5)
def test_otherwise_condition(self):
x = np.linspace(-2.5, 2.5, 6)
vals = piecewise((x,), [x < 0, ], [lambda x: -x, lambda x: x])
assert_array_equal(vals, [2.5, 1.5, 0.5, 0.5, 1.5, 2.5])
def test_passing_further_args_to_fun(self):
def fun0(x, y, scale=1.):
return -x*y/scale
def fun1(x, y, scale=1.):
return x*y/scale
x = np.linspace(-2.5, 2.5, 6)
vals = piecewise((x,), [x < 0, ], [fun0, fun1], args=(2.,), scale=2.)
assert_array_equal(vals, [2.5, 1.5, 0.5, 0.5, 1.5, 2.5])
def test_step_function(self):
x = np.linspace(-2.5, 2.5, 6)
vals = piecewise(x, [x < 0, x >= 0], [-1, 1])
assert_array_equal(vals, [-1., -1., -1., 1., 1., 1.])
def test_step_function_with_scalar(self):
x = 1
vals = piecewise(x, [x < 0, x >= 0], [-1, 1])
assert_(vals == 1)
def test_function_with_two_args(self):
x = np.linspace(-2, 2, 5)
X, Y = np.meshgrid(x, x)
vals = piecewise(
(X, Y), [X * Y < 0, ], [lambda x, y: -x * y, lambda x, y: x * y])
assert_array_equal(vals, [[4., 2., -0., 2., 4.],
[2., 1., -0., 1., 2.],
[-0., -0., 0., 0., 0.],
[2., 1., 0., 1., 2.],
[4., 2., 0., 2., 4.]])
def test_fill_value_and_function_with_two_args(self):
x = np.linspace(-2, 2, 5)
X, Y = np.meshgrid(x, x)
vals = piecewise((X, Y), [X * Y < -0.5, X * Y > 0.5],
[lambda x, y: -x * y, lambda x, y: x * y],
fill_value=np.nan)
nan = np.nan
assert_array_equal(vals, [[4., 2., nan, 2., 4.],
[2., 1., nan, 1., 2.],
[nan, nan, nan, nan, nan],
[2., 1., nan, 1., 2.],
[4., 2., nan, 2., 4.]])
def test_fill_value2_and_function_with_two_args(self):
x = np.linspace(-2, 2, 5)
X, Y = np.meshgrid(x, x)
vals = piecewise((X, Y), [X * Y < -0.5, X * Y > 0.5],
[lambda x, y: -x * y, lambda x, y: x * y, np.nan])
nan = np.nan
assert_array_equal(vals, [[4., 2., nan, 2., 4.],
[2., 1., nan, 1., 2.],
[nan, nan, nan, nan, nan],
[2., 1., nan, 1., 2.],
[4., 2., nan, 2., 4.]])
class TestRotationMatrix(TestCase):
def test_h0_p0_r0(self):
vals = rotation_matrix(heading=0, pitch=0, roll=0).tolist()
truevals = [[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]]
self.assertListEqual(vals, truevals)
def test_h180_p0_r0(self):
vals = rotation_matrix(heading=180, pitch=0, roll=0).tolist()
truevals = [[-1.0, -1.2246467991473532e-16, 0.0],
[1.2246467991473532e-16, -1.0, 0.0],
[-0.0, 0.0, 1.0]]
self.assertListEqual(vals, truevals)
def test_h0_p180_r0(self):
vals = rotation_matrix(heading=0, pitch=180, roll=0).tolist()
truevals = [[-1.0, 0.0, 1.2246467991473532e-16],
[-0.0, 1.0, 0.0],
[-1.2246467991473532e-16, -0.0, -1.0]]
self.assertListEqual(vals, truevals)
def test_h0_p0_r180(self):
vals = rotation_matrix(heading=0, pitch=180, roll=0).tolist()
truevals = [[-1.0, 0.0, 1.2246467991473532e-16],
[-0.0, 1.0, 0.0],
[-1.2246467991473532e-16, -0.0, -1.0]]
self.assertListEqual(vals, truevals)
class TestRotate2d(TestCase):
def test_rotate_0deg(self):
vals = list(rotate_2d(x=1, y=0, angle_deg=0))
truevals = [1.0, 0.0]
self.assertListEqual(vals, truevals)
def test_rotate_90deg(self):
vals = list(rotate_2d(x=1, y=0, angle_deg=90))
truevals = [6.123233995736766e-17, 1.0]
self.assertListEqual(vals, truevals)
def test_rotate_180deg(self):
vals = list(rotate_2d(x=1, y=0, angle_deg=180))
truevals = [-1.0, 1.2246467991473532e-16]
self.assertListEqual(vals, truevals)
def test_rotate_360deg(self):
vals = list(rotate_2d(x=1, y=0, angle_deg=360))
truevals = [1.0, -2.4492935982947064e-16]
self.assertListEqual(vals, truevals)
class TestSpaceLine(TestCase):
def test_space_line(self):
vals = spaceline((2, 0, 0), (3, 0, 0), num=5).tolist()
truevals = [[2., 0., 0.],
[2.25, 0., 0.],
[2.5, 0., 0.],
[2.75, 0., 0.],
[3., 0., 0.]]
self.assertListEqual(vals, truevals)
class TestArgsFlat(TestCase):
def test_1_vector_and_2_scalar_args(self):
x = [1, 2, 3]
pos, c_shape = args_flat(x, 2, 3)
truepos = [[1, 2, 3],
[2, 2, 3],
[3, 2, 3]]
truec_shape = [3, ]
self.assertListEqual(pos.tolist(), truepos)
self.assertListEqual(list(c_shape), truec_shape)
def test_1_vector_args(self):
pos1, c_shape1 = args_flat([1, 2, 3])
truepos1 = [[1, 2, 3]]
truec_shape1 = None
self.assertListEqual(pos1.tolist(), truepos1)
self.assertIs(c_shape1, truec_shape1)
def test_3_scalar_args(self):
pos1, c_shape1 = args_flat(1, 2, 3)
truepos1 = [[1, 2, 3]]
truec_shape1 = []
self.assertListEqual(pos1.tolist(), truepos1)
self.assertListEqual(list(c_shape1), truec_shape1)
def test_3_scalar_args_version2(self):
pos1, c_shape1 = args_flat([1], 2, 3)
truepos1 = [[1, 2, 3]]
truec_shape1 = [1, ]
self.assertListEqual(pos1.tolist(), truepos1)
self.assertListEqual(list(c_shape1), truec_shape1)
class TestSub2index2Sub(TestCase):
def test_sub2index_and_index2sub(self):
shape = (3, 3, 4)
a = np.arange(np.prod(shape)).reshape(shape)
trueval = a[1, 2, 3]
order = 'C'
i = sub2index(shape, 1, 2, 3, order=order)
self.assertEquals(i, 23)
val = a.ravel(order)[i]
self.assertEquals(val, trueval)
sub = index2sub(shape, i, order=order)
for j, true_sub_j in enumerate([[1], [2], [3]]):
self.assertEquals(sub[j].tolist(), true_sub_j)
if __name__ == '__main__':
runner = local_unittest.TextTestRunner() # get_test_runner()
local_unittest.main(testRunner=runner)

@ -1,31 +1,34 @@
from wafo.transform import TrData from wafo.transform import TrData
import numpy as np import numpy as np
def test_trdata(): def test_trdata():
''' '''
Construct a linear transformation model Construct a linear transformation model
''' '''
sigma = 5
sigma = 5; mean = 1 mean = 1
u = np.linspace(-5,5) u = np.linspace(-5, 5)
x = sigma*u+mean; y = u x = sigma * u + mean
g = TrData(y,x) y = u
assert(g.mean==1.0) g = TrData(y, x)
assert(g.mean == 1.0)
print(g.sigma) print(g.sigma)
#assert(g.sigma==5.0) # assert(g.sigma==5.0)
g = TrData(y,x,mean=1,sigma=5) g = TrData(y, x, mean=1, sigma=5)
assert(g.mean== 1) assert(g.mean == 1)
assert( g.sigma== 5.) assert(g.sigma == 5.)
vals = g.dat2gauss(1,2,3) # vals = g.dat2gauss(1, 2, 3)
true_vals = [np.array([ 0.]), np.array([ 0.4]), np.array([ 0.6])] # true_vals = [np.array([0.]), np.array([0.4]), np.array([0.6])]
vals = g.dat2gauss([0,1,2,3])
true_vals = np.array([-0.2, 0. , 0.2, 0.4]) vals = g.dat2gauss([0, 1, 2, 3])
assert((np.abs(vals-true_vals)<1e-7).all()) true_vals = np.array([-0.2, 0., 0.2, 0.4])
#Check that the departure from a Gaussian model is zero assert((np.abs(vals - true_vals) < 1e-7).all())
# Check that the departure from a Gaussian model is zero
assert(g.dist2gauss() < 1e-16) assert(g.dist2gauss() < 1e-16)
if __name__ == '__main__':
if __name__=='__main__':
import nose import nose
nose.run() nose.run()

Loading…
Cancel
Save