Exemplo n.º 1
0
 def test_MovingMedianFilter(self):
     # Valid
     for uri in ("fltr:/moving/median?winsize=5",
                 "/moving/median?winsize=5"):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(), "fltr:/moving/median?winsize=5")
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     for uri in MovingMedianFilter.generateConfigurations(20, 5):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(), uri)
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     uri = MovingMedianFilter.randomConfiguration(50)
     filt = createFilter(uri)
     self.assertEqual(filt.getURL(), uri)
     self.assertIsNotNone(filt(0.0))
     self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     # Invalid: winsize kwarg is required
     for uri in ("fltr:/moving/median",
                 "/moving/median",
                 ):
         self.assertRaises(TypeError, createFilter, uri)
     # Invalid: winsize > 0
     for uri in ("fltr:/moving/median?winsize=0",
                 "/moving/median?winsize=0",
                 ):
         self.assertRaises(ValueError, createFilter, uri)
Exemplo n.º 2
0
 def test_OneEuroFilter(self):
     # Valid
     for uri in ("fltr:/oneeuro?freq=1",
                 "/oneeuro?freq=1",
                 ):
         filt = createFilter(uri)
         self.assertEqual(
             filt.getURL(),
             "fltr:/oneeuro?freq=1&mincutoff=1&beta=0&dcutoff=1")
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     for uri in OneEuroFilter.generateConfigurations(1.0, 1.0, 10, 0.5, 10):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(), uri)
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     uri = OneEuroFilter.randomConfiguration(120)
     filt = createFilter(uri)
     self.assertEqual(filt.getURL(), uri)
     self.assertIsNotNone(filt(0.0))
     self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     # Invalid: freq kwarg is required
     for uri in ("fltr:oneeuro",
                 "oneeuro",
                 ):
         self.assertRaises(TypeError, createFilter, uri)
     # Invalid: freq > 0
     for uri in ("fltr:/oneeuro?freq=0",
                 "/oneeuro?freq=0",
                 ):
         self.assertRaises(ValueError, createFilter, uri)
Exemplo n.º 3
0
def getFunctorFactory(uri):
    """Returns a factory that can be used to build functor objects."""
    uri = str(uri)
    if uri.startswith("/noise/"):
        noise = NoiseFunctor(uri.replace("/noise/", "", 1))
        functor = lambda value: value + noise()
        rvalue = _Factory(lambda: functor)
    else:
        test = createFilter(uri)
        rvalue = _Factory(lambda: createFilter(uri))
    return rvalue
Exemplo n.º 4
0
 def test_DoubleExponentialFilter(self):
     # Valid
     for uri in ("fltr:/exponential/double?alpha=1&gamma=1",
                 "/exponential/double?alpha=1&gamma=1",
                 ):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(),
                          "fltr:/exponential/double?alpha=1.0&gamma=1.0")
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     for uri in DoubleExponentialFilter.generateConfigurations(5):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(), uri)
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     uri = DoubleExponentialFilter.randomConfiguration()
     filt = createFilter(uri)
     self.assertEqual(filt.getURL(), uri)
     self.assertIsNotNone(filt(0.0))
     self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     # Invalid: alpha kwarg is required
     for uri in ("fltr:/exponential/double?gamma=1",
                 "/exponential/double?gamma=1",
                 ):
         self.assertRaises(TypeError, createFilter, uri)
     # Invalid: gamma kwarg is required
     for uri in ("fltr:/exponential/double?alpha=1",
                 "/exponential/double?alpha=1",
                 ):
         self.assertRaises(TypeError, createFilter, uri)
     # Invalid: 0 <= alpha <= 1
     for uri in ("fltr:/exponential/double?alpha=-0.1&gamma=1",
                 "/exponential/double?alpha=-0.1&gamma=1",
                 "fltr:/exponential/double?alpha=1.1&gamma=1",
                 "/exponential/double?alpha=1.1&gamma=1"
                 ):
         self.assertRaises(ValueError, createFilter, uri)
     # Invalid: 0 <= gamma <= 1
     for uri in ("fltr:/exponential/double?alpha=0&gamma=-0.1",
                 "/exponential/double?alpha=0&gamma=-0.1",
                 "fltr:/exponential/double?alpha=0&gamma=1.1",
                 "/exponential/double?alpha=0&gamma=1.1"
                 ):
         self.assertRaises(ValueError, createFilter, uri)
Exemplo n.º 5
0
 def test_SingleExponentialFilter(self):
     # Valid
     for uri in ("fltr:/exponential/single?alpha=1",
                 "/exponential/single?alpha=1",
                 "/exponential/single?alpha=1&variant=predict",
                 "/exponential/single?alpha=1&variant=lowpass",
                 ):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(), "fltr:/exponential/single?alpha=1.0")
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     for uri in SingleExponentialFilter.generateConfigurations(5):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(), uri)
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     uri = SingleExponentialFilter.randomConfiguration()
     filt = createFilter(uri)
     self.assertEqual(filt.getURL(), uri)
     self.assertIsNotNone(filt(0.0))
     self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     # Invalid: alpha kwarg is required
     for uri in ("fltr:/exponential/single",
                 "/exponential/single",
                 "fltr:/exponential/single?variant=predict",
                 "/exponential/single?variant=predict",
                 ):
         self.assertRaises(TypeError, createFilter, uri)
     # Invalid: variant not in ('predict', 'lowpass')
     for uri in ("fltr:/exponential/single?varian=wrong",
                 "/exponential/single?varian=wrong",
                 ):
         self.assertRaises(TypeError, createFilter, uri)
     # Invalid: 0 < alpha <= 1
     for uri in ("fltr:/exponential/single?alpha=0",
                 "/exponential/single?alpha=0",
                 "fltr:/exponential/single?alpha=1.1",
                 "/exponential/single?alpha=1.1"
                 ):
         self.assertRaises(ValueError, createFilter, uri)
Exemplo n.º 6
0
 def test_DESPFilter(self):
     # Valid
     for uri in ("fltr:/exponential/desp?alpha=0",
                 "/exponential/desp?alpha=0",
                 "fltr:/exponential/desp?alpha=0&tau=1",
                 "/exponential/desp?alpha=0&tau=1",
                 ):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(),
                          "fltr:/exponential/desp?alpha=0&tau=1")
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     for uri in DESPFilter.generateConfigurations(5):
         filt = createFilter(uri)
         self.assertEqual(filt.getURL(), uri)
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     uri = DESPFilter.randomConfiguration()
     filt = createFilter(uri)
     self.assertEqual(filt.getURL(), uri)
     self.assertIsNotNone(filt(0.0))
     self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
     # Invalid: alpha kwarg is required
     for uri in ("fltr:/exponential/desp?tau=1",
                 "/exponential/desp?tau=1",
                 ):
         self.assertRaises(TypeError, createFilter, uri)
     # Invalid: 0 <= alpha < 1
     for uri in ("fltr:/exponential/desp?alpha=1",
                 "/exponential/desp?alpha=1",
                 ):
         self.assertRaises(ValueError, createFilter, uri)
     # Invalid: tau > 0
     for uri in ("fltr:/exponential/desp?alpha=0&tau=0",
                 "/exponential/desp?alpha=0&tau=0",
                 ):
         self.assertRaises(ValueError, createFilter, uri)
Exemplo n.º 7
0
 def test_ConstantValueKalmanFilter(self):
     # Valid
     for uri in ("fltr:/kalman/constant",
                 "/kalman/constant",
                 "/kalman/constant?x=None",
                 "/kalman/constant?p=1.0",
                 "/kalman/constant?q=1e-05",
                 "/kalman/constant?r=0.1",
                 ):
         filt = createFilter(uri)
         self.assertEqual(
             filt.getURL(),
             "fltr:/kalman/constant?x=None&p=1.0&q=1e-05&r=0.1")
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))
Exemplo n.º 8
0
 def test_DerivativeBasedKalmanFilter(self):
     # Valid
     for uri in ("fltr:/kalman/derivative",
                 "/kalman/derivative",
                 "/kalman/derivative?x=0.0",
                 "/kalman/derivative?v=0.0",
                 "/kalman/derivative?freq=60",
                 "/kalman/derivative?p=1.0",
                 "/kalman/derivative?q=1e-05",
                 "/kalman/derivative?r=0.1",
                 ):
         filt = createFilter(uri)
         self.assertEqual(
             filt.getURL(),
             "fltr:/kalman/derivative?x=0.0&v=0.0&freq=60&p=1.0&q=1e-05&r=0.1")
         self.assertIsNotNone(filt(0.0))
         self.assertIsNotNone(filt(0.0, datetime.datetime.now()))