aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.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/Main.xtend')
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.xtend72
1 files changed, 72 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/Main.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.xtend
new file mode 100644
index 00000000..2e793b23
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.xtend
@@ -0,0 +1,72 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.input.GraphReader
5import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.output.CsvFileWriter
6import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.YakindummPackageImpl
7import java.util.ArrayList
8
9//import yakindumm2.impl.Yakindumm2PackageImpl
10
11class Main {
12 static class RWInformation{
13 public var String inputFolder;
14 public var String outputFolder;
15 public var int numRuns;
16
17 new(String inputFolder, String outputFolder, int numRuns){
18 this.inputFolder = inputFolder;
19 this.outputFolder = outputFolder;
20 this.numRuns = numRuns;
21 }
22 }
23
24 def static void main(String[] args){
25 //init model
26 YakindummPackageImpl.eINSTANCE.eClass;
27// Yakindumm2PackageImpl.eINSTANCE.eClass;
28 val infos = initData();
29
30 println("Start Reading Models...");
31 var reader = new GraphReader(YakindummPackageImpl.eINSTANCE);
32 for(info : infos){
33 calculateAllModels(info.inputFolder, info.outputFolder,info.numRuns, reader);
34 }
35
36 //human input has different package declaration
37// reader = new GraphReader(Yakindumm2PackageImpl.eINSTANCE);
38 val human = new RWInformation("inputs/humanInput/", "../plot/statistics/humanOutput/", 1);
39 calculateAllModels(human.inputFolder, human.outputFolder,human.numRuns, reader);
40
41
42 println("finished");
43 }
44
45 static def initData(){
46 val infos = new ArrayList<RWInformation>();
47 infos.add(new RWInformation("inputs/alloyInput/models/", "../plot/statistics/alloyOutput/", 20));
48 infos.add(new RWInformation("inputs/randomInput/models/", "../plot/statistics/randomOutput/", 20));
49 infos.add(new RWInformation("inputs/viatraInput30/", "../plot/statistics/viatraOutput30/", 20));
50 infos.add(new RWInformation("inputs/viatraInput100/", "../plot/statistics/viatraOutput100/", 10));
51 return infos;
52 }
53
54 static def calculateAllModels(String inputFolder, String outputFolder, int numRuns, GraphReader reader){
55 for(var i = 1; i <= numRuns; i++){
56 val models = new ArrayList<EMFGraph>();
57 models.addAll(reader.readModels(inputFolder + "run" + i));
58 for(model : models){
59 calculateAndOutputMetrics(model, YakindummPackageImpl.eNAME, outputFolder+model.name+"_run_"+i+".csv");
60 }
61 }
62 println("output results Ended for: " + outputFolder);
63
64
65 }
66
67 static def calculateAndOutputMetrics(EMFGraph model, String metaModel, String fileName){
68 //println("evaluating for " + model.name);
69 model.metaModel = metaModel;
70 CsvFileWriter.write(model.evaluateAllMetrics(), fileName);
71 }
72} \ No newline at end of file