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.xtend18
1 files changed, 13 insertions, 5 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
index 5f958cfa..425c9d84 100644
--- 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
@@ -17,33 +17,41 @@ import org.eclipse.viatra.dse.api.Solution
17 17
18class PartialInterpretationMetric { 18class PartialInterpretationMetric {
19 var static state = 0; 19 var static state = 0;
20 def static void calculateMetric(PartialInterpretation partial, String path, int id, String currentStateId){ 20
21 // calculate the metrics for a state
22 def static void calculateMetric(PartialInterpretation partial, String path, String currentStateId){
21 val metrics = new ArrayList<Metric>(); 23 val metrics = new ArrayList<Metric>();
22 metrics.add(new OutDegreeMetric()); 24 metrics.add(new OutDegreeMetric());
23 metrics.add(new NodeActivityMetric()); 25 metrics.add(new NodeActivityMetric());
24 metrics.add(new MultiplexParticipationCoefficientMetric()); 26 metrics.add(new MultiplexParticipationCoefficientMetric());
25 27
28 //make dir since the folder can be none existing
26 new File(path).mkdir(); 29 new File(path).mkdir();
27 val filename = path + "/state_"+state+".csv"; 30 val filename = path + "/state_"+currentStateId+".csv";
28 state++; 31 state++;
29 val metricCalculator = new PartialInterpretationGraph(partial, metrics, currentStateId); 32 val metricCalculator = new PartialInterpretationGraph(partial, metrics, currentStateId);
30 33
31 CsvFileWriter.write(metricCalculator.evaluateAllMetrics(), filename); 34 CsvFileWriter.write(metricCalculator.evaluateAllMetrics(), filename);
32 } 35 }
33 36
34 def static void outputTrajectories(PartialInterpretation empty, List<Solution> solutions){ 37 def static void outputTrajectories(PartialInterpretation empty, List<Solution> solutions){
35
36 for(solution : solutions){ 38 for(solution : solutions){
39 //need to copy the empty solution because the transition directly worked on the graph
37 val emptySolutionCopy = EcoreUtil.copy(empty) 40 val emptySolutionCopy = EcoreUtil.copy(empty)
38 val trajectory = solution.shortestTrajectory; 41 val trajectory = solution.shortestTrajectory;
39 trajectory.modelWithEditingDomain = emptySolutionCopy 42 trajectory.modelWithEditingDomain = emptySolutionCopy
43
44 // state codes that will record the trajectory
40 val stateCodes = newArrayList() 45 val stateCodes = newArrayList()
41 46
47 //transform and record the state codes for each state
42 while(trajectory.doNextTransformation){ 48 while(trajectory.doNextTransformation){
43 println(trajectory.stateCoder.createStateCode) 49 //println(trajectory.stateCoder.createStateCode)
44 stateCodes.add(trajectory.stateCoder.createStateCode.toString) 50 stateCodes.add(trajectory.stateCoder.createStateCode.toString)
45 } 51 }
46 52
53
54 //output the trajectory
47 try{ 55 try{
48 val path = "debug/metric/trajectories/trajectory"+trajectory.stateCoder.createStateCode.toString+".csv" 56 val path = "debug/metric/trajectories/trajectory"+trajectory.stateCoder.createStateCode.toString+".csv"
49 val PrintWriter writer = new PrintWriter(new File(path)) 57 val PrintWriter writer = new PrintWriter(new File(path))