##// 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
More work on new Variable python bindings...
r63 import sys
import os
New TimeSeries classes mostly usable from Python...
r65 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)
More work on new Variable python bindings...
r63
import sciqlopqt
import pysciqlopcore
import numpy as np
New TimeSeries classes mostly usable from Python...
r65 import pandas as pds
More work on new Variable python bindings...
r63 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),
Fixed crash while merging empty TS...
r77 (pysciqlopcore.SpectrogramTimeSerie,[10,10]),
(pysciqlopcore.MultiComponentTimeSerie,[10,10]),
(pysciqlopcore.ScalarTimeSerie,0),
(pysciqlopcore.VectorTimeSerie,0),
(pysciqlopcore.SpectrogramTimeSerie,[0,10]),
(pysciqlopcore.MultiComponentTimeSerie,[0,10])
More work on new Variable python bindings...
r63 )
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.)
Spectrogram wrapper allow to set values from python...
r66 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.)
More work on new Variable python bindings...
r63 def test_build_ScalarTimeSerie_from_np_arrays(self):
New TimeSeries classes mostly usable from Python...
r65 ts = pysciqlopcore.ScalarTimeSerie(np.arange(10), np.arange(10)*10)
for i in range(len(ts)):
self.assertEqual(ts[i],i*10.)
More work on new Variable python bindings...
r63
Added vector build from numpy arrays...
r64 def test_build_VectorTimeSerie_from_np_arrays(self):
Made TS Python API only compatible with pandas shape (line, column)...
r78 v=np.ones((10,3))
New TimeSeries classes mostly usable from Python...
r65 for i in range(3):
Made TS Python API only compatible with pandas shape (line, column)...
r78 v.transpose()[:][i] = np.arange(10)*10**i
New TimeSeries classes mostly usable from Python...
r65 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.)
MultiComponent TS almost done, still blows up when built from python with empty data...
r76
def test_build_MultiComponentTimeSerie_from_np_arrays(self):
Made TS Python API only compatible with pandas shape (line, column)...
r78 v=np.ones((10,5))
MultiComponent TS almost done, still blows up when built from python with empty data...
r76 for i in range(5):
Made TS Python API only compatible with pandas shape (line, column)...
r78 v.transpose()[:][i] = np.arange(10)*10**i
MultiComponent TS almost done, still blows up when built from python with empty data...
r76 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.)
Fixed crash while merging empty TS...
r77 def test_build_MultiComponentTimeSerie_from_np_arrays_of_nan(self):
Made TS Python API only compatible with pandas shape (line, column)...
r78 v=np.empty((2,5))
Fixed crash while merging empty TS...
r77 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]))
New TimeSeries classes mostly usable from Python...
r65 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.)
Made TS Python API only compatible with pandas shape (line, column)...
r78 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)
New TimeSeries classes mostly usable from Python...
r65 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):
Some work on SpectrogramTS Python wrapper...
r83 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)
New TimeSeries classes mostly usable from Python...
r65 for i in range(len(ts)):
Some work on SpectrogramTS Python wrapper...
r83 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)
Spectrogram wrapper allow to set values from python...
r66
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)
New TimeSeries classes mostly usable from Python...
r65
Spectrogram wrapper allow to set values from python...
r66 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"))
Added vector build from numpy arrays...
r64
More work on new Variable python bindings...
r63 if __name__ == '__main__':
New TimeSeries classes mostly usable from Python...
r65 unittest.main(exit=False)