aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.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/app/PartialInterpretationMetric.xtend')
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend61
1 files changed, 61 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend
new file mode 100644
index 00000000..5f958cfa
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.xtend
@@ -0,0 +1,61 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.PartialInterpretationGraph
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric
5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric
6import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric
7import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric
8import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.output.CsvFileWriter
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
10import java.io.File
11import java.io.FileNotFoundException
12import java.io.PrintWriter
13import java.util.ArrayList
14import java.util.List
15import org.eclipse.emf.ecore.util.EcoreUtil
16import org.eclipse.viatra.dse.api.Solution
17
18class PartialInterpretationMetric {
19 var static state = 0;
20 def static void calculateMetric(PartialInterpretation partial, String path, int id, String currentStateId){
21 val metrics = new ArrayList<Metric>();
22 metrics.add(new OutDegreeMetric());
23 metrics.add(new NodeActivityMetric());
24 metrics.add(new MultiplexParticipationCoefficientMetric());
25
26 new File(path).mkdir();
27 val filename = path + "/state_"+state+".csv";
28 state++;
29 val metricCalculator = new PartialInterpretationGraph(partial, metrics, currentStateId);
30
31 CsvFileWriter.write(metricCalculator.evaluateAllMetrics(), filename);
32 }
33
34 def static void outputTrajectories(PartialInterpretation empty, List<Solution> solutions){
35
36 for(solution : solutions){
37 val emptySolutionCopy = EcoreUtil.copy(empty)
38 val trajectory = solution.shortestTrajectory;
39 trajectory.modelWithEditingDomain = emptySolutionCopy
40 val stateCodes = newArrayList()
41
42 while(trajectory.doNextTransformation){
43 println(trajectory.stateCoder.createStateCode)
44 stateCodes.add(trajectory.stateCoder.createStateCode.toString)
45 }
46
47 try{
48 val path = "debug/metric/trajectories/trajectory"+trajectory.stateCoder.createStateCode.toString+".csv"
49 val PrintWriter writer = new PrintWriter(new File(path))
50 val output = new StringBuilder
51 for(stateCode : stateCodes){
52 output.append(stateCode+'\n')
53 }
54 writer.write(output.toString())
55 writer.close()
56 }catch(FileNotFoundException e) {
57 e.printStackTrace()
58 }
59 }
60 }
61} \ No newline at end of file