import numpy as np
from pyts.approximation import (
PiecewiseAggregateApproximation,
SymbolicAggregateApproximation,
DiscreteFourierTransform,
MultipleCoefficientBinning,
SymbolicFourierApproximation,
)
def generate():
fixtures = []
rng = np.random.RandomState(42)
X = rng.randn(4, 16)
paa = PiecewiseAggregateApproximation(window_size=None, output_size=4)
result = paa.transform(X)
fixtures.append({
"test_name": "paa_basic",
"params": {"output_size": 4},
"input": {"X": X.tolist()},
"expected": {"output": result.tolist()},
"tolerance": 1e-10,
})
paa = PiecewiseAggregateApproximation(window_size=None, output_size=8)
result = paa.transform(X)
fixtures.append({
"test_name": "paa_8",
"params": {"output_size": 8},
"input": {"X": X.tolist()},
"expected": {"output": result.tolist()},
"tolerance": 1e-10,
})
sax = SymbolicAggregateApproximation(n_bins=4, strategy="normal")
result = sax.transform(X)
result_numeric = [[ord(c) - ord('a') for c in row] for row in result.tolist()]
fixtures.append({
"test_name": "sax_basic",
"params": {"n_bins": 4, "strategy": "normal"},
"input": {"X": X.tolist()},
"expected": {"output": result_numeric},
"tolerance": 1e-10,
})
dft = DiscreteFourierTransform(n_coefs=6)
dft.fit(X)
result = dft.transform(X)
fixtures.append({
"test_name": "dft_basic",
"params": {"n_coefs": 6},
"input": {"X": X.tolist()},
"expected": {"output": result.tolist()},
"tolerance": 1e-8,
})
dft = DiscreteFourierTransform(n_coefs=6, norm_mean=True)
dft.fit(X)
result = dft.transform(X)
fixtures.append({
"test_name": "dft_norm_mean",
"params": {"n_coefs": 6, "norm_mean": True},
"input": {"X": X.tolist()},
"expected": {"output": result.tolist()},
"tolerance": 1e-8,
})
mcb = MultipleCoefficientBinning(n_bins=4, strategy="quantile")
result = mcb.fit_transform(X)
result_numeric = [[ord(c) - ord('a') for c in row] for row in result.tolist()]
fixtures.append({
"test_name": "mcb_basic",
"params": {"n_bins": 4, "strategy": "quantile"},
"input": {"X": X.tolist()},
"expected": {"output": result_numeric},
"tolerance": 1e-10,
})
sfa = SymbolicFourierApproximation(n_coefs=4, n_bins=4, strategy="quantile")
result = sfa.fit_transform(X)
result_numeric = [[ord(c) - ord('a') for c in row] for row in result.tolist()]
fixtures.append({
"test_name": "sfa_basic",
"params": {"n_coefs": 4, "n_bins": 4, "strategy": "quantile"},
"input": {"X": X.tolist()},
"expected": {"output": result_numeric},
"tolerance": 1e-8,
})
return fixtures