18 package mining.trenddistance;
20 import static ca.uqac.lif.cep.Connector.INPUT;
21 import static ca.uqac.lif.cep.Connector.OUTPUT;
23 import java.util.HashMap;
25 import ca.uqac.lif.cep.Connector;
26 import ca.uqac.lif.cep.GroupProcessor;
27 import ca.uqac.lif.cep.Pullable;
28 import ca.uqac.lif.cep.functions.StreamVariable;
29 import ca.uqac.lif.cep.functions.CumulativeFunction;
30 import ca.uqac.lif.cep.functions.Cumulate;
31 import ca.uqac.lif.cep.functions.FunctionTree;
32 import ca.uqac.lif.cep.functions.IdentityFunction;
33 import ca.uqac.lif.cep.functions.TurnInto;
34 import ca.uqac.lif.cep.io.ReadStringStream;
35 import ca.uqac.lif.cep.peg.MapDistance;
36 import ca.uqac.lif.cep.peg.TrendDistance;
37 import ca.uqac.lif.cep.tmf.Slice;
38 import ca.uqac.lif.cep.util.Numbers;
39 import ca.uqac.lif.cep.util.FindPattern;
84 @SuppressWarnings(
"rawtypes")
85 public static void main(String[] args)
87 ReadStringStream reader =
new ReadStringStream(
MaxSymbols.class.getResourceAsStream(
"SymbolDistribution.txt"));
88 FindPattern feeder =
new FindPattern(
"(.*?),");
89 Connector.connect(reader, feeder);
90 GroupProcessor counter =
new GroupProcessor(1, 1);
92 TurnInto one =
new TurnInto(1);
93 counter.associateInput(INPUT, one, INPUT);
94 Cumulate sum_one =
new Cumulate(
new CumulativeFunction<Number>(Numbers.addition));
95 Connector.connect(one, sum_one);
96 counter.associateOutput(OUTPUT, sum_one, OUTPUT);
97 counter.addProcessors(one, sum_one);
99 Slice slicer =
new Slice(
new IdentityFunction(1), counter);
100 HashMap<Object,Object> pattern = MapDistance.createMap(
"a", 6,
"b", 1,
"c", 2);
101 TrendDistance<HashMap,Number,Number> alarm =
new TrendDistance<HashMap,Number,Number>(pattern, 9, slicer,
new FunctionTree(Numbers.absoluteValue,
102 new FunctionTree(MapDistance.instance, StreamVariable.X, StreamVariable.Y)), 2, Numbers.isLessThan);
103 Connector.connect(feeder, alarm);
104 Pullable p = alarm.getPullableOutput();
106 for (
int i = 0; b && i < 10; i++)
108 b = (Boolean) p.pull();
109 System.out.println(b);
Trend distance based on the maximum number of distinct symbols in a stream.