package net.seninp.jmotif.sax.discord; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import java.util.Arrays; 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 TestDiscordDiscoveryNONE { 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 = 5; private static final NumerosityReductionStrategy STRATEGY = NumerosityReductionStrategy.NONE; // logging stuff // private static final Logger LOGGER = LoggerFactory.getLogger(TestDiscordDiscoveryNONE.class); private double[] series; @Before public void setUp() throws Exception { series = TSProcessor.readFileColumn(TEST_DATA_FNAME, 0, 0); series = Arrays.copyOf(series, 800); } @SuppressWarnings("deprecation") @Test public void test() { DiscordRecords discordsBruteForce = null; DiscordRecords discordsHash = null; DiscordRecords discordsOle = null; try { discordsBruteForce = BruteForceDiscordImplementation.series2BruteForceDiscords(series, WIN_SIZE, DISCORDS_TO_TEST, new LargeWindowAlgorithm(), NORM_THRESHOLD); for (DiscordRecord d : discordsBruteForce) { LOGGER.debug("brute force discord " + d.toString()); } 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 d1 = discordsBruteForce.get(i).getNNDistance(); Double d2 = discordsHash.get(i).getNNDistance(); Double d3 = discordsOle.get(i).getNNDistance(); assertEquals(WIN_SIZE, discordsBruteForce.get(i).getLength()); assertEquals(WIN_SIZE, discordsHash.get(i).getLength()); assertEquals(WIN_SIZE, discordsOle.get(i).getLength()); assertEquals(d1, d2); assertEquals(d1, d3); } } }