##// END OF EJS Templates
Switched to cpp_utils package...
Switched to cpp_utils package Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r83:698d7cfa01b0
r94:29637e951955
Show More
TestVariables.py
154 lines | 5.3 KiB | text/x-python | PythonLexer
import sys
import os
if not hasattr(sys, 'argv') or len(sys.argv)==0:
sys.argv = ['']
current_script_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(current_script_path)
import sciqlopqt
import pysciqlopcore
import numpy as np
import pandas as pds
import datetime
import time
import unittest
import ddt
def listify(obj):
if hasattr(obj, "__getitem__"):
return obj
return [obj]
@ddt.ddt
class TimeSeriesCtors(unittest.TestCase):
@ddt.data(
(pysciqlopcore.ScalarTimeSerie,10),
(pysciqlopcore.VectorTimeSerie,10),
(pysciqlopcore.SpectrogramTimeSerie,[10,10]),
(pysciqlopcore.MultiComponentTimeSerie,[10,10]),
(pysciqlopcore.ScalarTimeSerie,0),
(pysciqlopcore.VectorTimeSerie,0),
(pysciqlopcore.SpectrogramTimeSerie,[0,10]),
(pysciqlopcore.MultiComponentTimeSerie,[0,10])
)
def test_construct(self, case):
ts = case[0](case[1])
self.assertEqual(ts.shape,listify(case[1]))
class TimeSeriesData(unittest.TestCase):
def test_set_ScalarTimeSerie_values(self):
ts = pysciqlopcore.ScalarTimeSerie(10)
ts.t[0]=111.
self.assertEqual(ts.t[0],111.)
ts[0]=123.
self.assertEqual(ts[0],123.)
def test_set_VectorTimeSerie_values(self):
ts = pysciqlopcore.VectorTimeSerie(10)
ts.t[0]=111.
self.assertEqual(ts.t[0],111.)
ts[0].x=111.
ts[0].y=222.
ts[0].z=333.
self.assertEqual(ts[0].x,111.)
self.assertEqual(ts[0].y,222.)
self.assertEqual(ts[0].z,333.)
def test_set_SpectrogramTimeSerie_values(self):
ts = pysciqlopcore.SpectrogramTimeSerie((10,100))
ts.t[0]=111.
self.assertEqual(ts.t[0],111.)
ts[0][11]=123.
self.assertEqual(ts[0][11],123.)
def test_build_ScalarTimeSerie_from_np_arrays(self):
ts = pysciqlopcore.ScalarTimeSerie(np.arange(10), np.arange(10)*10)
for i in range(len(ts)):
self.assertEqual(ts[i],i*10.)
def test_build_VectorTimeSerie_from_np_arrays(self):
v=np.ones((10,3))
for i in range(3):
v.transpose()[:][i] = np.arange(10)*10**i
ts = pysciqlopcore.VectorTimeSerie(np.arange(10), v)
for i in range(len(ts)):
self.assertEqual(ts[i].x,i)
self.assertEqual(ts[i].y,i*10.)
self.assertEqual(ts[i].z,i*100.)
def test_build_MultiComponentTimeSerie_from_np_arrays(self):
v=np.ones((10,5))
for i in range(5):
v.transpose()[:][i] = np.arange(10)*10**i
ts = pysciqlopcore.MultiComponentTimeSerie(np.arange(10), v)
for i in range(len(ts)):
self.assertEqual(ts[i][0],i)
self.assertEqual(ts[i][1],i*10.)
self.assertEqual(ts[i][2],i*100.)
def test_build_MultiComponentTimeSerie_from_np_arrays_of_nan(self):
v=np.empty((2,5))
v.fill(np.nan)
ts = pysciqlopcore.MultiComponentTimeSerie(np.arange(2), v)
for i in range(len(ts)):
self.assertTrue(np.isnan(ts[i][0]))
self.assertTrue(np.isnan(ts[i][1]))
self.assertTrue(np.isnan(ts[i][2]))
self.assertTrue(np.isnan(ts[i][3]))
def test_build_VectorTimeSerie_from_np_arrays_row(self):
v=np.ones((10,3))
for i in range(3):
v.transpose()[:][i] = np.arange(10)*10**i
ts = pysciqlopcore.VectorTimeSerie(np.arange(10), v)
for i in range(len(ts)):
self.assertEqual(ts[i].x,i)
self.assertEqual(ts[i].y,i*10.)
self.assertEqual(ts[i].z,i*100.)
def test_build_ScalarTimeSerie_from_np_dataframe(self):
df = pds.DataFrame(data=np.zeros((10,1)),index=np.arange(10))
df[0] = np.arange(10)
ts = pysciqlopcore.ScalarTimeSerie(df.index.values, df.values)
for i in range(len(ts)):
self.assertEqual(ts[i],i)
def test_build_VectorTimeSerie_from_np_dataframe(self):
df = pds.DataFrame(data=np.zeros((10,3)),index=np.arange(10))
for i in range(3):
df[i] = np.arange(10)*10**i
ts = pysciqlopcore.VectorTimeSerie(df.index.values, df.values)
for i in range(len(ts)):
self.assertEqual(ts[i].x,i)
self.assertEqual(ts[i].y,i*10.)
self.assertEqual(ts[i].z,i*100.)
def test_build_SpectrogramTimeSerie_from_np_arrays(self):
v=np.ones((10,30))
for i in range(30):
v.transpose()[:][i] = np.arange(10)*10**(i/10.)
ts = pysciqlopcore.SpectrogramTimeSerie(np.arange(10),np.arange(30), v)
for i in range(len(ts)):
for j in range(30):
self.assertEqual(ts[i][j], i*10**(j/10.))
for i in range(30):
self.assertEqual(ts.axis(1)[i], i)
class VariableData(unittest.TestCase):
def test_default_state(self):
v=pysciqlopcore.Variable2("hello")
self.assertEqual(str(v.name), str("hello"))
self.assertEqual(type(v.data), type(None))
self.assertEqual(len(v), 0)
def test_set_name(self):
v=pysciqlopcore.Variable2("hello")
self.assertEqual(str(v.name), str("hello"))
v.name="newName"
self.assertEqual(str(v.name), str("newName"))
if __name__ == '__main__':
unittest.main(exit=False)