aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend')
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend73
1 files changed, 73 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
new file mode 100644
index 00000000..074a75da
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.xtend
@@ -0,0 +1,73 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
4import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink
5import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
6import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BooleanElementImpl
7import java.util.ArrayList
8import java.util.List
9
10class PartialInterpretationGraph extends Graph{
11 var lastStateId="";
12
13 new(PartialInterpretation partial, List<Metric> metrics, String name){
14 partial.problem.relations.forEach[
15 this.statistic.addType(it.name);
16 ]
17 // add all elements
18 val elements = getElements(partial);
19 for(element : elements){
20 statistic.addNode(element)
21 }
22
23 for(relationInterpretation : partial.partialrelationinterpretation) {
24 val type = relationInterpretation.interpretationOf.name
25
26 for(edge : relationInterpretation.relationlinks.filter(BinaryElementRelationLink)){
27 statistic.addEdge(edge.param1, edge.param2, type);
28 }
29 }
30
31 this.name = name;
32 this.metrics = metrics;
33 }
34
35 /**
36 * Set basic information for the output
37 */
38 override setBasicInformation(ArrayList<ArrayList<String>> output){
39 val metaInfo = new ArrayList<String>();
40 metaInfo.add(META_MODEL_HEADER);
41 metaInfo.add(this.metaModel);
42
43 val edgeInfo = new ArrayList<String>();
44 edgeInfo.add(NUM_EDGE_TYPE_HEADER);
45 edgeInfo.add(this.statistic.allTypes.size()+"");
46
47 val nodeInfo = new ArrayList<String>();
48 nodeInfo.add(NUM_NODE_HEADER);
49 nodeInfo.add(this.statistic.allNodes.size()+"");
50
51 val stateInfo = new ArrayList<String>();
52 stateInfo.add(STATE_ID_HEADER);
53 stateInfo.add(this.name);
54
55 output.add(metaInfo);
56 output.add(edgeInfo);
57 output.add(nodeInfo);
58 output.add(stateInfo);
59 }
60
61 private def getElements(PartialInterpretation partial){
62 return partial.newElements.filter[!(it instanceof BooleanElementImpl)] + partial.problem.elements;
63 }
64
65 override getStatistic() {
66 throw new UnsupportedOperationException("TODO: auto-generated method stub")
67 }
68
69 override getName() {
70 return name;
71 }
72
73} \ No newline at end of file