[Scipy-svn] r2558 - trunk/Lib/sandbox/timeseries/tests

scipy-svn at scipy.org scipy-svn at scipy.org
Mon Jan 15 05:05:15 EST 2007


Author: pierregm
Date: 2007-01-15 04:05:13 -0600 (Mon, 15 Jan 2007)
New Revision: 2558

Added:
   trunk/Lib/sandbox/timeseries/tests/test_multitimeseries.py
Log:


Added: trunk/Lib/sandbox/timeseries/tests/test_multitimeseries.py
===================================================================
--- trunk/Lib/sandbox/timeseries/tests/test_multitimeseries.py	2007-01-15 09:57:19 UTC (rev 2557)
+++ trunk/Lib/sandbox/timeseries/tests/test_multitimeseries.py	2007-01-15 10:05:13 UTC (rev 2558)
@@ -0,0 +1,190 @@
+# pylint: disable-msg=W0611, W0612, W0511,R0201
+"""Tests suite for mrecarray.
+
+:author: Pierre Gerard-Marchant
+:contact: pierregm_at_uga_dot_edu
+:version: $Id$
+"""
+__author__ = "Pierre GF Gerard-Marchant ($Author$)"
+__version__ = '1.0'
+__revision__ = "$Revision$"
+__date__     = '$Date$'
+
+import types
+
+import numpy as N
+import numpy.core.fromnumeric  as fromnumeric
+from numpy.testing import NumpyTest, NumpyTestCase
+from numpy.testing.utils import build_err_msg
+
+import maskedarray.testutils
+#reload(maskedarray.testutils)
+from maskedarray.testutils import assert_equal, assert_array_equal
+
+import maskedarray.core as MA
+import maskedarray.mrecords as MR
+
+from maskedarray.core import getmaskarray, nomask
+
+##reload(MA)
+#import maskedarray.mrecords
+##reload(maskedarray.mrecords)
+#from maskedarray.mrecords import mrecarray, fromarrays, fromtextfile, fromrecords
+import multitimeseries
+reload(multitimeseries)
+from multitimeseries import MultiTimeSeries, TimeSeries,\
+    fromarrays, fromtextfile, fromrecords, \
+    date_array, time_series
+
+#from timeseries.tseries import time_series, TimeSeries
+
+#..............................................................................
+class test_mrecords(NumpyTestCase):
+    "Base test class for MaskedArrays."
+    def __init__(self, *args, **kwds):
+        NumpyTestCase.__init__(self, *args, **kwds)
+        self.setup()
+        
+    def setup(self):       
+        "Generic setup" 
+        d = N.arange(5)
+        m = MA.make_mask([1,0,0,1,1])
+        base_d = N.r_[d,d[::-1]].reshape(2,-1).T
+        base_m = N.r_[[m, m[::-1]]].T
+        base = MA.array(base_d, mask=base_m)    
+        mrec = MR.fromarrays(base.T,)
+        dlist = ['2007-%02i' % (i+1) for i in d]
+        dates = date_array(dlist)
+        ts = time_series(mrec,dates)
+        mts = MultiTimeSeries(mrec,dates)
+        self.data = [d, m, mrec, dlist, dates, ts, mts]
+        
+    def test_get(self):
+        "Tests fields retrieval"
+        [d, m, mrec, dlist, dates, ts, mts] = self.data
+        assert(isinstance(mts['f0'], TimeSeries))
+        assert_equal(mts['f0']._dates, dates)
+        assert_equal(mts['f0']._data, d)
+        assert_equal(mts['f0']._mask, m)
+        #
+        assert(isinstance(mts[0], MultiTimeSeries))
+        assert_equal(mts[0]._data, mrec[0])
+        assert_equal(mts[0]._dates, dates[0])       
+        #
+        assert(isinstance(mts['2007-01'], MultiTimeSeries))
+        assert_equal(mts['2007-01']._data, mrec[0])
+        assert_equal(mts['2007-01']._dates, dates[0])       
+        #
+        assert_equal(mts.f0, time_series(d, dates=dates, mask=m))
+        assert_equal(mts.f1, time_series(d[::-1], dates=dates, mask=m[::-1]))
+        assert((mts._fieldmask == N.core.records.fromarrays([m, m[::-1]])).all())
+        assert_equal(mts._mask, N.r_[[m,m[::-1]]].all(0))
+        assert_equal(mts.f0[1], mts[1].f0)
+        #
+        assert(isinstance(mts[:2], MultiTimeSeries))
+        assert_equal(mts[:2]._data.f0, mrec[:2].f0)
+        assert_equal(mts[:2]._data.f1, mrec[:2].f1)
+        assert_equal(mts[:2]._dates, dates[:2])
+        
+    def test_set(self):
+        "Tests setting fields/attributes."
+        [d, m, mrec, dlist, dates, ts, mts] = self.data
+        mts.f0._data[:] = 5
+        assert_equal(mts['f0']._data, [5,5,5,5,5])
+        mts.f0 = 1
+        assert_equal(mts['f0']._data, [1]*5)
+        assert_equal(getmaskarray(mts['f0']), [0]*5)
+        mts.f1 = MA.masked
+        assert_equal(mts.f1.mask, [1]*5)
+        assert_equal(getmaskarray(mts['f1']), [1]*5)
+        mts._mask = MA.masked
+        assert_equal(getmaskarray(mts['f1']), [1]*5)
+        assert_equal(mts['f0']._mask, mts['f1']._mask)
+        mts._mask = MA.nomask
+        assert_equal(getmaskarray(mts['f1']), [0]*5)
+        assert_equal(mts['f0']._mask, mts['f1']._mask)  
+        
+    def test_setslices(self):
+        "Tests setting slices."
+        [d, m, mrec, dlist, dates, ts, mts] = self.data
+        #
+        mts[:2] = 5
+        assert_equal(mts.f0._data, [5,5,2,3,4])
+        assert_equal(mts.f1._data, [5,5,2,1,0])
+        assert_equal(mts.f0._mask, [0,0,0,1,1])
+        assert_equal(mts.f1._mask, [0,0,0,0,1])
+        mts.harden_mask()
+        mts[-2:] = 5
+        assert_equal(mts.f0._data, [5,5,2,3,4])
+        assert_equal(mts.f1._data, [5,5,2,5,0])
+        assert_equal(mts.f0._mask, [0,0,0,1,1])
+        assert_equal(mts.f1._mask, [0,0,0,0,1])
+        
+    def test_hardmask(self):
+        "Test hardmask"
+        [d, m, mrec, dlist, dates, ts, mts] = self.data
+        mts.harden_mask()
+        assert(mts._hardmask)
+        mts._mask = nomask
+        assert_equal(mts._mask, N.r_[[m,m[::-1]]].all(0))
+        mts.soften_mask()
+        assert(not mts._hardmask)
+        mts._mask = nomask
+        assert(mts['f1']._mask is nomask)
+        assert_equal(mts['f0']._mask,mts['f1']._mask)  
+        
+    def test_addfield(self):
+        "Tests addfield"
+        [d, m, mrec, dlist, dates, ts, mts] = self.data
+        mts.addfield(masked_array(d+10, mask=m[::-1]))
+        assert_equal(mts.f2, d+10)
+        assert_equal(mts.f2._mask, m[::-1])            
+
+    def test_fromrecords(self):
+        "Test from recarray."
+        [d, m, mrec, dlist, dates, ts, mts] = self.data
+        nrec = N.core.records.fromarrays(N.r_[[d,d[::-1]]])
+        mrecfr = fromrecords(nrec.tolist(), dates=dates)
+        assert_equal(mrecfr.f0, mrec.f0)
+        assert_equal(mrecfr.dtype, mrec.dtype)
+        #....................
+        altrec = [tuple([d,]+list(r)) for (d,r) in zip(dlist,nrec)]
+        mrecfr = fromrecords(altrec, names='dates,f0,f1')
+        assert_equal(mrecfr.f0, mrec.f0)
+        assert_equal(mrecfr.dtype, mrec.dtype)
+        #....................
+        tmp = MultiTimeSeries(mts._series[::-1], dates=mts.dates)
+        mrecfr = fromrecords(tmp)
+        assert_equal(mrecfr.f0, mrec.f0[::-1])
+        
+    def test_fromtextfile(self):        
+        "Tests reading from a text file."
+        fcontent = """#
+'Dates', 'One (S)','Two (I)','Three (F)','Four (M)','Five (-)','Six (C)'
+'2007-01', 'strings',1,1.0,'mixed column',,1
+'2007-02', 'with embedded "double quotes"',2,2.0,1.0,,1
+'2007-03', 'strings',3,3.0E5,3,,1
+'2007-05','strings',4,-1e-10,,,1
+"""    
+        import os
+        from datetime import datetime
+        fname = 'tmp%s' % datetime.now().strftime("%y%m%d%H%M%S%s")
+        f = open(fname, 'w')
+        f.write(fcontent)
+        f.close()
+        mrectxt = fromtextfile(fname,delimitor=',',varnames='ABCDEFG',
+                               dates_column=0)        
+        os.unlink(fname)
+        #
+        dlist = ['2007-%02i' % i for i in (1,2,3,5)]
+        assert(isinstance(mrectxt, MultiTimeSeries))
+        assert_equal(mrectxt._dates, date_array(dlist,'M'))
+        assert_equal(mrectxt.dtype.names, ['B','C','D','E','F','G'])
+        assert_equal(mrectxt.G, [1,1,1,1])
+        assert_equal(mrectxt.F._mask, [1,1,1,1])
+        assert_equal(mrectxt.D, [1,2,3.e+5,-1e-10])  
+                
+###############################################################################
+#------------------------------------------------------------------------------
+if __name__ == "__main__":
+    NumpyTest().run()        
\ No newline at end of file


Property changes on: trunk/Lib/sandbox/timeseries/tests/test_multitimeseries.py
___________________________________________________________________
Name: svn:keywords
   + Date 
Author 
Revision
Id




More information about the Scipy-svn mailing list