Exemplo n.º 1
0
 def test_transform(self):
     xform = TransformChain([SignalGenerator(), SegmentSignal()])
     x, y = xform.transform('sin')
     self.assertEqual(list(numpy.round(x[0][:3], 4)), [0, 0.0063, 0.0126])
     self.assertEqual(len(x[0]), xform.transforms[1].chunksize)
     self.assertEqual(len(x[1]), xform.transforms[1].chunksize)
     return
Exemplo n.º 2
0
 def test_already_flat(self):
     gen = TransformChain(VariableSignalGenerator(fs=10000), Reduce())
     X, Y = gen.fit_transform([{'sin': 100}, {'cos': 150}], [0, 1])
     self.assertEqual(len(X), 2)
     self.assertEqual(len(X[0]), 10000)
     self.assertEqual(list(Y), [0, 1])
     return
Exemplo n.º 3
0
    def test_inverse_fit_transform(self):
        # non-flattening transform
        ogen = TransformChain(VariableSignalGenerator(fs=10000),
                              WhiteNoise(sigma=0.1, clones=2),
                              SegmentSignal(chunksize=200))

        # flattening transform
        fgen = ogen.clone()
        fgen.add(Reduce())

        # transform/inverse-transform
        fX, fY = fgen.fit_transform([{'sin': 100}, {'cos': 150}], [0, 1])
        tX, tY = fgen.inverse_fit_transform(fX, fY)

        # expected inversion
        fX, fY = ogen.fit_transform([{'sin': 100}, {'cos': 150}], [0, 1])
        oX, oY = ogen.inverse_fit_transform(fX, fY)

        # check dimensionality
        self.assertEqual(len(oX), len(tX))
        self.assertEqual(len(oX[0]), len(tX[0]))
        self.assertEqual(len(oY), len(tY))
        self.assertEqual(list(oX[3]), list(tX[3]))
        self.assertEqual(list(oY), list(tY))
        return
Exemplo n.º 4
0
 def test_fit(self):
     gen = SignalGenerator()
     gen.fit(['sin', 'cos'])
     xform = TransformChain([
         WhiteNoise(mu=0, sigma=2, clones=10),
         FilterNoisiest(),
     ])
     xform.fit(gen.X, gen.Y)
     self.assertEqual(len(xform.X), 20)
     self.assertEqual(len(xform.transforms[0].X), 22)
     self.assertEqual(len(xform.transforms[1].X), 20)
     return
Exemplo n.º 5
0
 def test_fit_simulate(self):
     xform = TransformChain(
         [SignalGenerator(),
          WhiteNoise(clones=2),
          SegmentSignal()])
     xform.fit(['sin', 'cos'])
     self.assertEqual(list(numpy.round(xform.X[0][0][:3], 4)),
                      [0, 0.0063, 0.0126])
     self.assertNotEqual(list(numpy.round(xform.X[1][0][:3], 4)),
                         [1.0, 1.0, 0.9999])
     self.assertEqual(len(xform.X[0][0]), xform.transforms[2].chunksize)
     self.assertEqual(len(xform.X[1][0]), xform.transforms[2].chunksize)
     return
Exemplo n.º 6
0
 def test_chained(self):
     xform = TransformChain(
         VariableSignalGenerator(fs=1000),
         SegmentSignal(chunksize=200),
         Reduce(),
         FeatureTransform(
             NormalizedPower(),
             DominantFrequency(fs=1000)
         )
     )
     xform.fit(self.data)
     self.assertEqual([round(x, 2) for x in xform._X[0]], [0.64, 5])
     self.assertEqual([round(x, 2) for x in xform._X[-1]], [0.64, 15])
     self.assertEqual(len(xform._X), len(self.data) * 5)
     return
Exemplo n.º 7
0
 def test_simple(self):
     xform = TransformChain(
         VariableSignalGenerator(fs=1000),
         FeatureTransform(
             NormalizedPower(),
             DominantFrequency(fs=1000)
         )
     )
     xform.fit(self.data[:10])
     self.assertEqual(
         list(map(list, numpy.round(xform._X, 2))),
         [[0.64, 5], [0.63, 6], [0.63, 6], [0.63, 7], [0.63, 7], [0.64, 8], [0.64, 8], [0.64, 9], [0.64, 9], [0.64, 10]]
     )
     self.assertEqual(len(xform._X), 10)
     return
Exemplo n.º 8
0
 def test_fit(self):
     xform = TransformChain([SignalGenerator(), SegmentSignal()])
     xform.fit(['sin', 'cos'])
     self.assertEqual(list(numpy.round(xform.X[0][0][:3], 4)),
                      [0, 0.0063, 0.0126])
     self.assertEqual(list(numpy.round(xform.X[0][1][:3], 4)),
                      [0.5878, 0.5929, 0.5979])
     self.assertEqual(len(xform.X[0][0]), xform.transforms[1].chunksize)
     self.assertEqual(len(xform.X[0][1]), xform.transforms[1].chunksize)
     self.assertEqual(list(numpy.round(xform.X[1][0][:3], 4)),
                      [1.0, 1.0, 0.9999])
     self.assertEqual(list(numpy.round(xform.X[1][1][:3], 4)),
                      [0.809, 0.8053, 0.8016])
     self.assertEqual(len(xform.X[1][0]), xform.transforms[1].chunksize)
     self.assertEqual(len(xform.X[1][1]), xform.transforms[1].chunksize)
     return
Exemplo n.º 9
0
    def test_fit_transform(self):
        # normal multi-layer transform
        gen = TransformChain(VariableSignalGenerator(fs=10000),
                             WhiteNoise(sigma=0.1, clones=2),
                             SegmentSignal(chunksize=200))
        X, Y = gen.fit_transform([{'sin': 100}, {'cos': 150}], [0, 1])
        self.assertEqual(len(X), len(Y))
        self.assertEqual(len(X), 6)
        self.assertEqual(len(X[0]), len(Y[0]))
        self.assertEqual(len(X[0]), 50)
        self.assertEqual(len(X[0][0]), 200)

        # add flattening layer
        gen.add(Reduce())
        X, Y = gen.fit_transform([{'sin': 100}, {'cos': 150}], [0, 1])
        self.assertEqual(len(X), len(Y))
        self.assertEqual(len(X), 300)
        self.assertEqual(len(X[0]), 200)
        return