package net.seninp.jmotif.sax.discord;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.seninp.jmotif.sax.NumerosityReductionStrategy;
import net.seninp.jmotif.sax.TSProcessor;
import net.seninp.jmotif.sax.registry.LargeWindowAlgorithm;
import net.seninp.util.StackTrace;
public class TestDiscordDiscoveryMINDIST {
private static final String TEST_DATA_FNAME = "src/resources/test-data/ecg0606_1.csv";
private static final int WIN_SIZE = 100;
private static final int PAA_SIZE = 3;
private static final int ALPHABET_SIZE = 3;
private static final double NORM_THRESHOLD = 0.01;
private static final int DISCORDS_TO_TEST = 3;
private static final NumerosityReductionStrategy STRATEGY = NumerosityReductionStrategy.EXACT;
// logging stuff
//
private static final Logger LOGGER = LoggerFactory.getLogger(TestDiscordDiscoveryMINDIST.class);
private double[] series;
@Before
public void setUp() throws Exception {
series = TSProcessor.readFileColumn(TEST_DATA_FNAME, 0, 0);
}
@SuppressWarnings("deprecation")
@Test
public void test() {
DiscordRecords discordsHash = null;
DiscordRecords discordsOle = null;
try {
discordsHash = HOTSAXImplementation.series2Discords(series, DISCORDS_TO_TEST, WIN_SIZE,
PAA_SIZE, ALPHABET_SIZE, STRATEGY, NORM_THRESHOLD);
for (DiscordRecord d : discordsHash) {
LOGGER.debug("hotsax hash discord " + d.toString());
}
discordsOle = HOTSAXImplementation.series2DiscordsDeprecated(series, DISCORDS_TO_TEST,
WIN_SIZE, PAA_SIZE, ALPHABET_SIZE, new LargeWindowAlgorithm(), STRATEGY, NORM_THRESHOLD);
for (DiscordRecord d : discordsOle) {
LOGGER.debug("old hash discord " + d.toString());
}
}
catch (Exception e) {
fail("shouldn't throw an exception, exception thrown: \n" + StackTrace.toString(e));
e.printStackTrace();
}
for (int i = 0; i < DISCORDS_TO_TEST; i++) {
Double d2 = discordsHash.get(i).getNNDistance();
Double d3 = discordsOle.get(i).getNNDistance();
assertEquals(d3, d2);
}
}
}