diff options
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.xtend | 61 |
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 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.PartialInterpretationGraph | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric | ||
6 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric | ||
7 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric | ||
8 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.output.CsvFileWriter | ||
9 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | ||
10 | import java.io.File | ||
11 | import java.io.FileNotFoundException | ||
12 | import java.io.PrintWriter | ||
13 | import java.util.ArrayList | ||
14 | import java.util.List | ||
15 | import org.eclipse.emf.ecore.util.EcoreUtil | ||
16 | import org.eclipse.viatra.dse.api.Solution | ||
17 | |||
18 | class 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 | ||