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;
81 @SuppressWarnings(
"rawtypes")
82 public static void main(String[] args)
84 ReadStringStream reader =
new ReadStringStream(
SymbolDistribution.class.getResourceAsStream(
"SymbolDistribution.txt"));
85 FindPattern feeder =
new FindPattern(
"(.*?),");
86 Connector.connect(reader, feeder);
87 GroupProcessor counter =
new GroupProcessor(1, 1);
89 TurnInto one =
new TurnInto(1);
90 counter.associateInput(INPUT, one, INPUT);
91 Cumulate sum_one =
new Cumulate(
new CumulativeFunction<Number>(Numbers.addition));
92 Connector.connect(one, sum_one);
93 counter.associateOutput(OUTPUT, sum_one, OUTPUT);
94 counter.addProcessors(one, sum_one);
96 Slice slicer =
new Slice(
new IdentityFunction(1), counter);
97 HashMap<Object,Object> pattern = MapDistance.createMap(
"a", 6,
"b", 1,
"c", 2);
98 TrendDistance<HashMap,Number,Number> alarm =
new TrendDistance<HashMap,Number,Number>(pattern, 9, slicer,
new FunctionTree(Numbers.absoluteValue,
99 new FunctionTree(MapDistance.instance, StreamVariable.X, StreamVariable.Y)), 2, Numbers.isLessThan);
100 Connector.connect(feeder, alarm);
101 Pullable p = alarm.getPullableOutput();
103 for (
int i = 0; b && i < 10; i++)
105 b = (Boolean) p.pull();
106 System.out.println(b);
Trend distance based on the statistical distribution of symbols in a stream.