[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