Skip to content

Commit

Permalink
Updated TS tests for median, mean, stddev, and accuracy
Browse files Browse the repository at this point in the history
  • Loading branch information
Pål Grønås Drange committed Oct 24, 2016
1 parent d279073 commit 41133c2
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 2 deletions.
14 changes: 12 additions & 2 deletions lib/ts.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ def __init__(self, data = None, accuracy=None):
def __len__(self):
return len(self.data)

def __getitem__(self, idx):
return self.data[idx]


def append(self , d):
if self.accuracy:
d = round(d, self.accuracy)
Expand All @@ -35,7 +39,10 @@ def __str__(self):
def mean(self):
if len(self) == 0:
raise ValueError('Arithmetic mean of empty time series.')
return sum(self.data) / float(len(self))
m = sum(self.data) / float(len(self))
if self.accuracy:
return round(m, self.accuracy)
return m

def median(self):
if len(self) == 0:
Expand All @@ -49,4 +56,7 @@ def stddev(self):
raise ValueError('Standard deviation of too few values')
m = self.mean()
ss = sum((x-m)**2 for x in self.data)
return (ss/float(ld))**0.5
std = (ss/float(ld))**0.5
if self.accuracy:
return round(std, self.accuracy)
return std
28 changes: 28 additions & 0 deletions tests/test_ts.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,31 @@ def test_ts(self):
ts.append( 5.0 )
self.assertEqual( len(ts) , 3 )
self.assertEqual( ts.mean() , 2.0 )

def setUp(self):
self._ts = TS( [2.71828,3.141592,4.12310] )
self._tsa = TS( [2.71828,3.141592,4.12310], accuracy=2 )
self._tsb = TS( [6.1, 5.2, 4.3, 1.2, 2.3, 4.5, 5.6, 1000.123] )
self._tsc = TS( [6.1, 5.2, 4.3, 1.2, 2.3, 4.5, 5.6, 10.0,12.3] )

def test_ts_init(self):
self.assertEqual(3, len(self._ts))
self.assertEqual(3, len(self._tsa))
self.assertEqual(8, len(self._tsb))
self.assertEqual(9, len(self._tsc))
self.assertEqual(2.72, self._tsa[0])

def test_math_with_accuracy(self):
self.assertEqual(3.141592, self._ts.median())
self.assertEqual(3.14, self._tsa.median())

self.assertAlmostEqual(3.3276573, self._ts.mean())
self.assertEqual(3.33, self._tsa.mean())

self.assertAlmostEqual(0.5884131, self._ts.stddev())
self.assertEqual(0.59, self._tsa.stddev())

def test_median(self):
self.assertEqual(3.141592, self._ts.median())
self.assertEqual(5.2, self._tsb.median())
self.assertEqual(5.2, self._tsc.median())

0 comments on commit 41133c2

Please sign in to comment.