[Scipy-svn] r3034 - trunk/Lib/sandbox/timeseries/lib/tests
scipy-svn at scipy.org
scipy-svn at scipy.org
Wed May 23 10:11:52 EDT 2007
Author: mattknox_ca
Date: 2007-05-23 09:11:48 -0500 (Wed, 23 May 2007)
New Revision: 3034
Modified:
trunk/Lib/sandbox/timeseries/lib/tests/test_moving_funcs.py
Log:
added tests for new moving functions
Modified: trunk/Lib/sandbox/timeseries/lib/tests/test_moving_funcs.py
===================================================================
--- trunk/Lib/sandbox/timeseries/lib/tests/test_moving_funcs.py 2007-05-22 20:19:52 UTC (rev 3033)
+++ trunk/Lib/sandbox/timeseries/lib/tests/test_moving_funcs.py 2007-05-23 14:11:48 UTC (rev 3034)
@@ -18,12 +18,15 @@
import maskedarray.testutils
from maskedarray.testutils import *
+import maskedarray as MA
import maskedarray.core as coremodule
from maskedarray.core import MaskedArray, masked
+from maskedarray import mstats
+import timeseries as TS
from timeseries import time_series, thisday
-from timeseries.lib.moving_funcs import cmov_average
+from timeseries.lib import moving_funcs as MF
class test_cmov_average(NumpyTestCase):
@@ -37,7 +40,7 @@
data = self.data
for width in [3,5,7]:
k = (width-1)/2
- ravg = cmov_average(data,width)
+ ravg = MF.cmov_average(data,width)
assert(isinstance(ravg, MaskedArray))
assert_equal(ravg, data)
assert_equal(ravg._mask, [1]*k+[0]*(len(data)-2*k)+[1]*k)
@@ -46,7 +49,7 @@
data = self.maskeddata
for width in [3,5,7]:
k = (width-1)/2
- ravg = cmov_average(data,width)
+ ravg = MF.cmov_average(data,width)
assert(isinstance(ravg, MaskedArray))
assert_equal(ravg, data)
m = N.zeros(len(data), N.bool_)
@@ -57,7 +60,7 @@
data = time_series(self.maskeddata, start_date=thisday('D'))
for width in [3,5,7]:
k = (width-1)/2
- ravg = cmov_average(data,width)
+ ravg = MF.cmov_average(data,width)
assert(isinstance(ravg, MaskedArray))
assert_equal(ravg, data)
m = N.zeros(len(data), N.bool_)
@@ -71,7 +74,7 @@
data = time_series(maskeddata, start_date=thisday('D'))
for width in [3,5,7]:
k = (width-1)/2
- ravg = cmov_average(data,width)
+ ravg = MF.cmov_average(data,width)
assert(isinstance(ravg, MaskedArray))
assert_almost_equal(ravg[18].squeeze(), data[18-k:18+k+1].mean(0))
m = N.zeros(data.shape, N.bool_)
@@ -79,6 +82,65 @@
assert_equal(ravg._mask, m)
assert_equal(ravg._dates, data._dates)
+
+
+class test_mov_funcs(NumpyTestCase):
+
+ def __init__(self, *args, **kwds):
+ NumpyTestCase.__init__(self, *args, **kwds)
+ self.data = numeric.arange(25)
+ self.maskeddata = MaskedArray(self.data)
+ self.maskeddata[10] = masked
+ self.func_pairs = [
+ (MF.mov_average, MA.mean),
+ (MF.mov_median, mstats.mmedian),
+ ((lambda x, span : MF.mov_stddev(x, span, bias=True)), MA.std)]
+ #
+ def test_onregulararray(self):
+ data = self.data
+ for Mfunc, Nfunc in self.func_pairs:
+ for k in [3,4,5]:
+ result = Mfunc(data, k)
+ assert(isinstance(result, MaskedArray))
+ for x in range(len(data)-k+1):
+ assert_almost_equal(result[x+k-1], Nfunc(data[x:x+k]))
+ assert_equal(result._mask, [1]*(k-1)+[0]*(len(data)-k+1))
+
+ #
+ def test_onmaskedarray(self):
+ data = self.maskeddata
+
+ for Mfunc, Nfunc in self.func_pairs:
+ for k in [3,4,5]:
+ result = Mfunc(data, k)
+ assert(isinstance(result, MaskedArray))
+ for x in range(len(data)-k+1):
+ if result[x+k-1] is not MA.masked:
+ assert_almost_equal(result[x+k-1], Nfunc(data[x:x+k]))
+ result_mask = N.array([1]*(k-1)+[0]*(len(data)-k+1))
+ result_mask[10:10+k] = 1
+ assert_equal(result._mask, result_mask)
+
+ #
+ def test_ontimeseries(self):
+
+ data = time_series(self.maskeddata, start_date=thisday('D'))
+
+ for Mfunc, Nfunc in self.func_pairs:
+ for k in [3,4,5]:
+ result = Mfunc(data, k)
+ assert(isinstance(result, MaskedArray))
+ for x in range(len(data)-k+1):
+ if result[x+k-1] is not TS.tsmasked:
+ assert_almost_equal(
+ N.asarray(result[x+k-1]),
+ N.asarray(Nfunc(data[x:x+k])))
+ result_mask = N.array([1]*(k-1)+[0]*(len(data)-k+1))
+ result_mask[10:10+k] = 1
+ assert_equal(result._mask, result_mask)
+ assert_equal(result._dates, data._dates)
+
+
#------------------------------------------------------------------------------
if __name__ == "__main__":
NumpyTest().run()
\ No newline at end of file
More information about the Scipy-svn
mailing list