def test_detrend(): """Test custom detrend implementation.""" point_number = 703 features = 17 signals, _, _ = generate_signals(n_features=features, length=point_number, same_variance=True) trends = generate_trends(n_features=features, length=point_number) x = signals + trends + 1 original = x.copy() # Mean removal only (out-of-place) detrended = nisignal._detrend(x, inplace=False, type="constant") assert_true(abs(detrended.mean(axis=0)).max() < 15. * np.finfo(np.float).eps) # out-of-place detrending. Use scipy as a reference implementation detrended = nisignal._detrend(x, inplace=False) detrended_scipy = scipy.signal.detrend(x, axis=0) # "x" must be left untouched np.testing.assert_almost_equal(original, x, decimal=14) assert_true(abs(detrended.mean(axis=0)).max() < 15. * np.finfo(np.float).eps) np.testing.assert_almost_equal(detrended_scipy, detrended, decimal=14) # for this to work, there must be no trends at all in "signals" np.testing.assert_almost_equal(detrended, signals, decimal=14) # inplace detrending nisignal._detrend(x, inplace=True) assert_true(abs(x.mean(axis=0)).max() < 15. * np.finfo(np.float).eps) # for this to work, there must be no trends at all in "signals" np.testing.assert_almost_equal(detrended_scipy, detrended, decimal=14) np.testing.assert_almost_equal(x, signals, decimal=14)
def test_detrend(): """Test custom detrend implementation.""" point_number = 703 features = 17 signals, _, _ = generate_signals(n_features=features, length=point_number, same_variance=True) trends = generate_trends(n_features=features, length=point_number) x = signals + trends + 1 original = x.copy() # Mean removal only (out-of-place) detrended = nisignal._detrend(x, inplace=False, type="constant") assert_true( abs(detrended.mean(axis=0)).max() < 15. * np.finfo(np.float).eps) # out-of-place detrending. Use scipy as a reference implementation detrended = nisignal._detrend(x, inplace=False) detrended_scipy = scipy.signal.detrend(x, axis=0) # "x" must be left untouched np.testing.assert_almost_equal(original, x, decimal=14) assert_true( abs(detrended.mean(axis=0)).max() < 15. * np.finfo(np.float).eps) np.testing.assert_almost_equal(detrended_scipy, detrended, decimal=14) # for this to work, there must be no trends at all in "signals" np.testing.assert_almost_equal(detrended, signals, decimal=14) # inplace detrending nisignal._detrend(x, inplace=True) assert_true(abs(x.mean(axis=0)).max() < 15. * np.finfo(np.float).eps) # for this to work, there must be no trends at all in "signals" np.testing.assert_almost_equal(detrended_scipy, detrended, decimal=14) np.testing.assert_almost_equal(x, signals, decimal=14)