diff options
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.xtend | 73 |
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 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric | ||
4 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink | ||
5 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | ||
6 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.BooleanElementImpl | ||
7 | import java.util.ArrayList | ||
8 | import java.util.List | ||
9 | |||
10 | class 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 | ||