package edu.hawaii.jmotif.webexample; import weka.core.Instances; import weka.core.converters.ConverterUtils.DataSource; import edu.hawaii.jmotif.sax.LargeWindowAlgorithm; import edu.hawaii.jmotif.sax.SAXFactory; import edu.hawaii.jmotif.sax.datastructures.DiscordsAndMotifs; /** * The discords experiment code. see the example on the web and more detailed description in the * Keogh's article. * * @author Pavel Senin. * */ public class MotifsDiscordsExample { private static final int windowSize = 150; private static final int alphabetSize = 6; /** * The main executable method. * * @param args None used. * @throws Exception if error occurs. */ public static void main(String[] args) throws Exception { Instances tsData = readTSData(); DiscordsAndMotifs dr = SAXFactory.series2DiscordsAndMotifs(toDoubleSeries(tsData), windowSize, alphabetSize, 2, 2, new LargeWindowAlgorithm()); System.out.println("\n\n\n" + dr.toString()); } private static double[] toDoubleSeries(Instances tsData) { int window = 3000; int offset = 4779; double[] res = new double[window]; for (int idx = 0; idx < window; idx++) { res[idx] = tsData.instance(idx + offset).value(1); if (idx >= window + offset) { break; } } return res; } /** * Data reader. * * @return timeseries read from file. * @throws Exception if error occurs. */ private static Instances readTSData() throws Exception { // Instances data = DataSource.read("data//ts_data//mitdbx_mitdbx_108.arff"); Instances data = DataSource.read("data//ts_data//qtdbsele0606.arff"); return data; } }