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
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
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
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
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
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
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
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
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