def _assertFlattenedEquals(self, expected, actual): if expected is None: self.assertEquals(None, actual) elif isinstance(expected, (list, tuple)): self.assertEquals(len(expected), len(actual)) for exp, act in zip(expected, actual): self._assertFlattenedEquals(exp, act) elif isinstance(expected, dict): self.assertEquals(len(expected), len(actual)) for k, v in expected.iteritems(): self.assertTrue(k in actual) self._assertFlattenedEquals(v, actual[k]) elif isinstance(expected, float) and dnp.isnan(expected): self.assertTrue(dnp.isnan(actual)) elif isinstance(expected, Exception): self.assertTrue(isinstance(actual, Exception)) self.assertEquals(str(expected), str(actual)) elif isinstance(expected, (dnp.ndarray)): self.assertTrue(dnp.maths.equaldataset(expected, actual)) else: self.assertEquals(expected, actual)
def _assertFlattenedEquals(self, expected, actual): if expected is None: self.assertEqual(None, actual) elif isinstance(expected, (list, tuple)): self.assertEqual(len(expected), len(actual)) for exp, act in zip(expected, actual): self._assertFlattenedEquals(exp, act) elif isinstance(expected, dict): self.assertEqual(len(expected), len(actual)) for k, v in six.iteritems(expected): self.assertTrue(k in actual) self._assertFlattenedEquals(v, actual[k]) elif isinstance(expected, float) and dnp.isnan(expected): self.assertTrue(dnp.isnan(actual)) elif isinstance(expected, Exception): self.assertTrue(isinstance(actual, Exception)) # We are a little lenient on Exception comparisons because # Exception helpers are not a perfect flatten/unflatten # 1) we add the original type of the Exception to the beginning # of the Exception string # 2) we add the stack trace to the end of the exception actualstr = str(actual) i = actualstr.find("\n\n") if i >= 0: actualstr = actualstr[:i] expstr = str(expected) i = expstr.find("\n\n") if i >= 0: expstr = expstr[:i] if expstr != actualstr and "Exception: " + expstr != actualstr: # on mismatch, display error on original string self.assertEqual(str(expected), str(actual)) elif isinstance(expected, (dnp.ndarray)): self.assertTrue(dnp.equaldataset(expected, actual)) else: self.assertEqual(expected, actual)
def _assertFlattenedEquals(self, expected, actual): if expected is None: self.assertEquals(None, actual) elif isinstance(expected, (list, tuple)): self.assertEquals(len(expected), len(actual)) for exp, act in zip(expected, actual): self._assertFlattenedEquals(exp, act) elif isinstance(expected, dict): self.assertEquals(len(expected), len(actual)) for k, v in expected.iteritems(): self.assertTrue(k in actual) self._assertFlattenedEquals(v, actual[k]) elif isinstance(expected, float) and dnp.isnan(expected): self.assertTrue(dnp.isnan(actual)) elif isinstance(expected, Exception): self.assertTrue(isinstance(actual, Exception)) # We are a little lenient on Exception comparisons because # Exception helpers are not a perfect flatten/unflatten # 1) we add the original type of the Exception to the beginning # of the Exception string # 2) we add the stack trace to the end of the exception actualstr = str(actual) i = actualstr.find("\n\n") if i >= 0: actualstr = actualstr[:i] expstr = str(expected) i = expstr.find("\n\n") if i >= 0: expstr = expstr[:i] if expstr != actualstr and "Exception: " + expstr != actualstr: # on mismatch, display error on original string self.assertEquals(str(expected), str(actual)) elif isinstance(expected, (dnp.ndarray)): self.assertTrue(dnp.equaldataset(expected, actual)) else: self.assertEquals(expected, actual)
def peakdet(v, delta, x = None): """ Converted from MATLAB script at http://billauer.co.il/peakdet.html Currently returns two lists of tuples, but maybe arrays would be better function [maxtab, mintab]=peakdet(v, delta, x) %PEAKDET Detect peaks in a vector % [MAXTAB, MINTAB] = PEAKDET(V, DELTA) finds the local % maxima and minima ("peaks") in the vector V. % MAXTAB and MINTAB consists of two columns. Column 1 % contains indices in V, and column 2 the found values. % % With [MAXTAB, MINTAB] = PEAKDET(V, DELTA, X) the indices % in MAXTAB and MINTAB are replaced with the corresponding % X-values. % % A point is considered a maximum peak if it has the maximal % value, and was preceded (to the left) by a value lower by % DELTA. % Eli Billauer, 3.4.05 (Explicitly not copyrighted). % This function is released to the public domain; Any use is allowed. """ maxtab = [] mintab = [] if x is None: x = dnp.arange(len(v)) v = dnp.asarray(v) if len(v) != len(x): sys.exit('Input vectors v and x must have same length') if dnp.isnan(delta): sys.exit('Input argument delta must be a scalar') if delta <= 0: sys.exit('Input argument delta must be positive') mn, mx = Inf, -Inf mnpos, mxpos = NaN, NaN lookformax = True for i in dnp.arange(len(v)): this = v[i] if this > mx: mx = this mxpos = x[i] if this < mn: mn = this mnpos = x[i] if lookformax: if this < mx-delta: maxtab.append((mxpos, mx)) mn = this mnpos = x[i] lookformax = False else: if this > mn+delta: mintab.append((mnpos, mn)) mx = this mxpos = x[i] lookformax = True return maxtab, mintab