예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
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