From 8ca4668275e7f9298b9960acc66373aa94650453 Mon Sep 17 00:00:00 2001 From: 20001LastOrder Date: Tue, 20 Aug 2019 17:13:46 -0400 Subject: changes in settings of measurements --- .../SocialNetwork_plugin/META-INF/MANIFEST.MF | 4 +- .../SocialNetwork_plugin/Measurement_Runner.launch | 16 + .../SocialNetwork_plugin/bin/.gitignore | 8 - .../bin/constraints/ecore/.gitignore | 8 + .../SocialNetwork_plugin/bin/ecore.ecore | 1023 ++++++++++++++++++++ .../SocialNetwork_plugin/bin/ecore/.gitignore | 8 + .../SocialNetwork_plugin/data/Github/.DS_Store | Bin 0 -> 10244 bytes .../data/Github/mpc_rep/2samplemodel41.githubmodel | 105 ++ .../data/Github/na_rep/.DS_Store | Bin 0 -> 6148 bytes .../data/Github/na_rep/2samplemodel65.githubmodel | 38 + .../data/Github/out_d_rep/.DS_Store | Bin 0 -> 6148 bytes .../Github/out_d_rep/samplemodel62.githubmodel | 38 + .../SocialNetwork_plugin/debug/errors.txt | 22 +- .../SocialNetwork_plugin/ecore.vsconfig | 16 +- .../SocialNetwork_plugin/github.vsconfig | 212 ++++ .../SocialNetwork_plugin/inputs/.gitignore | 4 - .../SocialNetwork_plugin/inputs/ecore.xmi | 5 + .../SocialNetwork_plugin/inputs/github.xmi | 3 + .../SocialNetwork_plugin/inputs/start.xmi | 2 + .../SocialNetwork_plugin/output.txt | 9 - .../SocialNetwork_plugin/plugin.xml | 9 +- .../src-gen/queries/Ecore.java | 11 - .../src-gen/queries/MoreThenFiveSuperTypes.java | 611 ------------ .../SocialNetwork_plugin/statistics/Ecore/100.csv | 22 + .../SocialNetwork_plugin/statistics/Ecore/30.csv | 22 + .../SocialNetwork_plugin/statistics/Ecore/50.csv | 22 + .../SocialNetwork_plugin/statistics/Ecore/80.csv | 22 + .../statistics/Ecore/warmup.csv | 7 + .../SocialNetwork_plugin/statistics/Github/30.csv | 22 + .../SocialNetwork_plugin/statistics/Github/50.csv | 22 + .../SocialNetwork_plugin/statistics/Github/80.csv | 22 + .../statistics/Github/warmup.csv | 7 + .../statistics/Yakindu/100.csv | 22 + .../statistics/Yakindu/120.csv | 22 + .../statistics/Yakindu/140.csv | 22 + .../SocialNetwork_plugin/statistics/Yakindu/30.csv | 22 + .../SocialNetwork_plugin/statistics/Yakindu/50.csv | 22 + .../SocialNetwork_plugin/statistics/Yakindu/80.csv | 22 + .../statistics/Yakindu/warmup.csv | 7 + .../SocialNetwork_plugin/statistics/file.csv | 4 + .../yakinduGeneration.vsconfig | 85 +- .../.settings/org.eclipse.wst.validation.prefs | 10 + .../META-INF/MANIFEST.MF | 3 +- .../ecore/LoopInInheritenceConstraint0.java | 79 ++ .../ecore/MoreThenFiveSuperTypesConstraint0.java | 79 -- .../ecore/NonSymmetricOppositeConstraint0.java | 80 ++ .../ecore/OppositeDifferentClassConstraint0.java | 79 ++ .../constraints/ecore/Ecore_pattern.java | 53 - .../constraints/ecore/MoreThenFiveSuperTypes.java | 621 ------------ .../ecore.ecore | 1016 +++++++++++++++++++ .../realistic/metrics/calculator/app/Main.xtend | 7 +- .../app/PartialInterpretationMetricDistance.xtend | 8 +- .../metrics/calculator/graph/GraphStatistic.xtend | 4 + .../metrics/calculator/io/GraphReader.xtend | 3 +- .../metrics/calculator/io/RepMetricsReader.xtend | 10 +- .../metrics/TypedClusteringCoefficientMetric.xtend | 23 +- .../calculator/validation/ViolationCheck.xtend | 4 +- .../Measurements/Measurement1/output/ecore/MPC.png | Bin 101380 -> 93189 bytes .../Measurement1/output/ecore/Node_Activity.png | Bin 97842 -> 51128 bytes .../Measurement1/output/ecore/Node_Type.png | Bin 91286 -> 43395 bytes .../Measurement1/output/ecore/Out_Degree.png | Bin 99473 -> 52053 bytes .../Measurement1/output/ecore/Violations.png | Bin 79974 -> 79997 bytes .../Measurement1/output/github/MPC.png | Bin 0 -> 76528 bytes .../Measurement1/output/github/Node_Activity.png | Bin 0 -> 33237 bytes .../Measurement1/output/github/Node_Type.png | Bin 0 -> 30670 bytes .../Measurement1/output/github/Out_Degree.png | Bin 0 -> 28214 bytes .../Measurement1/output/github/Violations.png | Bin 0 -> 93823 bytes .../Measurement1/output/yakindumm/MPC.png | Bin 249645 -> 81940 bytes .../output/yakindumm/Node_Activity.png | Bin 247153 -> 41978 bytes .../Measurement1/output/yakindumm/Node_Type.png | Bin 239303 -> 47047 bytes .../Measurement1/output/yakindumm/Out_Degree.png | Bin 240635 -> 53711 bytes .../Measurement1/output/yakindumm/Violations.png | Bin 125245 -> 111887 bytes .../Measurements/Measurement1/src/BoxPlot.ipynb | 69 +- .../output/ecore/Hum-All-Rand-GS-Real-Med-/MPC.png | Bin 0 -> 260244 bytes .../Hum-All-Rand-GS-Real-Med-/MPC_lengend.png | Bin 0 -> 284435 bytes .../Hum-All-Rand-GS-Real-Med-/Node_Activity.png | Bin 0 -> 240919 bytes .../Node_Activity_lengend.png | Bin 0 -> 267128 bytes .../ecore/Hum-All-Rand-GS-Real-Med-/Node_Types.png | Bin 0 -> 259504 bytes .../Node_Types_lengend.png | Bin 0 -> 283224 bytes .../ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree.png | Bin 0 -> 249861 bytes .../Out_Degree_lengend.png | Bin 0 -> 276261 bytes .../github/Hum-All-Rand-GS-Real-Med-/MPC.png | Bin 0 -> 250477 bytes .../Hum-All-Rand-GS-Real-Med-/MPC_lengend.png | Bin 0 -> 275605 bytes .../Hum-All-Rand-GS-Real-Med-/Node_Activity.png | Bin 0 -> 213651 bytes .../Node_Activity_lengend.png | Bin 0 -> 220028 bytes .../Hum-All-Rand-GS-Real-Med-/Node_Types.png | Bin 0 -> 259490 bytes .../Node_Types_lengend.png | Bin 0 -> 279286 bytes .../Hum-All-Rand-GS-Real-Med-/Out_Degree.png | Bin 0 -> 245269 bytes .../Out_Degree_lengend.png | Bin 0 -> 264147 bytes .../model comparison/output/test/Hum-/TCC.png | Bin 0 -> 212431 bytes .../output/test/Hum-/TCC_lengend.png | Bin 0 -> 218167 bytes .../output/test/Hum-Rand-GS-Real-/TCC.png | Bin 0 -> 167662 bytes .../output/test/Hum-Rand-GS-Real-/TCC_lengend.png | Bin 0 -> 187842 bytes .../model comparison/output/test/Hum-Real-/TCC.png | Bin 0 -> 132637 bytes .../output/test/Hum-Real-/TCC_lengend.png | Bin 0 -> 141912 bytes .../yakindu/Hum-All-Rand-GS-Real-Med-/MPC.png | Bin 0 -> 255461 bytes .../Hum-All-Rand-GS-Real-Med-/MPC_lengend.png | Bin 0 -> 269454 bytes .../Hum-All-Rand-GS-Real-Med-/Node_Activity.png | Bin 0 -> 206259 bytes .../Node_Activity_lengend.png | Bin 0 -> 235800 bytes .../Hum-All-Rand-GS-Real-Med-/Node_Types.png | Bin 0 -> 225675 bytes .../Node_Types_lengend.png | Bin 0 -> 230053 bytes .../Hum-All-Rand-GS-Real-Med-/Out_Degree.png | Bin 0 -> 198476 bytes .../Out_Degree_lengend.png | Bin 0 -> 226169 bytes .../MPC.png | Bin 230048 -> 0 bytes .../MPC_lengend.png | Bin 277011 -> 0 bytes .../Node Types.png | Bin 238149 -> 0 bytes .../Node Types_lengend.png | Bin 259399 -> 0 bytes .../Node_Activity.png | Bin 195069 -> 0 bytes .../Node_Activity_lengend.png | Bin 238599 -> 0 bytes .../Out_Degree.png | Bin 212885 -> 0 bytes .../Out_Degree_lengend.png | Bin 237793 -> 0 bytes .../model comparison/src/plot_ks_stats.py | 59 +- .../metrics_plot/utils/GraphType.py | 8 + .../metrics_plot/utils/constants.py | 3 + .../metrics_plot/utils/readCSV.py | 6 + 115 files changed, 3279 insertions(+), 1493 deletions(-) create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/Measurement_Runner.launch create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/.DS_Store create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/mpc_rep/2samplemodel41.githubmodel create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/.DS_Store create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/2samplemodel65.githubmodel create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/.DS_Store create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/samplemodel62.githubmodel create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/github.vsconfig delete mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/.gitignore create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/ecore.xmi create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/github.xmi create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/start.xmi delete mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/output.txt delete mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/MoreThenFiveSuperTypes.java create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/100.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/30.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/50.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/80.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/warmup.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/30.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/50.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/80.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/warmup.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/100.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/120.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/140.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/30.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/50.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/80.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/warmup.csv create mode 100644 Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/file.csv create mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.settings/org.eclipse.wst.validation.prefs create mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/LoopInInheritenceConstraint0.java delete mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/MoreThenFiveSuperTypesConstraint0.java create mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/NonSymmetricOppositeConstraint0.java create mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/OppositeDifferentClassConstraint0.java delete mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/ecore/Ecore_pattern.java delete mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/ecore/MoreThenFiveSuperTypes.java create mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/ecore.ecore create mode 100644 Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/MPC.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Node_Activity.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Node_Type.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Out_Degree.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Violations.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/MPC.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Activity.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Types.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/MPC.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Activity.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Types.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Out_Degree.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-/TCC.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-/TCC_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Rand-GS-Real-/TCC.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Rand-GS-Real-/TCC_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Real-/TCC.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Real-/TCC_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/MPC.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Activity.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Types.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Out_Degree.png create mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png delete mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/MPC.png delete mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/MPC_lengend.png delete mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node Types.png delete mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node Types_lengend.png delete mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node_Activity.png delete mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node_Activity_lengend.png delete mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Out_Degree.png delete mode 100644 Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Out_Degree_lengend.png (limited to 'Metrics') diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF b/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF index 833b6fd8..6317c9fb 100644 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/META-INF/MANIFEST.MF @@ -25,8 +25,8 @@ Require-Bundle: org.eclipse.viatra.query.runtime.rete, org.junit;bundle-version="4.12.0", org.eclipse.collections;bundle-version="9.2.0", hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph;bundle-version="1.0.0", - ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator;bundle-version="1.0.0", - hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.validation;bundle-version="0.0.1" + hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.validation;bundle-version="0.0.1", + ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Main-Class: ca.mcgill.ecse.socialnetwork.runner.Main diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/Measurement_Runner.launch b/Metrics/Metrics-Calculation/SocialNetwork_plugin/Measurement_Runner.launch new file mode 100644 index 00000000..968580f5 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/Measurement_Runner.launch @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore index 464c03f5..25056e9e 100644 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/.gitignore @@ -1,10 +1,2 @@ /ca/ -/constraints/ -/ecore.ecore -/ecore/ /queries/ -/socialnetwork.aird -/socialnetwork.ecore -/socialnetwork.genmodel -/socialnetwork/ -/statistics/ diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore new file mode 100644 index 00000000..c42ca056 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/constraints/ecore/.gitignore @@ -0,0 +1,8 @@ +/.Ecore_pattern.java._trace +/.MoreThenFiveSuperTypes.java._trace +/.DirectSupertype.java._trace +/.Ecore.java._trace +/.LoopInInheritence.java._trace +/.NonSymmetricOpposite.java._trace +/.Opposite.java._trace +/.OppositeDifferentClass.java._trace diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore new file mode 100644 index 00000000..eaaf3d11 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore.ecore @@ -0,0 +1,1023 @@ + + + + +
+
+ + +
+ + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+
+ + +
+ + + +
+
+ + + + +
+
+ + + + + +
+
+ + + + +
+
+ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+ + + + +
+
+ + + + +
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + + + +
+
+ + +
+ + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + + +
+
+ + +
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
+ + + +
+
+ + + + + +
+ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+ + + + + +
+
+ + +
+ + + + + + + + + + + + +
+
+ + + + + +
+ + + + +
+
+ + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+
+ + + + + + + + + + + + + + +
+
+ + + + + +
+ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+ + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + +
+ + + + +
+
+ + + + +
+ + + + +
+ + + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+ + + + + + +
+
+ + + + + + +
+
+ + + + + +
+
+ + +
+ + + +
+
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+ + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
+ + +
+ + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+
+ + + + + +
+
+ + +
+ + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + +
+ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + +
+
+ + + + +
+
+ + + + + +
+
+ + +
+ + + + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + +
+ + + + + +
+
+ + +
+ + + +
+
+ + +
+
+ + + + +
+
+ + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + +
+
+ + + +
+
+ + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore new file mode 100644 index 00000000..c42ca056 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/bin/ecore/.gitignore @@ -0,0 +1,8 @@ +/.Ecore_pattern.java._trace +/.MoreThenFiveSuperTypes.java._trace +/.DirectSupertype.java._trace +/.Ecore.java._trace +/.LoopInInheritence.java._trace +/.NonSymmetricOpposite.java._trace +/.Opposite.java._trace +/.OppositeDifferentClass.java._trace diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/.DS_Store b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/.DS_Store new file mode 100644 index 00000000..85929cb0 Binary files /dev/null and b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/.DS_Store differ diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/mpc_rep/2samplemodel41.githubmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/mpc_rep/2samplemodel41.githubmodel new file mode 100644 index 00000000..f4a3233c --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/mpc_rep/2samplemodel41.githubmodel @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/.DS_Store b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/.DS_Store differ diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/2samplemodel65.githubmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/2samplemodel65.githubmodel new file mode 100644 index 00000000..c78f0175 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/na_rep/2samplemodel65.githubmodel @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/.DS_Store b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/.DS_Store differ diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/samplemodel62.githubmodel b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/samplemodel62.githubmodel new file mode 100644 index 00000000..c78f0175 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/data/Github/out_d_rep/samplemodel62.githubmodel @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/errors.txt b/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/errors.txt index fb05996a..27d00bd9 100644 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/errors.txt +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/debug/errors.txt @@ -1,15 +1,13 @@ -Error occured (NullPointerException): - hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder.toTypeReference(LogicProblemBuilder.java:302) - hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder.lambda$11(LogicProblemBuilder.java:313) - org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_doubleArrow(ObjectExtensions.java:139) - hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicProblemBuilder.createVar(LogicProblemBuilder.java:315) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformBody(Viatra2Logic.java:335) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQuerySpecification(Viatra2Logic.java:237) - hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:149) - hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338) - hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110) +Error occured (DiagnosticWrappedException): java.io.FileNotFoundException: C:\Users\chenp\eclipse-workspace\VIATRA-Generator\Metrics\Metrics-Calculation\SocialNetwork_plugin\inputs\github.xmi (The system cannot find the file specified) + org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:319) + org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:278) + org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:265) + org.eclipse.xtext.resource.SynchronizedXtextResourceSet.getResource(SynchronizedXtextResourceSet.java:25) + hu.bme.mit.inf.dslreasoner.application.execution.ModelLoader.loadModel(ModelLoader.java:41) + hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:174) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:137) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:346) + hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:115) hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor.executeScript(StandaloneScriptExecutor.java:149) ca.mcgill.ecse.socialnetwork.runner.Main.runWithPath(Main.java:25) ca.mcgill.ecse.socialnetwork.runner.Main.main(Main.java:38) diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig index ff9155a4..e63095e1 100644 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/ecore.vsconfig @@ -1,6 +1,7 @@ import viatra "./queries/queries/Ecore.vql" import epackage "http://www.eclipse.org/emf/2002/Ecore" +// Copy this for different model sizes generate { metamodel = {package ecore excluding{EClassifier.instanceClass, EClassifier.defaultValue, EEnumLiteral.instance, EStructuralFeature.defaultValue, EStructuralFeature.changeable, @@ -27,20 +28,23 @@ generate { solver = ViatraSolver + //median run time scope = { - #node = 100 + #node = 10 // (warm-up: 10) 30, 50, 80, 100, 120 .... } number = 1 - runs = 30 + runs = 5 config = { log-level = none, - "optional-wf" = "true", + runtime = 300, // the runtime is in seconds, want to set is to 5 mins + "optional-wf" = "false", "realistic-guidance" = "Composite", - "allow-must-violations" = "true", + "allow-must-violations" = "false", "domain" = "Ecore" } debug = "debug" - output = "output/Ecore/" -} \ No newline at end of file + statistics = "statistics/Ecore/warmup.csv" //give different set up different filenames + output = "output/Ecore/run_time/" +} diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/github.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/github.vsconfig new file mode 100644 index 00000000..1e1ee05a --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/github.vsconfig @@ -0,0 +1,212 @@ +import epackage "../../../Domains/github-graph/model/github.ecore" +import viatra "../../../Domains/github-graph/queries/queries/github.vql" + +generate { + metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url, + Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at, + IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}} + partial-model = { "inputs/github.xmi"} + constraints = { package queries } + + + solver = ViatraSolver + + scope = { + #node = 10 + } + + number = 1 + runs = 5 + config = { + log-level = none, + runtime = 300, + "optional-wf" = "true", + "realistic-guidance" = "Composite", + "allow-must-violations" = "true", + "domain" = "Github" + } + + debug = "debug" + statistics = "statistics/Github/warmup.csv" + output = "output/Github/Composite" +} + +generate { + metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url, + Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at, + IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}} + partial-model = { "inputs/github.xmi"} + constraints = { package queries } + + + solver = ViatraSolver + + scope = { + #node = 30 + } + + number = 1 + runs = 20 + config = { + log-level = none, + runtime = 300, + "optional-wf" = "true", + "realistic-guidance" = "Composite", + "allow-must-violations" = "true", + "domain" = "Github" + } + + debug = "debug" + statistics = "statistics/Github/30.csv" + output = "output/Github/Composite" +} + +generate { + metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url, + Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at, + IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}} + partial-model = { "inputs/github.xmi"} + constraints = { package queries } + + + solver = ViatraSolver + + scope = { + #node = 50 + } + + number = 1 + runs = 20 + config = { + log-level = none, + runtime = 300, + "optional-wf" = "true", + "realistic-guidance" = "Composite", + "allow-must-violations" = "true", + "domain" = "Github" + } + + debug = "debug" + statistics = "statistics/Github/50.csv" + output = "output/Github/Composite" +} + +generate { + metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url, + Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at, + IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}} + partial-model = { "inputs/github.xmi"} + constraints = { package queries } + + + solver = ViatraSolver + + scope = { + #node = 80 + } + + number = 1 + runs = 20 + config = { + log-level = none, + runtime = 300, + "optional-wf" = "true", + "realistic-guidance" = "Composite", + "allow-must-violations" = "true", + "domain" = "Github" + } + + debug = "debug" + statistics = "statistics/Github/80.csv" + output = "output/Github/Composite" +} + +generate { + metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url, + Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at, + IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}} + partial-model = { "inputs/github.xmi"} + constraints = { package queries } + + + solver = ViatraSolver + + scope = { + #node = 100 + } + + number = 1 + runs = 20 + config = { + log-level = none, + runtime = 300, + "optional-wf" = "true", + "realistic-guidance" = "Composite", + "allow-must-violations" = "true", + "domain" = "Github" + } + + debug = "debug" + statistics = "statistics/Github/100.csv" + output = "output/Github/Composite" +} + +generate { + metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url, + Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at, + IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}} + partial-model = { "inputs/github.xmi"} + constraints = { package queries } + + + solver = ViatraSolver + + scope = { + #node = 120 + } + + number = 1 + runs = 20 + config = { + log-level = none, + runtime = 300, + "optional-wf" = "true", + "realistic-guidance" = "Composite", + "allow-must-violations" = "true", + "domain" = "Github" + } + + debug = "debug" + statistics = "statistics/Github/120.csv" + output = "output/Github/Composite" +} + +generate { + metamodel = {package github excluding{ Project.creatd_at, Project.updated_at, Project.url, User.name, User.url, + Commit.created_at, Commit.sha, Commit.parents_sha, Issue.created_at, Issue.url, PullRequest.url, IssueEvent.created_at, + IssueEvent.actor_url, Action, IssueEvent.action, Project.deleted}} + partial-model = { "inputs/github.xmi"} + constraints = { package queries } + + + solver = ViatraSolver + + scope = { + #node = 140 + } + + number = 1 + runs = 20 + config = { + log-level = none, + runtime = 300, + "optional-wf" = "true", + "realistic-guidance" = "Composite", + "allow-must-violations" = "true", + "domain" = "Github" + } + + debug = "debug" + statistics = "statistics/Github/140.csv" + output = "output/Github/Composite" +} \ No newline at end of file diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/.gitignore b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/.gitignore deleted file mode 100644 index 17126b28..00000000 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# ignore everything in this folder except for this folder it self - -* -!.gitignore \ No newline at end of file diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/ecore.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/ecore.xmi new file mode 100644 index 00000000..c5721309 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/ecore.xmi @@ -0,0 +1,5 @@ + + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/github.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/github.xmi new file mode 100644 index 00000000..ad497607 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/github.xmi @@ -0,0 +1,3 @@ + + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/start.xmi b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/start.xmi new file mode 100644 index 00000000..f9a2a185 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/inputs/start.xmi @@ -0,0 +1,2 @@ + + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/output.txt b/Metrics/Metrics-Calculation/SocialNetwork_plugin/output.txt deleted file mode 100644 index f027494d..00000000 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/output.txt +++ /dev/null @@ -1,9 +0,0 @@ -1 -3 -1 -3 -3 -5 -3 -1 -2 diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml b/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml index 269d4b7b..86211808 100644 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/plugin.xml @@ -4,6 +4,14 @@ + + + + + + + + @@ -12,7 +20,6 @@ - diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore.java index ebafb74b..adfa5cf8 100644 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore.java +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/Ecore.java @@ -7,7 +7,6 @@ import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup; import queries.DirectSupertype; import queries.LoopInInheritence; -import queries.MoreThenFiveSuperTypes; import queries.NonSymmetricOpposite; import queries.Opposite; import queries.OppositeDifferentClass; @@ -27,7 +26,6 @@ import queries.SuperTypes; *
  • oppositeDifferentClass
  • *
  • nonSymmetricOpposite
  • *
  • superTypes
  • - *
  • moreThenFiveSuperTypes
  • * * * @see IQueryGroup @@ -58,7 +56,6 @@ public final class Ecore extends BaseGeneratedPatternGroup { querySpecifications.add(OppositeDifferentClass.instance()); querySpecifications.add(NonSymmetricOpposite.instance()); querySpecifications.add(SuperTypes.instance()); - querySpecifications.add(MoreThenFiveSuperTypes.instance()); } public DirectSupertype getDirectSupertype() { @@ -108,12 +105,4 @@ public final class Ecore extends BaseGeneratedPatternGroup { public SuperTypes.Matcher getSuperTypes(final ViatraQueryEngine engine) { return SuperTypes.Matcher.on(engine); } - - public MoreThenFiveSuperTypes getMoreThenFiveSuperTypes() { - return MoreThenFiveSuperTypes.instance(); - } - - public MoreThenFiveSuperTypes.Matcher getMoreThenFiveSuperTypes(final ViatraQueryEngine engine) { - return MoreThenFiveSuperTypes.Matcher.on(engine); - } } diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/MoreThenFiveSuperTypes.java b/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/MoreThenFiveSuperTypes.java deleted file mode 100644 index 867ffd01..00000000 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/src-gen/queries/MoreThenFiveSuperTypes.java +++ /dev/null @@ -1,611 +0,0 @@ -/** - * Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.vql - */ -package queries; - -import java.util.Arrays; -import java.util.Collection; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.function.Consumer; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import org.apache.log4j.Logger; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.viatra.query.runtime.api.IPatternMatch; -import org.eclipse.viatra.query.runtime.api.IQuerySpecification; -import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; -import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; -import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; -import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; -import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; -import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; -import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; -import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; -import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; -import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; -import queries.SuperTypes; - -/** - * A pattern-specific query specification that can instantiate Matcher in a type-safe way. - * - *

    Original source: - *

    - *         {@literal @}Constraint(severity="error", message="error", key = {c})
    - *         pattern moreThenFiveSuperTypes(c: EClass){
    - *         	find superTypes(c1, s1);
    - *         	find superTypes(c1, s2);
    - *         	find superTypes(c1, s3);
    - *         	find superTypes(c1, s4);
    - *         	find superTypes(c1, s5);
    - *         	s1 != s2;
    - *         	s1 != s3;
    - *         	s1 != s4;
    - *         	s1 != s5;
    - *         	s2 != s3;
    - *         	s2 != s4;
    - *         	s2 != s5;
    - *         	s3 != s4;
    - *         	s3 != s5;
    - *         	s4 != s5;
    - *         }
    - * 
    - * - * @see Matcher - * @see Match - * - */ -@SuppressWarnings("all") -public final class MoreThenFiveSuperTypes extends BaseGeneratedEMFQuerySpecification { - /** - * Pattern-specific match representation of the queries.moreThenFiveSuperTypes pattern, - * to be used in conjunction with {@link Matcher}. - * - *

    Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. - * Each instance is a (possibly partial) substitution of pattern parameters, - * usable to represent a match of the pattern in the result of a query, - * or to specify the bound (fixed) input parameters when issuing a query. - * - * @see Matcher - * - */ - public static abstract class Match extends BasePatternMatch { - private EClass fC; - - private static List parameterNames = makeImmutableList("c"); - - private Match(final EClass pC) { - this.fC = pC; - } - - @Override - public Object get(final String parameterName) { - if ("c".equals(parameterName)) return this.fC; - return null; - } - - public EClass getC() { - return this.fC; - } - - @Override - public boolean set(final String parameterName, final Object newValue) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - if ("c".equals(parameterName) ) { - this.fC = (EClass) newValue; - return true; - } - return false; - } - - public void setC(final EClass pC) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fC = pC; - } - - @Override - public String patternName() { - return "queries.moreThenFiveSuperTypes"; - } - - @Override - public List parameterNames() { - return MoreThenFiveSuperTypes.Match.parameterNames; - } - - @Override - public Object[] toArray() { - return new Object[]{fC}; - } - - @Override - public MoreThenFiveSuperTypes.Match toImmutable() { - return isMutable() ? newMatch(fC) : this; - } - - @Override - public String prettyPrint() { - StringBuilder result = new StringBuilder(); - result.append("\"c\"=" + prettyPrintValue(fC)); - return result.toString(); - } - - @Override - public int hashCode() { - return Objects.hash(fC); - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) { - return false; - } - if ((obj instanceof MoreThenFiveSuperTypes.Match)) { - MoreThenFiveSuperTypes.Match other = (MoreThenFiveSuperTypes.Match) obj; - return Objects.equals(fC, other.fC); - } else { - // this should be infrequent - if (!(obj instanceof IPatternMatch)) { - return false; - } - IPatternMatch otherSig = (IPatternMatch) obj; - return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); - } - } - - @Override - public MoreThenFiveSuperTypes specification() { - return MoreThenFiveSuperTypes.instance(); - } - - /** - * Returns an empty, mutable match. - * Fields of the mutable match can be filled to create a partial match, usable as matcher input. - * - * @return the empty match. - * - */ - public static MoreThenFiveSuperTypes.Match newEmptyMatch() { - return new Mutable(null); - } - - /** - * Returns a mutable (partial) match. - * Fields of the mutable match can be filled to create a partial match, usable as matcher input. - * - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return the new, mutable (partial) match object. - * - */ - public static MoreThenFiveSuperTypes.Match newMutableMatch(final EClass pC) { - return new Mutable(pC); - } - - /** - * Returns a new (partial) match. - * This can be used e.g. to call the matcher with a partial match. - *

    The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return the (partial) match object. - * - */ - public static MoreThenFiveSuperTypes.Match newMatch(final EClass pC) { - return new Immutable(pC); - } - - private static final class Mutable extends MoreThenFiveSuperTypes.Match { - Mutable(final EClass pC) { - super(pC); - } - - @Override - public boolean isMutable() { - return true; - } - } - - private static final class Immutable extends MoreThenFiveSuperTypes.Match { - Immutable(final EClass pC) { - super(pC); - } - - @Override - public boolean isMutable() { - return false; - } - } - } - - /** - * Generated pattern matcher API of the queries.moreThenFiveSuperTypes pattern, - * providing pattern-specific query methods. - * - *

    Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, - * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. - * - *

    Matches of the pattern will be represented as {@link Match}. - * - *

    Original source: - *

    -   * {@literal @}Constraint(severity="error", message="error", key = {c})
    -   * pattern moreThenFiveSuperTypes(c: EClass){
    -   * 	find superTypes(c1, s1);
    -   * 	find superTypes(c1, s2);
    -   * 	find superTypes(c1, s3);
    -   * 	find superTypes(c1, s4);
    -   * 	find superTypes(c1, s5);
    -   * 	s1 != s2;
    -   * 	s1 != s3;
    -   * 	s1 != s4;
    -   * 	s1 != s5;
    -   * 	s2 != s3;
    -   * 	s2 != s4;
    -   * 	s2 != s5;
    -   * 	s3 != s4;
    -   * 	s3 != s5;
    -   * 	s4 != s5;
    -   * }
    -   * 
    - * - * @see Match - * @see MoreThenFiveSuperTypes - * - */ - public static class Matcher extends BaseMatcher { - /** - * Initializes the pattern matcher within an existing VIATRA Query engine. - * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. - * - * @param engine the existing VIATRA Query engine in which this matcher will be created. - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * - */ - public static MoreThenFiveSuperTypes.Matcher on(final ViatraQueryEngine engine) { - // check if matcher already exists - Matcher matcher = engine.getExistingMatcher(querySpecification()); - if (matcher == null) { - matcher = (Matcher)engine.getMatcher(querySpecification()); - } - return matcher; - } - - /** - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * @return an initialized matcher - * @noreference This method is for internal matcher initialization by the framework, do not call it manually. - * - */ - public static MoreThenFiveSuperTypes.Matcher create() { - return new Matcher(); - } - - private static final int POSITION_C = 0; - - private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(MoreThenFiveSuperTypes.Matcher.class); - - /** - * Initializes the pattern matcher within an existing VIATRA Query engine. - * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. - * - * @param engine the existing VIATRA Query engine in which this matcher will be created. - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * - */ - private Matcher() { - super(querySpecification()); - } - - /** - * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return matches represented as a Match object. - * - */ - public Collection getAllMatches(final EClass pC) { - return rawStreamAllMatches(new Object[]{pC}).collect(Collectors.toSet()); - } - - /** - * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. - *

    - * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return a stream of matches represented as a Match object. - * - */ - public Stream streamAllMatches(final EClass pC) { - return rawStreamAllMatches(new Object[]{pC}); - } - - /** - * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. - * Neither determinism nor randomness of selection is guaranteed. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return a match represented as a Match object, or null if no match is found. - * - */ - public Optional getOneArbitraryMatch(final EClass pC) { - return rawGetOneArbitraryMatch(new Object[]{pC}); - } - - /** - * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, - * under any possible substitution of the unspecified parameters (if any). - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return true if the input is a valid (partial) match of the pattern. - * - */ - public boolean hasMatch(final EClass pC) { - return rawHasMatch(new Object[]{pC}); - } - - /** - * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return the number of pattern matches found. - * - */ - public int countMatches(final EClass pC) { - return rawCountMatches(new Object[]{pC}); - } - - /** - * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. - * Neither determinism nor randomness of selection is guaranteed. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param processor the action that will process the selected match. - * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked - * - */ - public boolean forOneArbitraryMatch(final EClass pC, final Consumer processor) { - return rawForOneArbitraryMatch(new Object[]{pC}, processor); - } - - /** - * Returns a new (partial) match. - * This can be used e.g. to call the matcher with a partial match. - *

    The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return the (partial) match object. - * - */ - public MoreThenFiveSuperTypes.Match newMatch(final EClass pC) { - return MoreThenFiveSuperTypes.Match.newMatch(pC); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - protected Stream rawStreamAllValuesOfc(final Object[] parameters) { - return rawStreamAllValues(POSITION_C, parameters).map(EClass.class::cast); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfc() { - return rawStreamAllValuesOfc(emptyArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfc() { - return rawStreamAllValuesOfc(emptyArray()); - } - - @Override - protected MoreThenFiveSuperTypes.Match tupleToMatch(final Tuple t) { - try { - return MoreThenFiveSuperTypes.Match.newMatch((EClass) t.get(POSITION_C)); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in tuple not properly typed!",e); - return null; - } - } - - @Override - protected MoreThenFiveSuperTypes.Match arrayToMatch(final Object[] match) { - try { - return MoreThenFiveSuperTypes.Match.newMatch((EClass) match[POSITION_C]); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in array not properly typed!",e); - return null; - } - } - - @Override - protected MoreThenFiveSuperTypes.Match arrayToMatchMutable(final Object[] match) { - try { - return MoreThenFiveSuperTypes.Match.newMutableMatch((EClass) match[POSITION_C]); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in array not properly typed!",e); - return null; - } - } - - /** - * @return the singleton instance of the query specification of this pattern - * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded - * - */ - public static IQuerySpecification querySpecification() { - return MoreThenFiveSuperTypes.instance(); - } - } - - private MoreThenFiveSuperTypes() { - super(GeneratedPQuery.INSTANCE); - } - - /** - * @return the singleton instance of the query specification - * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded - * - */ - public static MoreThenFiveSuperTypes instance() { - try{ - return LazyHolder.INSTANCE; - } catch (ExceptionInInitializerError err) { - throw processInitializerError(err); - } - } - - @Override - protected MoreThenFiveSuperTypes.Matcher instantiate(final ViatraQueryEngine engine) { - return MoreThenFiveSuperTypes.Matcher.on(engine); - } - - @Override - public MoreThenFiveSuperTypes.Matcher instantiate() { - return MoreThenFiveSuperTypes.Matcher.create(); - } - - @Override - public MoreThenFiveSuperTypes.Match newEmptyMatch() { - return MoreThenFiveSuperTypes.Match.newEmptyMatch(); - } - - @Override - public MoreThenFiveSuperTypes.Match newMatch(final Object... parameters) { - return MoreThenFiveSuperTypes.Match.newMatch((org.eclipse.emf.ecore.EClass) parameters[0]); - } - - /** - * Inner class allowing the singleton instance of {@link JvmGenericType: queries.MoreThenFiveSuperTypes (visibility: PUBLIC, simpleName: MoreThenFiveSuperTypes, identifier: queries.MoreThenFiveSuperTypes, deprecated: ) (abstract: false, static: false, final: true, packageName: queries) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created - * not at the class load time of the outer class, - * but rather at the first call to {@link JvmGenericType: queries.MoreThenFiveSuperTypes (visibility: PUBLIC, simpleName: MoreThenFiveSuperTypes, identifier: queries.MoreThenFiveSuperTypes, deprecated: ) (abstract: false, static: false, final: true, packageName: queries) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}. - * - *

    This workaround is required e.g. to support recursion. - * - */ - private static class LazyHolder { - private static final MoreThenFiveSuperTypes INSTANCE = new MoreThenFiveSuperTypes(); - - /** - * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. - * This initialization order is required to support indirect recursion. - * - *

    The static initializer is defined using a helper field to work around limitations of the code generator. - * - */ - private static final Object STATIC_INITIALIZER = ensureInitialized(); - - public static Object ensureInitialized() { - INSTANCE.ensureInitializedInternal(); - return null; - } - } - - private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { - private static final MoreThenFiveSuperTypes.GeneratedPQuery INSTANCE = new GeneratedPQuery(); - - private final PParameter parameter_c = new PParameter("c", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT); - - private final List parameters = Arrays.asList(parameter_c); - - private GeneratedPQuery() { - super(PVisibility.PUBLIC); - } - - @Override - public String getFullyQualifiedName() { - return "queries.moreThenFiveSuperTypes"; - } - - @Override - public List getParameterNames() { - return Arrays.asList("c"); - } - - @Override - public List getParameters() { - return parameters; - } - - @Override - public Set doGetContainedBodies() { - setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); - Set bodies = new LinkedHashSet<>(); - { - PBody body = new PBody(this); - PVariable var_c = body.getOrCreateVariableByName("c"); - PVariable var_c1 = body.getOrCreateVariableByName("c1"); - PVariable var_s1 = body.getOrCreateVariableByName("s1"); - PVariable var_s2 = body.getOrCreateVariableByName("s2"); - PVariable var_s3 = body.getOrCreateVariableByName("s3"); - PVariable var_s4 = body.getOrCreateVariableByName("s4"); - PVariable var_s5 = body.getOrCreateVariableByName("s5"); - new TypeConstraint(body, Tuples.flatTupleOf(var_c), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass"))); - body.setSymbolicParameters(Arrays.asList( - new ExportedParameter(body, var_c, parameter_c) - )); - // find superTypes(c1, s1) - new PositivePatternCall(body, Tuples.flatTupleOf(var_c1, var_s1), SuperTypes.instance().getInternalQueryRepresentation()); - // find superTypes(c1, s2) - new PositivePatternCall(body, Tuples.flatTupleOf(var_c1, var_s2), SuperTypes.instance().getInternalQueryRepresentation()); - // find superTypes(c1, s3) - new PositivePatternCall(body, Tuples.flatTupleOf(var_c1, var_s3), SuperTypes.instance().getInternalQueryRepresentation()); - // find superTypes(c1, s4) - new PositivePatternCall(body, Tuples.flatTupleOf(var_c1, var_s4), SuperTypes.instance().getInternalQueryRepresentation()); - // find superTypes(c1, s5) - new PositivePatternCall(body, Tuples.flatTupleOf(var_c1, var_s5), SuperTypes.instance().getInternalQueryRepresentation()); - // s1 != s2 - new Inequality(body, var_s1, var_s2); - // s1 != s3 - new Inequality(body, var_s1, var_s3); - // s1 != s4 - new Inequality(body, var_s1, var_s4); - // s1 != s5 - new Inequality(body, var_s1, var_s5); - // s2 != s3 - new Inequality(body, var_s2, var_s3); - // s2 != s4 - new Inequality(body, var_s2, var_s4); - // s2 != s5 - new Inequality(body, var_s2, var_s5); - // s3 != s4 - new Inequality(body, var_s3, var_s4); - // s3 != s5 - new Inequality(body, var_s3, var_s5); - // s4 != s5 - new Inequality(body, var_s4, var_s5); - bodies.add(body); - } - { - PAnnotation annotation = new PAnnotation("Constraint"); - annotation.addAttribute("severity", "error"); - annotation.addAttribute("message", "error"); - annotation.addAttribute("key", Arrays.asList(new Object[] { - new ParameterReference("c") - })); - addAnnotation(annotation); - } - return bodies; - } - } -} diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/100.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/100.csv new file mode 100644 index 00000000..fd1af09c --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/100.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,_Solution0FoundAt +5,1,InsuficientResourcesResultImpl,26,1815,305292,1000,16140,15,12210,260570,0,0, +5,2,InsuficientResourcesResultImpl,26,1237,301846,700,14659,0,12249,259139,0,0, +5,3,InsuficientResourcesResultImpl,26,1218,301687,600,15765,0,12876,256432,0,0, +5,4,InsuficientResourcesResultImpl,26,1294,302248,800,18015,0,11131,255608,0,0, +5,5,InsuficientResourcesResultImpl,26,1290,300894,900,14893,0,11118,259377,0,0, +5,6,InsuficientResourcesResultImpl,26,1184,302351,900,16463,0,11499,258946,0,0, +5,7,ModelResultImpl,26,1180,289935,35396400,17823,0,14375,240465,0,4,287519 +5,8,InsuficientResourcesResultImpl,26,1298,304757,700,12762,0,10686,266461,0,0, +5,9,ModelResultImpl,26,1166,287620,35860800,17055,0,15050,237850,0,1,285304 +5,10,ModelResultImpl,26,1185,168322,32789700,15059,0,9955,132727,0,0,166044 +5,11,InsuficientResourcesResultImpl,26,1176,302293,900,12773,0,10338,264930,0,0, +5,12,InsuficientResourcesResultImpl,26,1200,300206,600,14139,0,11334,260462,0,0, +5,13,InsuficientResourcesResultImpl,26,1199,305554,500,12939,0,11144,266919,0,0, +5,14,InsuficientResourcesResultImpl,26,1193,300864,700,18895,0,14266,250111,0,0, +5,15,InsuficientResourcesResultImpl,26,1197,303894,700,14501,0,12313,262474,0,0, +5,16,InsuficientResourcesResultImpl,26,1171,303003,700,13178,0,11827,263585,0,0, +5,17,InsuficientResourcesResultImpl,26,1169,305501,600,13479,0,11788,265540,0,0, +5,18,InsuficientResourcesResultImpl,26,1175,301967,700,13531,0,11415,262420,0,0, +5,19,InsuficientResourcesResultImpl,26,1274,300241,800,13254,0,11607,260895,0,0, +5,20,ModelResultImpl,26,1166,269530,42362900,17007,0,13440,223316,0,1,267245 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/30.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/30.csv new file mode 100644 index 00000000..0022e984 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/30.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +2,1,ModelResultImpl,19,1721,35221,15771300,32311,7042,34,1895,16580,0,1 +2,2,ModelResultImpl,19,1610,35749,11651300,32635,6745,1,1736,18895,0,1 +2,3,ModelResultImpl,19,1640,27258,16117300,24303,6429,0,1323,12286,0,1 +2,4,ModelResultImpl,19,1634,35933,20450700,33223,6381,0,1605,20611,0,2 +2,5,ModelResultImpl,19,1612,23612,11651100,19721,6887,0,1099,8730,0,0 +2,6,ModelResultImpl,19,1319,22727,9964000,20364,4974,0,1147,11737,0,0 +2,7,ModelResultImpl,19,1278,22340,12342400,19967,4711,0,1078,11660,0,0 +2,8,ModelResultImpl,19,1292,20551,10731500,18317,4260,0,1007,11070,0,0 +2,9,ModelResultImpl,19,1378,18306,12922900,15874,4176,0,928,8796,0,1 +2,10,ModelResultImpl,19,1330,25726,10084700,23254,6531,0,1345,10615,0,0 +2,11,ModelResultImpl,19,1229,33084,12002300,30734,5309,0,1584,19392,0,0 +2,12,ModelResultImpl,19,1240,24555,9818800,22179,5967,1,1405,10083,0,0 +2,13,ModelResultImpl,19,1264,28275,11451700,25939,5692,0,1395,14547,0,0 +2,14,ModelResultImpl,19,1276,36197,10007300,33900,5461,0,1659,22219,0,0 +2,15,ModelResultImpl,19,1230,30436,9231400,28100,5354,0,1488,16718,0,0 +2,16,ModelResultImpl,19,1217,22614,8885000,20287,6795,0,1371,7299,0,0 +2,17,ModelResultImpl,19,1262,29600,12922400,27253,5298,0,1528,15895,0,0 +2,18,ModelResultImpl,19,1243,28214,10765500,25879,5412,0,1292,15319,0,0 +2,19,ModelResultImpl,19,1299,20845,11064400,18336,5327,0,1048,8903,0,0 +2,20,ModelResultImpl,19,1280,26352,10670800,23901,6709,0,1454,11410,0,1 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/50.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/50.csv new file mode 100644 index 00000000..1ea0ccaf --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/50.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +3,1,ModelResultImpl,7,1300,78258,16468500,75732,13071,7,4896,46003,0,2 +3,2,ModelResultImpl,7,1255,72729,15062600,70201,10011,0,4148,48760,0,0 +3,3,ModelResultImpl,7,1284,85751,18952400,83381,10015,0,4783,59452,0,0 +3,4,ModelResultImpl,7,1312,80702,18255000,78055,9873,0,3766,56886,0,1 +3,5,ModelResultImpl,7,2192,111362,20902300,108184,12705,0,5062,79232,0,0 +3,6,ModelResultImpl,7,1275,88255,20727400,85645,9667,0,3925,64755,0,0 +3,7,ModelResultImpl,7,1228,95312,23184200,92818,9763,0,4466,69648,0,1 +3,8,ModelResultImpl,7,1421,102160,16746000,99564,13923,0,5149,68705,0,1 +3,9,ModelResultImpl,7,1542,74130,15142300,71709,10116,0,4021,50574,0,0 +3,10,ModelResultImpl,7,1370,106586,18544500,103524,11809,0,4614,78092,0,1 +3,11,ModelResultImpl,7,1977,81554,14689300,78988,9059,0,4109,58293,0,1 +3,12,ModelResultImpl,7,1282,80592,17114200,77924,10654,0,4120,55221,0,0 +3,13,ModelResultImpl,7,1470,50749,14006900,47249,7112,0,2464,34560,0,0 +3,14,ModelResultImpl,7,1189,96780,16081900,94561,8346,0,4262,74850,0,0 +3,15,ModelResultImpl,7,1187,104866,17029000,102503,8484,0,4673,81148,0,0 +3,16,ModelResultImpl,7,1192,83407,19208900,81122,8548,0,4154,61175,0,1 +3,17,ModelResultImpl,7,1291,84064,18326300,81220,10675,0,4308,57616,0,0 +3,18,ModelResultImpl,7,1924,92524,20324400,89145,9764,0,4238,66918,0,1 +3,19,ModelResultImpl,7,1284,85575,14840500,82932,10403,0,4104,60536,0,0 +3,20,ModelResultImpl,7,1239,78254,21057200,75918,9173,0,3958,55242,0,0 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/80.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/80.csv new file mode 100644 index 00000000..034a2048 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/80.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +4,1,ModelResultImpl,10,1339,187225,43638100,184585,14565,8,8893,149868,0,0 +4,2,ModelResultImpl,10,1336,258364,34407600,255655,14281,1,9835,217586,0,0 +4,3,InsuficientResourcesResultImpl,10,1321,302464,3900,,14999,0,10218,258608,0,0 +4,4,ModelResultImpl,10,1569,272300,28546600,269342,14187,0,9965,231046,0,0 +4,5,ModelResultImpl,10,1315,244950,39639300,242286,14765,0,10575,202813,0,0 +4,6,ModelResultImpl,10,1223,185629,34348900,183286,14074,0,9227,147910,0,0 +4,7,ModelResultImpl,10,1271,243243,28619100,240866,16030,0,10594,199605,0,1 +4,8,ModelResultImpl,10,1229,247712,31642900,244834,14393,0,9543,207278,0,0 +4,9,ModelResultImpl,10,1284,209619,24479700,207199,18848,0,10225,164689,0,0 +4,10,ModelResultImpl,10,1240,252740,36766100,250104,15959,0,10730,208822,0,1 +4,11,ModelResultImpl,10,1315,192678,27966300,190097,15350,0,9230,152579,0,1 +4,12,ModelResultImpl,10,1767,199644,24666200,195878,16171,0,9709,158015,0,1 +4,13,ModelResultImpl,10,1411,209397,29226100,206486,17127,0,10334,164735,0,0 +4,14,InsuficientResourcesResultImpl,10,1292,300133,800,,13558,0,10569,258303,0,0 +4,15,ModelResultImpl,10,1188,277607,29611300,275175,13898,0,11204,234760,0,0 +4,16,ModelResultImpl,10,1383,257815,41453700,255328,13012,0,10666,216491,0,1 +4,17,ModelResultImpl,10,1335,217424,30586300,214754,15737,0,9889,176416,0,0 +4,18,ModelResultImpl,10,1317,214706,28448000,211898,15332,0,9390,175241,0,1 +4,19,ModelResultImpl,10,1429,235982,26350500,233087,15836,0,10258,192499,0,1 +4,20,InsuficientResourcesResultImpl,10,1150,302957,1100,,16272,0,12639,253942,0,0 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/warmup.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/warmup.csv new file mode 100644 index 00000000..ad791735 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Ecore/warmup.csv @@ -0,0 +1,7 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +1,1,ModelResultImpl,1470,4786,7771,66116800,3921,1682,480,154,550,0,3 +1,2,ModelResultImpl,1470,2113,8817,10699700,5927,1993,3,300,1326,0,1 +1,3,ModelResultImpl,1470,1856,6810,12033700,3907,1602,1,111,692,0,1 +1,4,ModelResultImpl,1470,2441,6387,8147100,3326,1412,2,100,427,0,1 +1,5,ModelResultImpl,1470,1705,6328,8393300,2039,1123,0,56,190,0,1 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/30.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/30.csv new file mode 100644 index 00000000..d1ec723b --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/30.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +2,1,ModelResultImpl,5,753,17109,13399400,16654,1789,9,696,11984,0,0 +2,2,ModelResultImpl,5,628,17801,12301800,17369,1678,0,715,12727,0,0 +2,3,ModelResultImpl,5,610,15430,13989100,14970,1285,0,586,11377,0,0 +2,4,ModelResultImpl,5,803,14781,11475500,14220,1483,0,640,10196,0,0 +2,5,ModelResultImpl,5,581,22641,12669300,22193,1558,0,707,17778,0,0 +2,6,ModelResultImpl,5,611,22649,11553300,22203,1508,0,660,17965,0,0 +2,7,ModelResultImpl,5,548,12438,10128400,12033,1584,0,616,7995,0,0 +2,8,ModelResultImpl,5,655,17624,10593200,17198,1404,0,619,13273,0,0 +2,9,ModelResultImpl,5,596,16946,10102500,16528,1717,0,705,11847,0,0 +2,10,ModelResultImpl,5,537,17896,10038000,17507,1414,0,626,13625,0,0 +2,11,ModelResultImpl,5,535,13771,11741600,13353,1411,0,613,9547,0,0 +2,12,ModelResultImpl,5,531,16728,11768600,16257,1448,0,635,12199,0,0 +2,13,ModelResultImpl,5,549,14647,11546900,14254,1201,0,573,10920,0,0 +2,14,ModelResultImpl,5,552,15942,10918300,15492,1502,0,610,11459,0,0 +2,15,ModelResultImpl,5,563,15196,12483700,14773,1389,0,574,11130,0,0 +2,16,ModelResultImpl,5,566,10267,10445100,9864,1364,0,523,6468,0,0 +2,17,ModelResultImpl,5,600,15595,8099800,15147,1341,0,624,11381,0,0 +2,18,ModelResultImpl,5,561,11172,9144100,10776,1167,0,487,7740,0,0 +2,19,ModelResultImpl,5,548,14818,9372000,14441,1565,0,658,10261,0,0 +2,20,ModelResultImpl,5,559,17497,9881500,17059,1532,0,651,12811,0,0 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/50.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/50.csv new file mode 100644 index 00000000..7ed016e0 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/50.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +4,1,ModelResultImpl,11,730,72467,34401400,71866,4026,10,1998,59824,0,0 +4,2,ModelResultImpl,11,761,67853,11838400,67382,3819,0,1957,55882,0,0 +4,3,ModelResultImpl,11,734,45541,10393700,45056,3529,0,1779,34849,0,0 +4,4,ModelResultImpl,11,619,55697,17081600,55167,3617,0,1898,44356,0,0 +4,5,ModelResultImpl,11,726,64846,29758900,64208,3905,0,2030,52466,0,0 +4,6,ModelResultImpl,11,712,65893,13089200,65423,3972,0,2029,53618,0,0 +4,7,ModelResultImpl,11,742,50982,16405400,50469,3638,0,1857,39804,0,0 +4,8,ModelResultImpl,11,590,50309,15985400,49731,3572,0,1877,39187,0,0 +4,9,ModelResultImpl,11,761,65533,23499900,65008,3890,0,2000,53225,0,0 +4,10,ModelResultImpl,11,688,44853,23629200,44348,3255,0,1695,34758,0,0 +4,11,ModelResultImpl,11,626,59167,38070600,58611,3942,0,1864,47290,0,0 +4,12,ModelResultImpl,11,642,66860,18966400,66364,3732,0,1987,54960,0,0 +4,13,ModelResultImpl,11,622,65317,12053900,64842,3176,0,1633,55177,0,1 +4,14,ModelResultImpl,11,687,45481,79001300,44944,3485,0,1661,35036,0,0 +4,15,ModelResultImpl,11,881,74988,14027700,74444,4150,0,2191,61881,0,0 +4,16,ModelResultImpl,11,691,56609,11960900,56125,3776,0,1943,45015,0,0 +4,17,ModelResultImpl,11,631,103459,26319900,102823,4720,0,2390,88314,0,1 +4,18,ModelResultImpl,11,2263,61989,12371400,61101,3751,0,1902,50076,0,0 +4,19,ModelResultImpl,11,575,75135,19514700,74621,4810,0,2552,60068,0,1 +4,20,ModelResultImpl,11,1069,94884,21924000,94062,5623,0,3121,77010,0,1 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/80.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/80.csv new file mode 100644 index 00000000..257b7ddb --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/80.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,_Solution0FoundAt +5,1,InsuficientResourcesResultImpl,8,1163,301236,6700,11611,7,8030,261757,0,0, +5,2,ModelResultImpl,8,1125,214262,41193500,10675,0,7433,179009,0,1,213284 +5,3,InsuficientResourcesResultImpl,8,1097,301100,1400,10110,0,6697,266325,0,0, +5,4,ModelResultImpl,8,1202,243793,34411800,11329,0,7710,206562,0,0,242815 +5,5,ModelResultImpl,8,1130,266540,38153400,12190,0,8455,225879,0,1,265458 +5,6,ModelResultImpl,8,1136,244077,43614700,10925,0,7347,207698,0,0,243138 +5,7,ModelResultImpl,8,1263,270364,44901700,10715,0,7520,233664,0,0,269383 +5,8,ModelResultImpl,8,1062,228653,36320200,11042,0,7673,191829,0,0,227652 +5,9,ModelResultImpl,8,1060,284484,38198200,12105,0,8129,244192,0,1,283520 +5,10,ModelResultImpl,8,1087,245757,38745600,10898,0,7835,208781,0,0,244833 +5,11,InsuficientResourcesResultImpl,8,1003,302539,1700,9666,0,6798,267961,0,0, +5,12,ModelResultImpl,8,657,143583,35565200,6948,0,4448,120639,0,0,142951 +5,13,ModelResultImpl,8,1061,292041,44607000,12010,0,8656,250579,0,1,291061 +5,14,ModelResultImpl,8,1034,255307,37454100,11242,0,7789,217397,0,0,254393 +5,15,InsuficientResourcesResultImpl,8,1194,300839,1500,9997,0,7300,265245,0,0, +5,16,ModelResultImpl,8,1070,274358,38762800,11730,0,7864,235472,0,1,273383 +5,17,ModelResultImpl,8,1099,259378,84148300,11340,0,7784,221204,0,0,258553 +5,18,ModelResultImpl,8,1084,255262,38991800,11989,0,7795,215829,0,1,254328 +5,19,ModelResultImpl,8,1111,293515,47026100,12037,0,8609,252172,0,1,292504 +5,20,ModelResultImpl,8,1106,278558,32886300,12080,0,8000,237985,0,1,277745 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/warmup.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/warmup.csv new file mode 100644 index 00000000..989c2411 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Github/warmup.csv @@ -0,0 +1,7 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +1,1,ModelResultImpl,1483,2558,3108,60043900,1609,456,424,87,272,0,1 +1,2,ModelResultImpl,1483,1126,1487,9020100,931,292,1,60,256,0,1 +1,3,ModelResultImpl,1483,927,1424,9739900,827,263,0,51,217,0,0 +1,4,ModelResultImpl,1483,886,1069,8613600,495,208,1,25,97,0,0 +1,5,ModelResultImpl,1483,768,1268,9369800,856,262,0,35,223,0,0 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/100.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/100.csv new file mode 100644 index 00000000..a2628ad1 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/100.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +5,1,ModelResultImpl,12,865,91787,64960700,91078,17340,6,2469,61497,0,3 +5,2,ModelResultImpl,12,956,118267,65616400,117553,16353,0,2810,85627,0,1 +5,3,ModelResultImpl,12,900,116093,69616600,115364,17281,0,2800,82376,0,0 +5,4,ModelResultImpl,12,907,96027,78796000,95287,19233,0,2643,63089,0,0 +5,5,ModelResultImpl,12,961,133615,61595600,132840,17098,0,2970,99041,0,0 +5,6,ModelResultImpl,12,917,120673,61159000,119930,18320,0,2889,85737,0,0 +5,7,ModelResultImpl,12,941,101988,69310400,101183,18258,0,2694,69616,0,0 +5,8,ModelResultImpl,12,910,117121,58731900,116373,16751,0,2954,83990,0,1 +5,9,ModelResultImpl,12,939,98738,60204200,97988,15671,0,2643,69051,0,0 +5,10,ModelResultImpl,12,907,109216,62901700,108450,18563,0,2855,74361,0,0 +5,11,ModelResultImpl,12,989,101313,70288400,100570,19059,0,2653,68951,0,0 +5,12,ModelResultImpl,12,847,110986,71960700,110229,20031,0,2484,77376,0,0 +5,13,ModelResultImpl,12,924,99847,65101400,99083,18276,0,2732,67006,0,0 +5,14,ModelResultImpl,12,908,113484,61073000,112675,20588,0,2760,77595,0,0 +5,15,ModelResultImpl,12,859,107243,118083900,106494,16814,0,2826,74774,0,0 +5,16,ModelResultImpl,12,896,101005,60113300,100198,16591,0,2670,70482,0,0 +5,17,ModelResultImpl,12,909,150888,90178000,150032,18804,0,3644,112370,0,2 +5,18,ModelResultImpl,12,1988,224882,111051700,223272,35288,0,5245,160716,0,2 +5,19,ModelResultImpl,12,1710,180301,103042800,178853,31026,0,4421,125609,0,1 +5,20,ModelResultImpl,12,2294,236789,120962500,234776,34043,0,4964,172403,0,1 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/120.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/120.csv new file mode 100644 index 00000000..03ee084b --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/120.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +2,1,ModelResultImpl,11,1049,149253,202983100,148329,21687,8,3820,108113,0,4 +2,2,ModelResultImpl,11,1131,173214,111640800,172206,24930,0,3926,128120,0,1 +2,3,ModelResultImpl,11,1027,157782,120804000,157006,19292,0,3948,119012,0,1 +2,4,ModelResultImpl,11,1063,169577,126195200,168692,22819,0,4027,126643,0,1 +2,5,ModelResultImpl,11,984,164004,93016300,163235,23449,0,3830,121474,0,1 +2,6,ModelResultImpl,11,1005,146874,94077300,146111,20382,0,3734,108542,0,1 +2,7,ModelResultImpl,11,904,148997,92734800,148172,19769,0,3763,111141,0,1 +2,8,ModelResultImpl,11,911,145947,99103000,145197,21375,0,3757,106317,0,1 +2,9,ModelResultImpl,11,911,154022,91420700,153225,21687,0,3781,113566,0,1 +2,10,ModelResultImpl,11,994,144253,105623000,143479,19514,0,3736,106547,0,1 +2,11,ModelResultImpl,11,943,146057,85565700,145235,20168,0,3830,107696,0,1 +2,12,ModelResultImpl,11,933,153728,93877000,152956,18549,0,4136,115265,0,0 +2,13,ModelResultImpl,11,989,135785,101796800,135043,19930,0,3590,98576,0,1 +2,14,ModelResultImpl,11,942,158905,115031700,158150,21663,0,3796,118239,0,0 +2,15,ModelResultImpl,11,897,138727,116266900,137918,19116,1,3652,102641,0,0 +2,16,ModelResultImpl,11,851,145221,95232500,144453,18026,0,3913,108945,0,0 +2,17,ModelResultImpl,11,928,154148,88476300,153396,21053,0,3827,113763,0,0 +2,18,ModelResultImpl,11,859,166408,95546600,165666,22619,0,3922,123707,0,1 +2,19,ModelResultImpl,11,909,136564,91353600,135766,17841,0,3665,101835,0,0 +2,20,ModelResultImpl,11,873,147664,91153300,146866,17705,0,3874,111410,0,0 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/140.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/140.csv new file mode 100644 index 00000000..2ea01c80 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/140.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +2,1,ModelResultImpl,28,1125,232547,238441100,231464,32513,30,5381,174058,0,3 +2,2,ModelResultImpl,28,932,262316,161173500,261382,26096,0,5936,207379,0,1 +2,3,ModelResultImpl,28,1227,292535,143575400,291587,32776,0,5863,228470,0,1 +2,4,ModelResultImpl,28,1048,291142,138985400,290250,31729,1,6141,227996,0,1 +2,5,ModelResultImpl,28,962,226481,144946000,225670,28211,0,5305,172447,0,1 +2,6,ModelResultImpl,28,913,236598,135164100,235765,24945,0,5586,184729,0,1 +2,7,ModelResultImpl,28,885,234174,143088000,233346,27412,0,5184,182189,0,1 +2,8,ModelResultImpl,28,879,205042,135824000,204263,25417,0,4926,157017,0,1 +2,9,ModelResultImpl,28,975,237992,154320900,237160,26181,0,5287,185721,0,0 +2,10,ModelResultImpl,28,908,213258,140980300,212461,28371,0,5041,161035,0,1 +2,11,ModelResultImpl,28,868,220191,146847500,219407,29612,0,4923,167193,0,1 +2,12,ModelResultImpl,28,986,217681,137838200,216908,27339,0,4956,166377,0,1 +2,13,ModelResultImpl,28,930,228167,126599800,227404,30279,0,5075,174085,0,0 +2,14,ModelResultImpl,28,878,246742,128511700,245938,21629,0,5670,199512,0,0 +2,15,ModelResultImpl,28,903,212514,141892400,211665,31163,0,4913,158072,0,0 +2,16,ModelResultImpl,28,928,233910,127925600,233102,23749,0,5410,184087,0,0 +2,17,ModelResultImpl,28,901,248732,134197200,247867,25543,0,5436,198007,0,1 +2,18,ModelResultImpl,28,926,277407,128580900,276418,27387,0,5841,220797,0,1 +2,19,ModelResultImpl,28,1090,272687,171318300,271352,29653,0,5675,212248,0,1 +2,20,ModelResultImpl,28,971,259569,148475200,258629,28250,0,5574,204259,0,2 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/30.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/30.csv new file mode 100644 index 00000000..ec0afb94 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/30.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +2,1,ModelResultImpl,37,1267,42409,28515700,41220,5066,11,614,29095,0,1 +2,2,ModelResultImpl,37,1919,14164,22580700,12518,3986,2,344,5463,0,2 +2,3,ModelResultImpl,37,1916,41597,31164300,40290,5050,1,614,28209,0,1 +2,4,ModelResultImpl,37,2023,41518,20216100,40199,5825,0,549,27332,0,1 +2,5,ModelResultImpl,37,2052,21630,32282400,20128,4713,0,456,10817,0,1 +2,6,ModelResultImpl,37,2070,40984,24514000,39602,5997,0,528,26649,0,2 +2,7,ModelResultImpl,37,2249,40677,22780300,39309,4977,0,600,27410,0,1 +2,8,ModelResultImpl,37,1887,34102,17897400,32571,5103,0,524,21184,0,1 +2,9,ModelResultImpl,37,1826,11685,12854100,10430,3316,0,298,4382,0,1 +2,10,ModelResultImpl,37,1795,20933,19823700,19703,4431,0,435,10642,0,1 +2,11,ModelResultImpl,37,1849,33111,18648500,31757,5743,0,375,20404,0,1 +2,12,ModelResultImpl,37,1829,36099,18177300,34869,5689,0,525,22643,0,1 +2,13,ModelResultImpl,37,1875,36431,20140100,35116,5371,0,500,23462,0,1 +2,14,ModelResultImpl,37,1796,32322,24371800,31185,4939,0,493,20307,0,1 +2,15,ModelResultImpl,37,1961,43764,24819800,42470,6248,0,593,27586,0,1 +2,16,ModelResultImpl,37,1737,16231,16437300,14995,3805,0,388,7679,0,0 +2,17,ModelResultImpl,37,1685,14223,36835700,12964,3783,0,338,6108,0,1 +2,18,ModelResultImpl,37,1910,30550,21296200,29359,4813,0,517,18691,0,1 +2,19,ModelResultImpl,37,1622,30723,17831800,29572,5299,0,560,18198,0,1 +2,20,ModelResultImpl,37,1915,15410,15827800,14223,3856,0,353,7093,0,1 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/50.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/50.csv new file mode 100644 index 00000000..80122e3d --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/50.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +3,1,ModelResultImpl,16,1695,34619,47365200,33379,7951,23,1005,19203,0,0 +3,2,ModelResultImpl,16,1952,66272,40194500,65033,10142,0,1381,45195,0,1 +3,3,ModelResultImpl,16,1882,50684,57411900,49392,9412,0,1181,31167,0,2 +3,4,ModelResultImpl,16,1835,52174,29585500,50841,9443,0,1265,32497,0,1 +3,5,ModelResultImpl,16,1817,37087,24158900,35809,8374,0,1106,20620,0,1 +3,6,ModelResultImpl,16,1822,96082,35393500,94837,10814,0,1314,71854,0,1 +3,7,ModelResultImpl,16,1845,65727,37723300,64268,10857,0,1392,42620,0,1 +3,8,ModelResultImpl,16,1715,36063,56419600,34810,8195,0,1065,19928,0,2 +3,9,ModelResultImpl,16,1814,53418,68855200,52040,9364,0,1248,33127,0,1 +3,10,ModelResultImpl,16,1688,146193,34004300,144953,23393,0,2677,96521,0,2 +3,11,ModelResultImpl,16,1887,56839,38787000,55478,11029,0,1309,34905,0,1 +3,12,ModelResultImpl,16,1852,43970,32684100,42779,10114,0,1121,25234,0,1 +3,13,ModelResultImpl,16,1766,68078,29662000,66581,12700,0,1445,42619,0,1 +3,14,ModelResultImpl,16,2033,137006,39601900,135475,10041,0,1736,110352,0,1 +3,15,ModelResultImpl,16,1792,36929,30425200,35576,8499,0,1112,19855,0,1 +3,16,ModelResultImpl,16,1861,79893,19417500,78581,10278,0,1253,56995,0,0 +3,17,ModelResultImpl,16,1651,34149,32888300,33294,8334,0,1016,18514,0,1 +3,18,ModelResultImpl,16,1799,51965,35639300,50624,11417,0,1355,29874,0,0 +3,19,ModelResultImpl,16,2032,46469,44756500,45006,10308,0,1323,25809,0,1 +3,20,ModelResultImpl,16,1839,75448,32863500,74051,11465,0,1499,50558,0,1 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/80.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/80.csv new file mode 100644 index 00000000..ae7f7ca1 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/80.csv @@ -0,0 +1,22 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +4,1,ModelResultImpl,20,2105,122193,47975800,120819,22172,21,3111,81933,0,0 +4,2,ModelResultImpl,20,948,71430,38366700,70718,10799,0,1803,49089,0,0 +4,3,ModelResultImpl,20,907,71011,42371700,70320,12614,0,1751,47228,0,0 +4,4,ModelResultImpl,20,888,57574,43253600,56870,10097,0,1721,37819,0,0 +4,5,ModelResultImpl,20,918,50961,39099900,50235,9718,0,1667,31881,0,0 +4,6,ModelResultImpl,20,929,54262,48948700,53554,10095,0,1701,35294,0,0 +4,7,ModelResultImpl,20,914,69271,42306400,68596,12610,0,1788,45775,0,0 +4,8,ModelResultImpl,20,887,58304,42858800,57604,10861,0,1641,37653,0,0 +4,9,ModelResultImpl,20,923,61436,40388600,60755,11478,0,1812,38983,0,0 +4,10,ModelResultImpl,20,950,51010,44099800,50294,11361,0,1496,30951,0,1 +4,11,ModelResultImpl,20,879,56153,40079800,55455,11776,0,1587,35227,0,0 +4,12,ModelResultImpl,20,939,55164,41385200,54450,9786,0,1675,35778,0,0 +4,13,ModelResultImpl,20,947,59424,49539400,58684,10955,0,1776,38126,0,0 +4,14,ModelResultImpl,20,973,61843,36537600,61086,10883,0,1685,40830,0,0 +4,15,ModelResultImpl,20,867,54362,38663100,53666,10015,0,1611,35234,0,0 +4,16,ModelResultImpl,20,915,108777,49507000,108033,20987,0,2938,71959,0,1 +4,17,ModelResultImpl,20,922,55218,41448600,54548,9665,0,1657,36387,0,0 +4,18,ModelResultImpl,20,921,57210,60622400,56526,10429,0,1747,36425,0,0 +4,19,ModelResultImpl,20,911,70900,47211300,70230,11669,0,1714,48547,0,0 +4,20,ModelResultImpl,20,887,74363,36468500,73658,12552,0,1800,50208,0,0 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/warmup.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/warmup.csv new file mode 100644 index 00000000..94da3ec9 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/Yakindu/warmup.csv @@ -0,0 +1,7 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,_Solution0FoundAt,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime +1,1,ModelResultImpl,494,2798,2766,45079800,1362,547,125,46,190,0,3 +1,2,ModelResultImpl,494,1544,1988,11110900,1033,357,0,30,249,0,1 +1,3,ModelResultImpl,494,1366,1867,7926900,1060,364,2,24,258,0,1 +1,4,ModelResultImpl,494,1233,1588,8919800,863,312,0,19,146,0,1 +1,5,ModelResultImpl,494,1253,1434,7416800,681,268,1,17,133,0,0 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/file.csv b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/file.csv new file mode 100644 index 00000000..c3c77053 --- /dev/null +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/statistics/file.csv @@ -0,0 +1,4 @@ +Task,Run,Result,Domain to logic transformation time,Logic to solver transformation time,Solver time,Postprocessing time,TransformationExecutionTime,TypeAnalysisTime,MetricCalculationTime,StateCoderTime,StateCoderFailCount,SolutionCopyTime,_Solution0FoundAt +1,1,InsuficientResourcesResultImpl,453,3378,5255,7500,1236,131,79,245,0,0, +1,2,ModelResultImpl,453,1965,4628,31696400,1014,3,58,307,0,1,1957 + diff --git a/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig b/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig index 04351a6e..721d506a 100644 --- a/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig +++ b/Metrics/Metrics-Calculation/SocialNetwork_plugin/yakinduGeneration.vsconfig @@ -9,11 +9,11 @@ generate { solver = ViatraSolver scope = { - #node = 30 + #node = 10 } number = 1 - runs = 100 + runs = 5 config = { log-level = none, "optional-wf" = "false", @@ -22,6 +22,85 @@ generate { "domain" = "Yakindumm" } + statistics = "statistics/Yakindu/warmup.csv" //give different set up different filenames debug = "debug" - output = "output/real_30+v/" + output = "output/Yakindu/run_time/" +} + +generate { + metamodel = { package yakindumm excluding { Synchronization}} + constraints = { package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu } + partial-model = { "inputs/start.xmi"} + + solver = ViatraSolver + + scope = { + #node = 140 + } + + number = 1 + runs = 20 + config = { + log-level = none, + "optional-wf" = "false", + "realistic-guidance" = "Composite", + "allow-must-violations" = "false", + "domain" = "Yakindumm" + } + + statistics = "statistics/Yakindu/140.csv" //give different set up different filenames + debug = "debug" + output = "output/Yakindu/run_time/" +} + +generate { + metamodel = { package yakindumm excluding { Synchronization}} + constraints = { package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu } + partial-model = { "inputs/start.xmi"} + + solver = ViatraSolver + + scope = { + #node = 160 + } + + number = 1 + runs = 20 + config = { + log-level = none, + "optional-wf" = "false", + "realistic-guidance" = "Composite", + "allow-must-violations" = "false", + "domain" = "Yakindumm" + } + + statistics = "statistics/Yakindu/160.csv" //give different set up different filenames + debug = "debug" + output = "output/Yakindu/run_time/" +} + +generate { + metamodel = { package yakindumm excluding { Synchronization}} + constraints = { package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu } + partial-model = { "inputs/start.xmi"} + + solver = ViatraSolver + + scope = { + #node = 180 + } + + number = 1 + runs = 20 + config = { + log-level = none, + "optional-wf" = "false", + "realistic-guidance" = "Composite", + "allow-must-violations" = "false", + "domain" = "Yakindumm" + } + + statistics = "statistics/Yakindu/180.csv" //give different set up different filenames + debug = "debug" + output = "output/Yakindu/run_time/" } \ No newline at end of file diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.settings/org.eclipse.wst.validation.prefs b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 00000000..b0a80408 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,10 @@ +DELEGATES_PREFERENCE=delegateValidatorList +USER_BUILD_PREFERENCE=enabledBuildValidatorList +USER_MANUAL_PREFERENCE=enabledManualValidatorList +USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.701.v201810290944 +eclipse.preferences.version=1 +override=true +suspend=false +vals/org.eclipse.wst.xml.core.xml/global=FF03 +vals/org.eclipse.wst.xsd.core.xsd/global=FF02162org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator +vf.version=3 diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/META-INF/MANIFEST.MF b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/META-INF/MANIFEST.MF index 71eeb2c4..eacce276 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/META-INF/MANIFEST.MF +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/META-INF/MANIFEST.MF @@ -19,7 +19,8 @@ Require-Bundle: com.google.guava, org.eclipse.viatra.addon.validation.core;bundle-version="2.1.2", org.eclipse.collections;bundle-version="9.2.0", org.eclipse.viatra.query.runtime.localsearch;bundle-version="2.1.2", - org.apache.log4j;bundle-version="1.2.15" + org.apache.log4j;bundle-version="1.2.15", + github-graph;bundle-version="0.1.0" Export-Package: ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app, ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance, ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph, diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/LoopInInheritenceConstraint0.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/LoopInInheritenceConstraint0.java new file mode 100644 index 00000000..c31e59e7 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/LoopInInheritenceConstraint0.java @@ -0,0 +1,79 @@ +/** +Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.vql +*/ +package constraints.ecore; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.eclipse.viatra.addon.validation.core.api.IConstraintSpecification; +import org.eclipse.viatra.addon.validation.core.api.Severity; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; + +import ecore.LoopInInheritence; + +public class LoopInInheritenceConstraint0 implements IConstraintSpecification { + + private LoopInInheritence querySpecification; + + public LoopInInheritenceConstraint0() { + querySpecification = LoopInInheritence.instance(); + } + + @Override + public String getMessageFormat() { + return "error"; + } + + + @Override + public Map getKeyObjects(IPatternMatch signature) { + Map map = new HashMap<>(); + map.put("a",signature.get("a")); + return map; + } + + @Override + public List getKeyNames() { + List keyNames = Arrays.asList( + "a" + ); + return keyNames; + } + + @Override + public List getPropertyNames() { + List propertyNames = Arrays.asList( + ); + return propertyNames; + } + + @Override + public Set> getSymmetricPropertyNames() { + Set> symmetricPropertyNamesSet = new HashSet<>(); + return symmetricPropertyNamesSet; + } + + @Override + public Set> getSymmetricKeyNames() { + Set> symmetricKeyNamesSet = new HashSet<>(); + return symmetricKeyNamesSet; + } + + @Override + public Severity getSeverity() { + return Severity.ERROR; + } + + @Override + public IQuerySpecification> getQuerySpecification() { + return querySpecification; + } + +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/MoreThenFiveSuperTypesConstraint0.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/MoreThenFiveSuperTypesConstraint0.java deleted file mode 100644 index 5243b104..00000000 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/MoreThenFiveSuperTypesConstraint0.java +++ /dev/null @@ -1,79 +0,0 @@ -/** -Generated from platform:/resource/SocialNetwork_plugin/queries/queries/ecore_pattern.vql -*/ -package constraints.ecore; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.eclipse.viatra.addon.validation.core.api.IConstraintSpecification; -import org.eclipse.viatra.addon.validation.core.api.Severity; -import org.eclipse.viatra.query.runtime.api.IPatternMatch; -import org.eclipse.viatra.query.runtime.api.IQuerySpecification; -import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; - -import ecore.MoreThenFiveSuperTypes; - -public class MoreThenFiveSuperTypesConstraint0 implements IConstraintSpecification { - - private MoreThenFiveSuperTypes querySpecification; - - public MoreThenFiveSuperTypesConstraint0() { - querySpecification = MoreThenFiveSuperTypes.instance(); - } - - @Override - public String getMessageFormat() { - return "error"; - } - - - @Override - public Map getKeyObjects(IPatternMatch signature) { - Map map = new HashMap<>(); - map.put("c",signature.get("c")); - return map; - } - - @Override - public List getKeyNames() { - List keyNames = Arrays.asList( - "c" - ); - return keyNames; - } - - @Override - public List getPropertyNames() { - List propertyNames = Arrays.asList( - ); - return propertyNames; - } - - @Override - public Set> getSymmetricPropertyNames() { - Set> symmetricPropertyNamesSet = new HashSet<>(); - return symmetricPropertyNamesSet; - } - - @Override - public Set> getSymmetricKeyNames() { - Set> symmetricKeyNamesSet = new HashSet<>(); - return symmetricKeyNamesSet; - } - - @Override - public Severity getSeverity() { - return Severity.ERROR; - } - - @Override - public IQuerySpecification> getQuerySpecification() { - return querySpecification; - } - -} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/NonSymmetricOppositeConstraint0.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/NonSymmetricOppositeConstraint0.java new file mode 100644 index 00000000..29b35552 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/NonSymmetricOppositeConstraint0.java @@ -0,0 +1,80 @@ +/** +Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.vql +*/ +package constraints.ecore; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.eclipse.viatra.addon.validation.core.api.IConstraintSpecification; +import org.eclipse.viatra.addon.validation.core.api.Severity; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; + +import ecore.NonSymmetricOpposite; + +public class NonSymmetricOppositeConstraint0 implements IConstraintSpecification { + + private NonSymmetricOpposite querySpecification; + + public NonSymmetricOppositeConstraint0() { + querySpecification = NonSymmetricOpposite.instance(); + } + + @Override + public String getMessageFormat() { + return "error"; + } + + + @Override + public Map getKeyObjects(IPatternMatch signature) { + Map map = new HashMap<>(); + map.put("a",signature.get("a")); + return map; + } + + @Override + public List getKeyNames() { + List keyNames = Arrays.asList( + "a" + ); + return keyNames; + } + + @Override + public List getPropertyNames() { + List propertyNames = Arrays.asList( + "b" + ); + return propertyNames; + } + + @Override + public Set> getSymmetricPropertyNames() { + Set> symmetricPropertyNamesSet = new HashSet<>(); + return symmetricPropertyNamesSet; + } + + @Override + public Set> getSymmetricKeyNames() { + Set> symmetricKeyNamesSet = new HashSet<>(); + return symmetricKeyNamesSet; + } + + @Override + public Severity getSeverity() { + return Severity.ERROR; + } + + @Override + public IQuerySpecification> getQuerySpecification() { + return querySpecification; + } + +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/OppositeDifferentClassConstraint0.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/OppositeDifferentClassConstraint0.java new file mode 100644 index 00000000..9ef4e35e --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/constraints/ecore/OppositeDifferentClassConstraint0.java @@ -0,0 +1,79 @@ +/** +Generated from platform:/resource/SocialNetwork_plugin/queries/queries/Ecore.vql +*/ +package constraints.ecore; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.eclipse.viatra.addon.validation.core.api.IConstraintSpecification; +import org.eclipse.viatra.addon.validation.core.api.Severity; +import org.eclipse.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; + +import ecore.OppositeDifferentClass; + +public class OppositeDifferentClassConstraint0 implements IConstraintSpecification { + + private OppositeDifferentClass querySpecification; + + public OppositeDifferentClassConstraint0() { + querySpecification = OppositeDifferentClass.instance(); + } + + @Override + public String getMessageFormat() { + return "error"; + } + + + @Override + public Map getKeyObjects(IPatternMatch signature) { + Map map = new HashMap<>(); + map.put("a",signature.get("a")); + return map; + } + + @Override + public List getKeyNames() { + List keyNames = Arrays.asList( + "a" + ); + return keyNames; + } + + @Override + public List getPropertyNames() { + List propertyNames = Arrays.asList( + ); + return propertyNames; + } + + @Override + public Set> getSymmetricPropertyNames() { + Set> symmetricPropertyNamesSet = new HashSet<>(); + return symmetricPropertyNamesSet; + } + + @Override + public Set> getSymmetricKeyNames() { + Set> symmetricKeyNamesSet = new HashSet<>(); + return symmetricKeyNamesSet; + } + + @Override + public Severity getSeverity() { + return Severity.ERROR; + } + + @Override + public IQuerySpecification> getQuerySpecification() { + return querySpecification; + } + +} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/ecore/Ecore_pattern.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/ecore/Ecore_pattern.java deleted file mode 100644 index 6da94486..00000000 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/ecore/Ecore_pattern.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Generated from platform:/resource/SocialNetwork_plugin/queries/ecore/ecore_pattern.vql - */ -package ecore; - -import ecore.MoreThenFiveSuperTypes; -import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedPatternGroup; - -/** - * A pattern group formed of all public patterns defined in ecore_pattern.vql. - * - *

    Use the static instance as any {@link interface org.eclipse.viatra.query.runtime.api.IQueryGroup}, to conveniently prepare - * a VIATRA Query engine for matching all patterns originally defined in file ecore_pattern.vql, - * in order to achieve better performance than one-by-one on-demand matcher initialization. - * - *

    From package ecore, the group contains the definition of the following patterns:

      - *
    • moreThenFiveSuperTypes
    • - *
    - * - * @see IQueryGroup - * - */ -@SuppressWarnings("all") -public final class Ecore_pattern extends BaseGeneratedPatternGroup { - /** - * Access the pattern group. - * - * @return the singleton instance of the group - * @throws ViatraQueryRuntimeException if there was an error loading the generated code of pattern specifications - * - */ - public static Ecore_pattern instance() { - if (INSTANCE == null) { - INSTANCE = new Ecore_pattern(); - } - return INSTANCE; - } - - private static Ecore_pattern INSTANCE; - - private Ecore_pattern() { - querySpecifications.add(MoreThenFiveSuperTypes.instance()); - } - - public MoreThenFiveSuperTypes getMoreThenFiveSuperTypes() { - return MoreThenFiveSuperTypes.instance(); - } - - public MoreThenFiveSuperTypes.Matcher getMoreThenFiveSuperTypes(final ViatraQueryEngine engine) { - return MoreThenFiveSuperTypes.Matcher.on(engine); - } -} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/ecore/MoreThenFiveSuperTypes.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/ecore/MoreThenFiveSuperTypes.java deleted file mode 100644 index da64d899..00000000 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/constraints/ecore/MoreThenFiveSuperTypes.java +++ /dev/null @@ -1,621 +0,0 @@ -/** - * Generated from platform:/resource/SocialNetwork_plugin/queries/ecore/ecore_pattern.vql - */ -package ecore; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.function.Consumer; -import java.util.stream.Collectors; -import java.util.stream.Stream; -import org.apache.log4j.Logger; -import org.eclipse.emf.ecore.EClass; -import org.eclipse.viatra.query.runtime.api.IPatternMatch; -import org.eclipse.viatra.query.runtime.api.IQuerySpecification; -import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFPQuery; -import org.eclipse.viatra.query.runtime.api.impl.BaseGeneratedEMFQuerySpecification; -import org.eclipse.viatra.query.runtime.api.impl.BaseMatcher; -import org.eclipse.viatra.query.runtime.api.impl.BasePatternMatch; -import org.eclipse.viatra.query.runtime.emf.types.EClassTransitiveInstancesKey; -import org.eclipse.viatra.query.runtime.emf.types.EStructuralFeatureInstancesKey; -import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; -import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator; -import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; -import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; -import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; -import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.ParameterReference; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExpressionEvaluation; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.PatternMatchCounter; -import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; -import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; -import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; -import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; -import org.eclipse.viatra.query.runtime.util.ViatraQueryLoggingUtil; - -/** - * A pattern-specific query specification that can instantiate Matcher in a type-safe way. - * - *

    Original source: - *

    - *         {@literal @}Constraint(severity="error", message="error", key = {c})
    - *         pattern moreThenFiveSuperTypes(c: EClass){
    - *         	m == count EClass.eSuperTypes(c,_);
    - *         	check(m {@literal >}= 5);
    - *         }
    - * 
    - * - * @see Matcher - * @see Match - * - */ -@SuppressWarnings("all") -public final class MoreThenFiveSuperTypes extends BaseGeneratedEMFQuerySpecification { - /** - * Pattern-specific match representation of the ecore.moreThenFiveSuperTypes pattern, - * to be used in conjunction with {@link Matcher}. - * - *

    Class fields correspond to parameters of the pattern. Fields with value null are considered unassigned. - * Each instance is a (possibly partial) substitution of pattern parameters, - * usable to represent a match of the pattern in the result of a query, - * or to specify the bound (fixed) input parameters when issuing a query. - * - * @see Matcher - * - */ - public static abstract class Match extends BasePatternMatch { - private EClass fC; - - private static List parameterNames = makeImmutableList("c"); - - private Match(final EClass pC) { - this.fC = pC; - } - - @Override - public Object get(final String parameterName) { - if ("c".equals(parameterName)) return this.fC; - return null; - } - - public EClass getC() { - return this.fC; - } - - @Override - public boolean set(final String parameterName, final Object newValue) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - if ("c".equals(parameterName) ) { - this.fC = (EClass) newValue; - return true; - } - return false; - } - - public void setC(final EClass pC) { - if (!isMutable()) throw new java.lang.UnsupportedOperationException(); - this.fC = pC; - } - - @Override - public String patternName() { - return "ecore.moreThenFiveSuperTypes"; - } - - @Override - public List parameterNames() { - return MoreThenFiveSuperTypes.Match.parameterNames; - } - - @Override - public Object[] toArray() { - return new Object[]{fC}; - } - - @Override - public MoreThenFiveSuperTypes.Match toImmutable() { - return isMutable() ? newMatch(fC) : this; - } - - @Override - public String prettyPrint() { - StringBuilder result = new StringBuilder(); - result.append("\"c\"=" + prettyPrintValue(fC)); - return result.toString(); - } - - @Override - public int hashCode() { - return Objects.hash(fC); - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) { - return false; - } - if ((obj instanceof MoreThenFiveSuperTypes.Match)) { - MoreThenFiveSuperTypes.Match other = (MoreThenFiveSuperTypes.Match) obj; - return Objects.equals(fC, other.fC); - } else { - // this should be infrequent - if (!(obj instanceof IPatternMatch)) { - return false; - } - IPatternMatch otherSig = (IPatternMatch) obj; - return Objects.equals(specification(), otherSig.specification()) && Arrays.deepEquals(toArray(), otherSig.toArray()); - } - } - - @Override - public MoreThenFiveSuperTypes specification() { - return MoreThenFiveSuperTypes.instance(); - } - - /** - * Returns an empty, mutable match. - * Fields of the mutable match can be filled to create a partial match, usable as matcher input. - * - * @return the empty match. - * - */ - public static MoreThenFiveSuperTypes.Match newEmptyMatch() { - return new Mutable(null); - } - - /** - * Returns a mutable (partial) match. - * Fields of the mutable match can be filled to create a partial match, usable as matcher input. - * - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return the new, mutable (partial) match object. - * - */ - public static MoreThenFiveSuperTypes.Match newMutableMatch(final EClass pC) { - return new Mutable(pC); - } - - /** - * Returns a new (partial) match. - * This can be used e.g. to call the matcher with a partial match. - *

    The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return the (partial) match object. - * - */ - public static MoreThenFiveSuperTypes.Match newMatch(final EClass pC) { - return new Immutable(pC); - } - - private static final class Mutable extends MoreThenFiveSuperTypes.Match { - Mutable(final EClass pC) { - super(pC); - } - - @Override - public boolean isMutable() { - return true; - } - } - - private static final class Immutable extends MoreThenFiveSuperTypes.Match { - Immutable(final EClass pC) { - super(pC); - } - - @Override - public boolean isMutable() { - return false; - } - } - } - - /** - * Generated pattern matcher API of the ecore.moreThenFiveSuperTypes pattern, - * providing pattern-specific query methods. - * - *

    Use the pattern matcher on a given model via {@link #on(ViatraQueryEngine)}, - * e.g. in conjunction with {@link ViatraQueryEngine#on(QueryScope)}. - * - *

    Matches of the pattern will be represented as {@link Match}. - * - *

    Original source: - *

    -   * {@literal @}Constraint(severity="error", message="error", key = {c})
    -   * pattern moreThenFiveSuperTypes(c: EClass){
    -   * 	m == count EClass.eSuperTypes(c,_);
    -   * 	check(m {@literal >}= 5);
    -   * }
    -   * 
    - * - * @see Match - * @see MoreThenFiveSuperTypes - * - */ - public static class Matcher extends BaseMatcher { - /** - * Initializes the pattern matcher within an existing VIATRA Query engine. - * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. - * - * @param engine the existing VIATRA Query engine in which this matcher will be created. - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * - */ - public static MoreThenFiveSuperTypes.Matcher on(final ViatraQueryEngine engine) { - // check if matcher already exists - Matcher matcher = engine.getExistingMatcher(querySpecification()); - if (matcher == null) { - matcher = (Matcher)engine.getMatcher(querySpecification()); - } - return matcher; - } - - /** - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * @return an initialized matcher - * @noreference This method is for internal matcher initialization by the framework, do not call it manually. - * - */ - public static MoreThenFiveSuperTypes.Matcher create() { - return new Matcher(); - } - - private static final int POSITION_C = 0; - - private static final Logger LOGGER = ViatraQueryLoggingUtil.getLogger(MoreThenFiveSuperTypes.Matcher.class); - - /** - * Initializes the pattern matcher within an existing VIATRA Query engine. - * If the pattern matcher is already constructed in the engine, only a light-weight reference is returned. - * - * @param engine the existing VIATRA Query engine in which this matcher will be created. - * @throws ViatraQueryRuntimeException if an error occurs during pattern matcher creation - * - */ - private Matcher() { - super(querySpecification()); - } - - /** - * Returns the set of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return matches represented as a Match object. - * - */ - public Collection getAllMatches(final EClass pC) { - return rawStreamAllMatches(new Object[]{pC}).collect(Collectors.toSet()); - } - - /** - * Returns a stream of all matches of the pattern that conform to the given fixed values of some parameters. - *

    - * NOTE: It is important not to modify the source model while the stream is being processed. - * If the match set of the pattern changes during processing, the contents of the stream is undefined. - * In such cases, either rely on {@link #getAllMatches()} or collect the results of the stream in end-user code. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return a stream of matches represented as a Match object. - * - */ - public Stream streamAllMatches(final EClass pC) { - return rawStreamAllMatches(new Object[]{pC}); - } - - /** - * Returns an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. - * Neither determinism nor randomness of selection is guaranteed. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return a match represented as a Match object, or null if no match is found. - * - */ - public Optional getOneArbitraryMatch(final EClass pC) { - return rawGetOneArbitraryMatch(new Object[]{pC}); - } - - /** - * Indicates whether the given combination of specified pattern parameters constitute a valid pattern match, - * under any possible substitution of the unspecified parameters (if any). - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return true if the input is a valid (partial) match of the pattern. - * - */ - public boolean hasMatch(final EClass pC) { - return rawHasMatch(new Object[]{pC}); - } - - /** - * Returns the number of all matches of the pattern that conform to the given fixed values of some parameters. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return the number of pattern matches found. - * - */ - public int countMatches(final EClass pC) { - return rawCountMatches(new Object[]{pC}); - } - - /** - * Executes the given processor on an arbitrarily chosen match of the pattern that conforms to the given fixed values of some parameters. - * Neither determinism nor randomness of selection is guaranteed. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @param processor the action that will process the selected match. - * @return true if the pattern has at least one match with the given parameter values, false if the processor was not invoked - * - */ - public boolean forOneArbitraryMatch(final EClass pC, final Consumer processor) { - return rawForOneArbitraryMatch(new Object[]{pC}, processor); - } - - /** - * Returns a new (partial) match. - * This can be used e.g. to call the matcher with a partial match. - *

    The returned match will be immutable. Use {@link #newEmptyMatch()} to obtain a mutable match object. - * @param pC the fixed value of pattern parameter c, or null if not bound. - * @return the (partial) match object. - * - */ - public MoreThenFiveSuperTypes.Match newMatch(final EClass pC) { - return MoreThenFiveSuperTypes.Match.newMatch(pC); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - protected Stream rawStreamAllValuesOfc(final Object[] parameters) { - return rawStreamAllValues(POSITION_C, parameters).map(EClass.class::cast); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - public Set getAllValuesOfc() { - return rawStreamAllValuesOfc(emptyArray()).collect(Collectors.toSet()); - } - - /** - * Retrieve the set of values that occur in matches for c. - * @return the Set of all values or empty set if there are no matches - * - */ - public Stream streamAllValuesOfc() { - return rawStreamAllValuesOfc(emptyArray()); - } - - @Override - protected MoreThenFiveSuperTypes.Match tupleToMatch(final Tuple t) { - try { - return MoreThenFiveSuperTypes.Match.newMatch((EClass) t.get(POSITION_C)); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in tuple not properly typed!",e); - return null; - } - } - - @Override - protected MoreThenFiveSuperTypes.Match arrayToMatch(final Object[] match) { - try { - return MoreThenFiveSuperTypes.Match.newMatch((EClass) match[POSITION_C]); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in array not properly typed!",e); - return null; - } - } - - @Override - protected MoreThenFiveSuperTypes.Match arrayToMatchMutable(final Object[] match) { - try { - return MoreThenFiveSuperTypes.Match.newMutableMatch((EClass) match[POSITION_C]); - } catch(ClassCastException e) { - LOGGER.error("Element(s) in array not properly typed!",e); - return null; - } - } - - /** - * @return the singleton instance of the query specification of this pattern - * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded - * - */ - public static IQuerySpecification querySpecification() { - return MoreThenFiveSuperTypes.instance(); - } - } - - private MoreThenFiveSuperTypes() { - super(GeneratedPQuery.INSTANCE); - } - - /** - * @return the singleton instance of the query specification - * @throws ViatraQueryRuntimeException if the pattern definition could not be loaded - * - */ - public static MoreThenFiveSuperTypes instance() { - try{ - return LazyHolder.INSTANCE; - } catch (ExceptionInInitializerError err) { - throw processInitializerError(err); - } - } - - @Override - protected MoreThenFiveSuperTypes.Matcher instantiate(final ViatraQueryEngine engine) { - return MoreThenFiveSuperTypes.Matcher.on(engine); - } - - @Override - public MoreThenFiveSuperTypes.Matcher instantiate() { - return MoreThenFiveSuperTypes.Matcher.create(); - } - - @Override - public MoreThenFiveSuperTypes.Match newEmptyMatch() { - return MoreThenFiveSuperTypes.Match.newEmptyMatch(); - } - - @Override - public MoreThenFiveSuperTypes.Match newMatch(final Object... parameters) { - return MoreThenFiveSuperTypes.Match.newMatch((org.eclipse.emf.ecore.EClass) parameters[0]); - } - - /** - * Inner class allowing the singleton instance of {@link JvmGenericType: ecore.MoreThenFiveSuperTypes (visibility: PUBLIC, simpleName: MoreThenFiveSuperTypes, identifier: ecore.MoreThenFiveSuperTypes, deprecated: ) (abstract: false, static: false, final: true, packageName: ecore) (interface: false, strictFloatingPoint: false, anonymous: false)} to be created - * not at the class load time of the outer class, - * but rather at the first call to {@link JvmGenericType: ecore.MoreThenFiveSuperTypes (visibility: PUBLIC, simpleName: MoreThenFiveSuperTypes, identifier: ecore.MoreThenFiveSuperTypes, deprecated: ) (abstract: false, static: false, final: true, packageName: ecore) (interface: false, strictFloatingPoint: false, anonymous: false)#instance()}. - * - *

    This workaround is required e.g. to support recursion. - * - */ - private static class LazyHolder { - private static final MoreThenFiveSuperTypes INSTANCE = new MoreThenFiveSuperTypes(); - - /** - * Statically initializes the query specification after the field {@link #INSTANCE} is assigned. - * This initialization order is required to support indirect recursion. - * - *

    The static initializer is defined using a helper field to work around limitations of the code generator. - * - */ - private static final Object STATIC_INITIALIZER = ensureInitialized(); - - public static Object ensureInitialized() { - INSTANCE.ensureInitializedInternal(); - return null; - } - } - - private static class GeneratedPQuery extends BaseGeneratedEMFPQuery { - private static final MoreThenFiveSuperTypes.GeneratedPQuery INSTANCE = new GeneratedPQuery(); - - private final PParameter parameter_c = new PParameter("c", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT); - - private final List parameters = Arrays.asList(parameter_c); - - private class Embedded_1_EClass_eSuperTypes extends BaseGeneratedEMFPQuery { - private final PParameter parameter_p0 = new PParameter("p0", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT); - - private final PParameter parameter_p1 = new PParameter("p1", "org.eclipse.emf.ecore.EClass", new EClassTransitiveInstancesKey((EClass)getClassifierLiteralSafe("http://www.eclipse.org/emf/2002/Ecore", "EClass")), PParameterDirection.INOUT); - - private final List embeddedParameters = Arrays.asList(parameter_p0, parameter_p1); - - public Embedded_1_EClass_eSuperTypes() { - super(PVisibility.EMBEDDED); - } - - @Override - public String getFullyQualifiedName() { - return GeneratedPQuery.this.getFullyQualifiedName() + "$Embedded_1_EClass_eSuperTypes"; - } - - @Override - public List getParameters() { - return embeddedParameters; - } - - @Override - public Set doGetContainedBodies() { - PBody body = new PBody(this); - PVariable var_p0 = body.getOrCreateVariableByName("p0"); - PVariable var_p1 = body.getOrCreateVariableByName("p1"); - body.setSymbolicParameters(Arrays.asList( - new ExportedParameter(body, var_p0, parameter_p0), - new ExportedParameter(body, var_p1, parameter_p1) - )); - // EClass.eSuperTypes(c,_) - new TypeConstraint(body, Tuples.flatTupleOf(var_p0), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass"))); - PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}"); - new TypeConstraint(body, Tuples.flatTupleOf(var_p0, var__virtual_0_), new EStructuralFeatureInstancesKey(getFeatureLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass", "eSuperTypes"))); - new TypeConstraint(body, Tuples.flatTupleOf(var__virtual_0_), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass"))); - new Equality(body, var__virtual_0_, var_p1); - return Collections.singleton(body); - } - } - - private GeneratedPQuery() { - super(PVisibility.PUBLIC); - } - - @Override - public String getFullyQualifiedName() { - return "ecore.moreThenFiveSuperTypes"; - } - - @Override - public List getParameterNames() { - return Arrays.asList("c"); - } - - @Override - public List getParameters() { - return parameters; - } - - @Override - public Set doGetContainedBodies() { - setEvaluationHints(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.UNSPECIFIED)); - Set bodies = new LinkedHashSet<>(); - { - PBody body = new PBody(this); - PVariable var_c = body.getOrCreateVariableByName("c"); - PVariable var_m = body.getOrCreateVariableByName("m"); - PVariable var___0_ = body.getOrCreateVariableByName("_<0>"); - new TypeConstraint(body, Tuples.flatTupleOf(var_c), new EClassTransitiveInstancesKey((EClass)getClassifierLiteral("http://www.eclipse.org/emf/2002/Ecore", "EClass"))); - body.setSymbolicParameters(Arrays.asList( - new ExportedParameter(body, var_c, parameter_c) - )); - // m == count EClass.eSuperTypes(c,_) - PVariable var__virtual_0_ = body.getOrCreateVariableByName(".virtual{0}"); - new PatternMatchCounter(body, Tuples.flatTupleOf(var_c, var___0_), new MoreThenFiveSuperTypes.GeneratedPQuery.Embedded_1_EClass_eSuperTypes(), var__virtual_0_); - new Equality(body, var_m, var__virtual_0_); - // check(m >= 5) - new ExpressionEvaluation(body, new IExpressionEvaluator() { - - @Override - public String getShortDescription() { - return "Expression evaluation from pattern moreThenFiveSuperTypes"; - } - - @Override - public Iterable getInputParameterNames() { - return Arrays.asList("m");} - - @Override - public Object evaluateExpression(IValueProvider provider) throws Exception { - Integer m = (Integer) provider.getValue("m"); - return evaluateExpression_1_1(m); - } - }, null); - bodies.add(body); - } - { - PAnnotation annotation = new PAnnotation("Constraint"); - annotation.addAttribute("severity", "error"); - annotation.addAttribute("message", "error"); - annotation.addAttribute("key", Arrays.asList(new Object[] { - new ParameterReference("c") - })); - addAnnotation(annotation); - } - return bodies; - } - } - - private static boolean evaluateExpression_1_1(final Integer m) { - return ((m).intValue() >= 5); - } -} diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/ecore.ecore b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/ecore.ecore new file mode 100644 index 00000000..e7dc2768 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/ecore.ecore @@ -0,0 +1,1016 @@ + + + + +

    +
    + + +
    + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + + + +
    +
    + + +
    + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + + +
    +
    + + + + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    + + + + +
    +
    + + + + +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    + + + + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + + + + +
    +
    + + +
    +
    + + + + +
    +
    + + +
    +
    + + + + + + +
    +
    + + + +
    +
    + + + + + +
    + + + + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    + + + + + +
    +
    + + +
    + + + + + + + + + + + + +
    +
    + + + + + +
    + + + + +
    +
    + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + + + + +
    + + + + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    + + + + +
    +
    + + + + +
    + + + + +
    + + + + + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    + + + + + + +
    +
    + + + + + + +
    +
    + + + + + +
    +
    + + +
    + + + +
    +
    + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + + + + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + +
    +
    + + + + +
    +
    + + +
    +
    + + + + + + +
    +
    + + +
    + + + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + + + +
    +
    + + + + + +
    +
    + + +
    + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    + + + + +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + +
    + + + + + + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + + + +
    + + + + + +
    +
    + + +
    + + + +
    +
    + + +
    +
    + + + + +
    +
    + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + +
    +
    + + + + + +
    +
    + + + +
    +
    + + + + 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 index 2add9f0e..dfde6593 100644 --- 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 @@ -18,9 +18,9 @@ import org.eclipse.emf.ecore.EReference class Main { var static Domain d = Domain.Yakindumm; val static String suffix = '.xmi' - val static String OUTPUT_FOLDER = "Inputs/yakindumm/human/humanInput100/"; - val static String INPUT_FOLDER = "outputs/Human/"; - val static int NUM_RUNS = 100; + val static String OUTPUT_FOLDER = "Inputs/measurement2/yakindu/Alloy/"; + val static String INPUT_FOLDER = "outputs/measurement2/yakindu/Alloy/"; + val static int NUM_RUNS = 1; static class RWInformation{ public var String inputFolder; @@ -37,7 +37,6 @@ class Main { def static void main(String[] args){ //init model var EPackage metamodel; - //init viatra engine for the violation checker ReteEngine.getClass(); diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend index 4c9246d1..697b2639 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.xtend @@ -162,9 +162,11 @@ class PartialInterpretationMetricDistance { def double[] calculateFeature(int step, int violations){ var features = newDoubleArrayOfSize(2); //constant term - features.set(0, 1); - features.set(0, Math.sqrt(step) + 30) - features.set(1, 1.0 / (step + 30) ); + features.set(0, 1); //a + features.set(0, Math.sqrt(step) + 30) // b + features.set(1, 1.0 / (step + 30) );// c + + // features.set(2, violations); // features.set(3, Math.pow(violations, 2)); diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.xtend index af05a1cd..31788bb2 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.xtend +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.xtend @@ -186,5 +186,9 @@ class GraphStatistic { return outgoingEdges; } + def HashMap> incomingEdges(){ + return incomingEdges; + } + } diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.xtend index 858113e9..053e0da3 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.xtend +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.xtend @@ -22,6 +22,7 @@ import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl import org.eclipse.emf.ecore.EGenericType import org.eclipse.emf.ecore.EStructuralFeature +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.TypedClusteringCoefficientMetric class GraphReader{ val ResourceSet resSet = new ResourceSetImpl(); @@ -58,8 +59,6 @@ class GraphReader{ var count = 1 //check all files in the directory with suffix for(String name : dir.list.filter[it| it.endsWith(suffix)]){ - println(name) - println(count) val file = new File(name); val roots = readModel(EObject, path, file.name); //add a list of metrics diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.xtend index 06e88efc..2e7be586 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.xtend +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.xtend @@ -2,6 +2,7 @@ package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup +import github.impl.GithubPackageImpl import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.YakindummPackageImpl import java.util.HashMap import org.eclipse.emf.ecore.EReference @@ -19,7 +20,7 @@ class RepMetricsReader { }else if (d == Domain.Ecore){ reader = new GraphReader(EcorePackageImpl.eINSTANCE, '.ecore'); }else if (d == Domain.Github){ - // Initialize the reader with github package + reader = new GraphReader(GithubPackageImpl.eINSTANCE, '.githubmodel') } domain = d; @@ -58,6 +59,13 @@ class RepMetricsReader { nodeTypeSamples.put('EGenericType', 0.002014098690835851); nodeTypeSamples.put('EOperation', 0.009415911379657605); nodeTypeSamples.put('ETypeParameter', 0.0007049345417925478); + }else if (d == Domain.Github){ + nodeTypeSamples.put('Project', 0.012636538873420432); + nodeTypeSamples.put('Commit', 0.5525808524309276); + nodeTypeSamples.put('User', 0.05847076461769116); + nodeTypeSamples.put('Issue', 0.12743628185907047); + nodeTypeSamples.put('PullRequest', 0.07560505461554937); + nodeTypeSamples.put('IssueEvent', 0.17327050760334123); } diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.xtend index 93f5ccd4..0b6d61c6 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.xtend +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.xtend @@ -4,6 +4,7 @@ import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatis import java.text.DecimalFormat import java.util.ArrayList import java.util.HashMap +import java.util.HashSet import org.eclipse.emf.ecore.EObject class TypedClusteringCoefficientMetric extends Metric { @@ -18,7 +19,9 @@ class TypedClusteringCoefficientMetric extends Metric { //calculate the metric distribution g.allNodes.forEach[n| var coef = calculateTCC1(n, g); - + if(coef > 0){ + println(n); + } //format number to String val value = formatter.format(coef); if(!map.containsKey(value)){ @@ -61,15 +64,20 @@ class TypedClusteringCoefficientMetric extends Metric { var triangles = 0; for(type1 : g.allTypes){ - val type1EdgeTargetNodes = g.outgoingEdges.get(type1).values; + val typed1RelatedOfN = new HashSet(g.outgoingEdges.get(type1).get(n)); + val type1EdgeSourceNodesOfN = new HashSet(g.incomingEdges.get(type1).get(n)); + + typed1RelatedOfN.addAll(type1EdgeSourceNodesOfN); + + // number of wedges - val d = type1EdgeTargetNodes.size - wedges += d * (d-1) + val d = typed1RelatedOfN.size + wedges += d * (d-1) // we will also count each closed triangle twice // pairs of neighbors - for (n1: type1EdgeTargetNodes) { - for (n2: type1EdgeTargetNodes) { + for (n1: typed1RelatedOfN) { + for (n2: typed1RelatedOfN) { for(type2 : g.allTypes){ if ((type1 != type2) && (g.outgoingEdges.get(type2).containsEntry(n1, n2) || @@ -81,10 +89,11 @@ class TypedClusteringCoefficientMetric extends Metric { } } } + if (wedges == 0.0) { return 0.0 } else { - return triangles/wedges + return (triangles as double)/wedges } } } \ No newline at end of file diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.xtend index 3c98bb1c..4db5f940 100644 --- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.xtend +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.xtend @@ -2,7 +2,7 @@ package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.validation import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain import com.google.common.reflect.ClassPath -import ecore.Ecore_pattern +import ecore.Ecore import hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu.Patterns import java.util.ArrayList import org.eclipse.emf.ecore.EObject @@ -23,7 +23,7 @@ class ViolationCheck { } var constriants = loadConstraints(packageName); - var collections = new ConstraintCollection(constriants, Ecore_pattern.instance); + var collections = new ConstraintCollection(constriants, Ecore.instance); collections.addModel(root); var results = collections.calculateViolations(); if(results.size > 0){ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/MPC.png index b6d4fbff..b8930a7b 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/MPC.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/MPC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Node_Activity.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Node_Activity.png index 226675e8..d55a000c 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Node_Activity.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Node_Activity.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Node_Type.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Node_Type.png index 96814887..554923f5 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Node_Type.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Node_Type.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Out_Degree.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Out_Degree.png index 3f5e3b38..1a605f9a 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Out_Degree.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Out_Degree.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Violations.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Violations.png index 6e052662..719249d4 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Violations.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/ecore/Violations.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/MPC.png new file mode 100644 index 00000000..8f59786d Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/MPC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Node_Activity.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Node_Activity.png new file mode 100644 index 00000000..a3775f23 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Node_Activity.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Node_Type.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Node_Type.png new file mode 100644 index 00000000..5d3f81e1 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Node_Type.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Out_Degree.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Out_Degree.png new file mode 100644 index 00000000..a89eb552 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Out_Degree.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Violations.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Violations.png new file mode 100644 index 00000000..50a4cba0 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/github/Violations.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/MPC.png index b4f2b9a2..fcff0dfe 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/MPC.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/MPC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Node_Activity.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Node_Activity.png index 44da865d..ad44025f 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Node_Activity.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Node_Activity.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Node_Type.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Node_Type.png index fb9b86d1..a61d6e5a 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Node_Type.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Node_Type.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Out_Degree.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Out_Degree.png index 49e4222a..4749db22 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Out_Degree.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Out_Degree.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Violations.png b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Violations.png index 7d131230..ac09e580 100644 Binary files a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Violations.png and b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/output/yakindumm/Violations.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/BoxPlot.ipynb b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/BoxPlot.ipynb index 6cce3f9d..5db66bb3 100644 --- a/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/BoxPlot.ipynb +++ b/Metrics/Metrics-Calculation/metrics_plot/Measurements/Measurement1/src/BoxPlot.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 173, "metadata": {}, "outputs": [], "source": [ @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 174, "metadata": {}, "outputs": [], "source": [ @@ -39,11 +39,11 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 175, "metadata": {}, "outputs": [], "source": [ - "domain = 'ecore'\n", + "domain = 'github'\n", "mpc_guide = getModels('../input/{}/MPC/'.format(domain), 100)\n", "na_guide = getModels('../input/{}/NodeActivity/'.format(domain), 100)\n", "od_guide = getModels('../input/{}/OutDegree/'.format(domain), 100)\n", @@ -57,19 +57,21 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 176, "metadata": {}, "outputs": [], "source": [ "if domain == 'yakindumm':\n", " type_map = {'Entry': 0.04257802080554814, 'Choice': 0.1267671379034409, 'State': 0.1596092291277674, 'Transition': 0.6138636969858629, 'Statechart': 0.010136036276340358, 'Region': 0.04467858095492131, 'Exit': 0.0018338223526273673, 'FinalState': 0.0005334755934915977}\n", "elif domain == 'ecore':\n", - " type_map = {'EAttribute': 0.23539778449144008, 'EClass': 0.30996978851963747, 'EReference': 0.33081570996978854, 'EPackage': 0.012789526686807653, 'EAnnotation': 0.002517623363544813, 'EEnumLiteral': 0.07275931520644502, 'EEnum': 0.013645518630412891, 'EDataType': 0.004028197381671702, 'EParameter': 0.005941591137965764, 'EGenericType': 0.002014098690835851, 'EOperation': 0.009415911379657605, 'ETypeParameter': 0.0007049345417925478}" + " type_map = {'EAttribute': 0.23539778449144008, 'EClass': 0.30996978851963747, 'EReference': 0.33081570996978854, 'EPackage': 0.012789526686807653, 'EAnnotation': 0.002517623363544813, 'EEnumLiteral': 0.07275931520644502, 'EEnum': 0.013645518630412891, 'EDataType': 0.004028197381671702, 'EParameter': 0.005941591137965764, 'EGenericType': 0.002014098690835851, 'EOperation': 0.009415911379657605, 'ETypeParameter': 0.0007049345417925478}\n", + "elif domain == 'github':\n", + " type_map = {'Project': 0.012636538873420432, 'Commit': 0.5525808524309276, 'User': 0.05847076461769116, 'Issue': 0.12743628185907047, 'PullRequest': 0.07560505461554937, 'IssueEvent': 0.17327050760334123}" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 177, "metadata": {}, "outputs": [], "source": [ @@ -92,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 178, "metadata": {}, "outputs": [], "source": [ @@ -103,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 179, "metadata": {}, "outputs": [], "source": [ @@ -121,11 +123,10 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 180, "metadata": {}, "outputs": [], "source": [ - "labels = ['Hum', 'Comb+V', 'Comb-V', 'MPC', 'NA', 'OD', 'NTD', 'VIO']\n", "output_path = '../output/{}/'.format(domain)\n", "mkdir(output_path)" ] @@ -139,31 +140,30 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 181, "metadata": {}, "outputs": [], "source": [ - "def drawBoxDiagram(title, target, types, distance_func, bold_index):\n", + "def drawBoxDiagram(title, target, types, distance_func, label_position):\n", " distances = []\n", " for distributions in types:\n", " distances.append([distance_func(target, distribution) for distribution in distributions])\n", " fig, ax1 = plt.subplots()\n", " fig.set_size_inches(5, 2)\n", " result = plt.boxplot(distances)\n", + " ax1.xaxis.set_ticks_position(label_position) \n", " texts = ax1.set_xticklabels(labels, rotation=90, fontsize=12)\n", - " texts[bold_index].set_fontweight('bold')\n", - " \n", " plt.savefig('{}/{}.png'.format(output_path, title), dpi=500, bbox_inches=\"tight\")" ] }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 182, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -177,19 +177,20 @@ "source": [ "# draw mpc\n", "mpc_types = []\n", + "labels = ['Hum', 'Comb+V', 'Comb-V', 'MPC', 'NA', 'OD', 'NTD', 'VIO']\n", "for models in model_types:\n", " mpc_types.append([model.mpc for model in models])\n", - "drawBoxDiagram('MPC', rep.mpc, mpc_types, calculate_ks, 3)" + "drawBoxDiagram('MPC', rep.mpc, mpc_types, calculate_ks, 'top')" ] }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 183, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -203,19 +204,20 @@ "source": [ "# draw node activity\n", "na_types = []\n", + "labels = []\n", "for models in model_types:\n", " na_types.append([model.na for model in models])\n", - "drawBoxDiagram('Node_Activity', rep.na, na_types, calculate_ks, 4)" + "drawBoxDiagram('Node_Activity', rep.na, na_types, calculate_ks, 'top')" ] }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 184, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -229,14 +231,15 @@ "source": [ "# draw out degree\n", "out_d_types = []\n", + "labels = []\n", "for models in model_types:\n", " out_d_types.append([model.out_d for model in models])\n", - "drawBoxDiagram('Out_Degree', rep.out_d, out_d_types, calculate_ks, 5)" + "drawBoxDiagram('Out_Degree', rep.out_d, out_d_types, calculate_ks, 'top')" ] }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 185, "metadata": {}, "outputs": [], "source": [ @@ -253,19 +256,19 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 186, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "['EAnnotation', 'EAttribute', 'EClass', 'EDataType', 'EEnum', 'EEnumLiteral', 'EGenericType', 'EOperation', 'EPackage', 'EParameter', 'EReference', 'ETypeParameter']\n" + "['Commit', 'Issue', 'IssueEvent', 'Project', 'PullRequest', 'User']\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -278,6 +281,7 @@ ], "source": [ "# draw node type\n", + "labels = []\n", "types = sorted(rep.nodeTypeStat.keys())\n", "rep_type_dist = [float(rep.nodeTypeStat[key]) for key in types]\n", "print(types)\n", @@ -289,17 +293,17 @@ " node_type_types.append(type_dists)\n", "\n", "#since we already know the pdf, we can compute the ks distance manually\n", - "drawBoxDiagram('Node_Type', rep_type_dist, node_type_types, manual_ks, 6)" + "drawBoxDiagram('Node_Type', rep_type_dist, node_type_types, manual_ks, 'top')" ] }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 187, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
    " ] @@ -313,9 +317,10 @@ "source": [ "# draw violations\n", "violation_types = []\n", + "labels = ['Hum', 'Comb+V', 'Comb-V', 'MPC', 'NA', 'OD', 'NTD', 'VIO']\n", "for models in model_types:\n", " violation_types.append([model.violations for model in models])\n", - "drawBoxDiagram('Violations', None, violation_types, lambda a, b:b, 7)" + "drawBoxDiagram('Violations', None, violation_types, lambda a, b:b, 'bottom')" ] }, { diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/MPC.png new file mode 100644 index 00000000..d184e5bf Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/MPC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png new file mode 100644 index 00000000..0dea77f2 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Activity.png new file mode 100644 index 00000000..192fe6f0 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Activity.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png new file mode 100644 index 00000000..4db337ef Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Types.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Types.png new file mode 100644 index 00000000..2f24cda9 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Types.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png new file mode 100644 index 00000000..14dcc501 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree.png new file mode 100644 index 00000000..6f40ea4d Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png new file mode 100644 index 00000000..f2e3230b Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/ecore/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/MPC.png new file mode 100644 index 00000000..834a91aa Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/MPC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png new file mode 100644 index 00000000..b3783c77 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Activity.png new file mode 100644 index 00000000..2828f1fd Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Activity.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png new file mode 100644 index 00000000..4a50e619 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Types.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Types.png new file mode 100644 index 00000000..991ff1ff Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Types.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png new file mode 100644 index 00000000..d13686c8 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Out_Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Out_Degree.png new file mode 100644 index 00000000..12b4ce33 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Out_Degree.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png new file mode 100644 index 00000000..03fe9740 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/github/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-/TCC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-/TCC.png new file mode 100644 index 00000000..31a83155 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-/TCC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-/TCC_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-/TCC_lengend.png new file mode 100644 index 00000000..e29f59cb Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-/TCC_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Rand-GS-Real-/TCC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Rand-GS-Real-/TCC.png new file mode 100644 index 00000000..a3d56a23 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Rand-GS-Real-/TCC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Rand-GS-Real-/TCC_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Rand-GS-Real-/TCC_lengend.png new file mode 100644 index 00000000..58cefaff Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Rand-GS-Real-/TCC_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Real-/TCC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Real-/TCC.png new file mode 100644 index 00000000..e9614b89 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Real-/TCC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Real-/TCC_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Real-/TCC_lengend.png new file mode 100644 index 00000000..f0cee20a Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/test/Hum-Real-/TCC_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/MPC.png new file mode 100644 index 00000000..a53bda79 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/MPC.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png new file mode 100644 index 00000000..7a49fb91 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/MPC_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Activity.png new file mode 100644 index 00000000..bf6ca9ba Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Activity.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png new file mode 100644 index 00000000..d82a124e Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Activity_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Types.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Types.png new file mode 100644 index 00000000..0e7b1e46 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Types.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png new file mode 100644 index 00000000..7f9e560e Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Node_Types_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Out_Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Out_Degree.png new file mode 100644 index 00000000..928a0704 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Out_Degree.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png new file mode 100644 index 00000000..0059a925 Binary files /dev/null and b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Hum-All-Rand-GS-Real-Med-/Out_Degree_lengend.png differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/MPC.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/MPC.png deleted file mode 100644 index b4895790..00000000 Binary files a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/MPC.png and /dev/null differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/MPC_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/MPC_lengend.png deleted file mode 100644 index 31cd1fa1..00000000 Binary files a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/MPC_lengend.png and /dev/null differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node Types.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node Types.png deleted file mode 100644 index ad522d86..00000000 Binary files a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node Types.png and /dev/null differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node Types_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node Types_lengend.png deleted file mode 100644 index 5507adde..00000000 Binary files a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node Types_lengend.png and /dev/null differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node_Activity.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node_Activity.png deleted file mode 100644 index b080c54d..00000000 Binary files a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node_Activity.png and /dev/null differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node_Activity_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node_Activity_lengend.png deleted file mode 100644 index 8d45735a..00000000 Binary files a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Node_Activity_lengend.png and /dev/null differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Out_Degree.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Out_Degree.png deleted file mode 100644 index 9dbcd05f..00000000 Binary files a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Out_Degree.png and /dev/null differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Out_Degree_lengend.png b/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Out_Degree_lengend.png deleted file mode 100644 index 1fee8654..00000000 Binary files a/Metrics/Metrics-Calculation/metrics_plot/model comparison/output/yakindu/Human-Alloy-BaseViatra-RealViatra-Random-rep-/Out_Degree_lengend.png and /dev/null differ diff --git a/Metrics/Metrics-Calculation/metrics_plot/model comparison/src/plot_ks_stats.py b/Metrics/Metrics-Calculation/metrics_plot/model comparison/src/plot_ks_stats.py index af231a98..75fe78eb 100644 --- a/Metrics/Metrics-Calculation/metrics_plot/model comparison/src/plot_ks_stats.py +++ b/Metrics/Metrics-Calculation/metrics_plot/model comparison/src/plot_ks_stats.py @@ -11,27 +11,40 @@ from GraphType import GraphCollection import DistributionMetrics as metrics def main(): + domain = 'github' # read models - alloy = GraphCollection('../input/measurement2/yakindu/Alloy/', 100, 'Alloy') - human = GraphCollection('../input/measurement2/yakindu/Human/', 304, 'Human') - base = GraphCollection('../input/measurement2/yakindu/BaseViatra/', 100, 'BaseViatra') - real = GraphCollection('../input/measurement2/yakindu/RealViatra/', 100, 'RealViatra') - random = GraphCollection('../input/measurement2/yakindu/Random/', 100, 'Random') - na_rep = GraphCollection('../input/measurement2/yakindu/Human/na_rep/', 1, 'rep') - mpc_rep = GraphCollection('../input/measurement2/yakindu/Human/mpc_rep/', 1, 'rep') - od_rep = GraphCollection('../input/measurement2/yakindu/Human/od_rep/', 1, 'rep') + alloy = GraphCollection('../input/measurement2/{}/Alloy/'.format(domain), 100, 'All') + human = GraphCollection('../input/measurement2/{}/Human/'.format(domain), 304, 'Hum') + base = GraphCollection('../input/measurement2/{}/BaseViatra/'.format(domain), 100, 'GS') + real = GraphCollection('../input/measurement2/{}/RealViatra/'.format(domain), 100, 'Real') + random = GraphCollection('../input/measurement2/{}/Random/'.format(domain), 100, 'Rand') + na_rep = GraphCollection('../input/measurement2/{}/Human/na_rep/'.format(domain), 1, 'Med') + mpc_rep = GraphCollection('../input/measurement2/{}/Human/mpc_rep/'.format(domain), 1, 'Med') + od_rep = GraphCollection('../input/measurement2/{}/Human/od_rep/'.format(domain), 1, 'Med') # a hack to make the node type as the same as an exiting model - type_rep = GraphCollection('../input/measurement2/yakindu/Human/od_rep/', 1, 'rep') - type_rep.nts = [{'Entry': 0.04257802080554814, 'Choice': 0.1267671379034409, 'State': 0.1596092291277674, 'Transition': 0.6138636969858629, 'Statechart': 0.010136036276340358, 'Region': 0.04467858095492131, 'Exit': 0.0018338223526273673, 'FinalState': 0.0005334755934915977}] - # type_rep.nts = [{'EAttribute': 0.23539778449144008, 'EClass': 0.30996978851963747, 'EReference': 0.33081570996978854, 'EPackage': 0.012789526686807653, 'EAnnotation': 0.002517623363544813, 'EEnumLiteral': 0.07275931520644502, 'EEnum': 0.013645518630412891, 'EDataType': 0.004028197381671702, 'EParameter': 0.005941591137965764, 'EGenericType': 0.002014098690835851, 'EOperation': 0.009415911379657605, 'ETypeParameter': 0.0007049345417925478}] + type_rep = GraphCollection('../input/measurement2/{}/Human/od_rep/'.format(domain), 1, 'Med') + if(domain == 'yakindu'): + type_rep.nts = [{'Entry': 0.04257802080554814, 'Choice': 0.1267671379034409, 'State': 0.1596092291277674, 'Transition': 0.6138636969858629, 'Statechart': 0.010136036276340358, 'Region': 0.04467858095492131, 'Exit': 0.0018338223526273673, 'FinalState': 0.0005334755934915977}] + elif (domain == 'ecore'): + type_rep.nts = [{'EAttribute': 0.23539778449144008, 'EClass': 0.30996978851963747, 'EReference': 0.33081570996978854, 'EPackage': 0.012789526686807653, 'EAnnotation': 0.002517623363544813, 'EEnumLiteral': 0.07275931520644502, 'EEnum': 0.013645518630412891, 'EDataType': 0.004028197381671702, 'EParameter': 0.005941591137965764, 'EGenericType': 0.002014098690835851, 'EOperation': 0.009415911379657605, 'ETypeParameter': 0.0007049345417925478}] + elif (domain == 'github'): + type_rep.nts = [{'Project': 0.012636538873420432, 'Commit': 0.5525808524309276, 'User': 0.05847076461769116, 'Issue': 0.12743628185907047, 'PullRequest': 0.07560505461554937, 'IssueEvent': 0.17327050760334123}] + types = sorted(type_rep.nts[0].keys()) - models_to_compare_na = [human, alloy, base, real, random, na_rep] - models_to_compare_mpc = [human, alloy, base, real, random, mpc_rep] - models_to_compare_od = [human, alloy, base, real, random, od_rep] - models_to_compare_nt = [human, alloy, base, real, random, type_rep] + model_collections = [human, alloy, random, base, real] + for model_collection in model_collections: + print(model_collection.name) + length = len(model_collection.violations) + percentage = sum(map(lambda v: int(v==0), model_collection.violations)) / length + print(percentage) + + models_to_compare_na = [human, alloy, random, base, real, na_rep] + models_to_compare_mpc = [human, alloy, random, base, real, mpc_rep] + models_to_compare_od = [human, alloy, random, base, real, od_rep] + models_to_compare_nt = [human, alloy, random, base, real, type_rep] for modelCollection in models_to_compare_nt: type_dists = [] for nt in modelCollection.nts: @@ -43,13 +56,13 @@ def main(): # define output folder - outputFolder = '../output/yakindu/' + outputFolder = '../output/{}/'.format(domain) #calculate metrics metricStat(models_to_compare_na, 'Node_Activity', nodeActivity, 0, outputFolder, calculateKSMatrix) metricStat(models_to_compare_od, 'Out_Degree', outDegree, 1, outputFolder, calculateKSMatrix) metricStat(models_to_compare_mpc, 'MPC', mpc, 2, outputFolder, calculateKSMatrix) - metricStat(models_to_compare_nt, 'Node_Types', nodeType, 3, outputFolder, calculateManualKSMatrix) + metricStat(models_to_compare_nt, 'Node_Types', nodeType, 3, outputFolder, calculateManualKSMatrix) def calculateKSMatrix(dists): dist = [] @@ -88,16 +101,17 @@ def calculateMDS(dissimilarities): return trans def plot(graphTypes, coords, title='',index = 0, savePath = ''): - color = ['blue' , 'm', 'gold', 'green', 'k', 'red'] - markers = ['o', 'v','+', 'x', '^', '*'] - plt.figure(index, figsize=(5, 4)) + color = ['#377eb8' , '#e41a1c', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33'] + markers = ['o', '+', 'x', '^', 'v', '*'] + fill_styles = ['full', 'full', 'full', 'none', 'none', 'full'] + plt.figure(index, figsize=(5, 2)) # plt.title(title) index = 0 for i in range(len(graphTypes)): x = (coords[index:index+graphTypes[i].size, 0].tolist()) y = (coords[index:index+graphTypes[i].size, 1].tolist()) index += graphTypes[i].size - plt.plot(x, y, color=color[i], marker=markers[i], label = graphTypes[i].name, linestyle='', alpha=0.7) + plt.plot(x, y, color=color[i], marker=markers[i], label = graphTypes[i].name, linestyle='', alpha=0.7, fillstyle = fill_styles[i]) plt.savefig(fname = savePath+'.png', dpi=500) plt.legend(loc='upper right') plt.savefig(fname = savePath+'_lengend.png', dpi=500) @@ -137,5 +151,8 @@ def mpc(graphType): def nodeType(graphType): return graphType.nts +def tcc(graphType): + return graphType.tccs + if __name__ == '__main__': main() \ No newline at end of file diff --git a/Metrics/Metrics-Calculation/metrics_plot/utils/GraphType.py b/Metrics/Metrics-Calculation/metrics_plot/utils/GraphType.py index 41054294..48d96ccc 100644 --- a/Metrics/Metrics-Calculation/metrics_plot/utils/GraphType.py +++ b/Metrics/Metrics-Calculation/metrics_plot/utils/GraphType.py @@ -12,6 +12,8 @@ class GraphCollection: self.mpcs = [] self.nts = [] self.name = name + self.tccs = [] + self.violations = [] models = reader.readmultiplefiles(path, number, shouldShuffle) print(len(models)) self.size = len(models) @@ -22,6 +24,10 @@ class GraphCollection: self.mpcs.append(mpc) if(constants.Node_TYPE_KEY in contents): self.nts.append(contents[constants.Node_TYPE_KEY]) + if(constants.TCC_VALUE in contents): + self.tccs.append(contents[constants.TCC_VALUE]) + if(constants.VIOLATION in contents): + self.violations.append(contents[constants.VIOLATION][0]) #Graph stat for one graph class GraphStat: @@ -35,4 +41,6 @@ class GraphStat: self.nodeTypeStat = contents[constants.Node_TYPE_KEY] if constants.VIOLATION in contents: self.violations = int(contents[constants.VIOLATION][0]) + if(constants.TCC_VALUE_KEY in contents): + self.tcc = contents[constants.TCC_VALUE_KEY] diff --git a/Metrics/Metrics-Calculation/metrics_plot/utils/constants.py b/Metrics/Metrics-Calculation/metrics_plot/utils/constants.py index be115a05..e30cc583 100644 --- a/Metrics/Metrics-Calculation/metrics_plot/utils/constants.py +++ b/Metrics/Metrics-Calculation/metrics_plot/utils/constants.py @@ -30,3 +30,6 @@ HUMAN_NA_REP = '../input/humanOutput/R_2017419_run_1.csv' VIOLATION = 'violations' +TCC_VALUE= 'TCCValue' + +TCC_COUNT = 'TCCCount' diff --git a/Metrics/Metrics-Calculation/metrics_plot/utils/readCSV.py b/Metrics/Metrics-Calculation/metrics_plot/utils/readCSV.py index 394168d8..a56caf45 100644 --- a/Metrics/Metrics-Calculation/metrics_plot/utils/readCSV.py +++ b/Metrics/Metrics-Calculation/metrics_plot/utils/readCSV.py @@ -33,6 +33,8 @@ def readcsvfile(filename): #convert number to floats numbers = [float(n) for n in numbers] contents[constants.Node_TYPE_KEY] = {t : n for t, n in zip(types, numbers)} + elif(arr[0] == constants.TCC_VALUE): + contents[constants.TCC_VALUE] = list(map(float, arr[1:])) # NA and OD are integers, and store other information as string else: try: @@ -79,6 +81,10 @@ def getmetrics(filename): outdegree_sample = reproduceSample(contents[constants.OUT_DEGREE_VALUE], contents[constants.OUT_DEGREE_COUNT]) na_sample = reproduceSample(contents[constants.NA_VALUE], contents[constants.NA_COUNT]) mpc_sample = reproduceSample(contents[constants.MPC_VALUE], contents[constants.MPC_COUNT]) + + if(constants.TCC_VALUE in contents): + contents[constants.TCC_VALUE] = reproduceSample(contents[constants.TCC_VALUE], contents[constants.TCC_COUNT]) + return contents,outdegree_sample, na_sample, mpc_sample # -- cgit v1.2.3-54-g00ecf