diff options
author | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2019-08-28 05:56:34 -0400 |
---|---|---|
committer | ArenBabikian <aren.babikian@mail.mcgill.ca> | 2019-08-28 05:56:34 -0400 |
commit | 6b70878a56052e1c254ba8c66485f217d22db3f8 (patch) | |
tree | 66088b97e5b6c0194f1a45f70f5f05315aba9e43 /Metrics | |
parent | Pre-realisticBranchCreation Commit (diff) | |
download | VIATRA-Generator-6b70878a56052e1c254ba8c66485f217d22db3f8.tar.gz VIATRA-Generator-6b70878a56052e1c254ba8c66485f217d22db3f8.tar.zst VIATRA-Generator-6b70878a56052e1c254ba8c66485f217d22db3f8.zip |
VAMPIRE: integrate local Vampire executeable #32
Diffstat (limited to 'Metrics')
106 files changed, 2269 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.java._trace new file mode 100644 index 00000000..8ab43fde --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.xtendbin new file mode 100644 index 00000000..f502d04e --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Domain.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.java._trace new file mode 100644 index 00000000..7096f9db --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.xtendbin new file mode 100644 index 00000000..2362ebad --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.Main.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.MetricDistanceGroup.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.MetricDistanceGroup.java._trace new file mode 100644 index 00000000..f6505088 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.MetricDistanceGroup.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.java._trace new file mode 100644 index 00000000..8708c793 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.xtendbin new file mode 100644 index 00000000..d9e88699 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetric.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.java._trace new file mode 100644 index 00000000..3e381b10 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.xtendbin new file mode 100644 index 00000000..5071eb03 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/.PartialInterpretationMetricDistance.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.java new file mode 100644 index 00000000..9b626001 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Domain.java | |||
@@ -0,0 +1,10 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; | ||
2 | |||
3 | @SuppressWarnings("all") | ||
4 | public enum Domain { | ||
5 | Yakindumm, | ||
6 | |||
7 | Ecore, | ||
8 | |||
9 | Github; | ||
10 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.java new file mode 100644 index 00000000..dbb3bdd1 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/Main.java | |||
@@ -0,0 +1,99 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph; | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter; | ||
6 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader; | ||
7 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.validation.ViolationCheck; | ||
8 | import com.google.common.base.Objects; | ||
9 | import com.google.common.collect.Iterators; | ||
10 | import hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph.yakindumm.impl.YakindummPackageImpl; | ||
11 | import java.io.File; | ||
12 | import java.util.ArrayList; | ||
13 | import java.util.Iterator; | ||
14 | import org.eclipse.emf.ecore.EReference; | ||
15 | import org.eclipse.emf.ecore.impl.EcorePackageImpl; | ||
16 | import org.eclipse.xtext.xbase.lib.CollectionLiterals; | ||
17 | import org.eclipse.xtext.xbase.lib.Functions.Function1; | ||
18 | import org.eclipse.xtext.xbase.lib.InputOutput; | ||
19 | import org.eclipse.xtext.xbase.lib.IteratorExtensions; | ||
20 | import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; | ||
21 | |||
22 | @SuppressWarnings("all") | ||
23 | public class Main { | ||
24 | public static class RWInformation { | ||
25 | public String inputFolder; | ||
26 | |||
27 | public String outputFolder; | ||
28 | |||
29 | public int numRuns; | ||
30 | |||
31 | public RWInformation(final String inputFolder, final String outputFolder, final int numRuns) { | ||
32 | this.inputFolder = inputFolder; | ||
33 | this.outputFolder = outputFolder; | ||
34 | this.numRuns = numRuns; | ||
35 | } | ||
36 | } | ||
37 | |||
38 | private static Domain d = Domain.Yakindumm; | ||
39 | |||
40 | private final static String suffix = ".xmi"; | ||
41 | |||
42 | private final static String OUTPUT_FOLDER = "Inputs/measurement2/yakindu/Alloy/"; | ||
43 | |||
44 | private final static String INPUT_FOLDER = "outputs/measurement2/yakindu/Alloy/"; | ||
45 | |||
46 | private final static int NUM_RUNS = 1; | ||
47 | |||
48 | public static void main(final String[] args) { | ||
49 | throw new Error("Unresolved compilation problems:" | ||
50 | + "\nThe method or field ReteEngine is undefined" | ||
51 | + "\ngetClass cannot be resolved"); | ||
52 | } | ||
53 | |||
54 | public static String calculateAllModels(final String inputFolder, final String outputFolder, final int numRuns, final GraphReader reader) { | ||
55 | String _xblockexpression = null; | ||
56 | { | ||
57 | new File(outputFolder).mkdir(); | ||
58 | for (int i = 1; (i <= numRuns); i++) { | ||
59 | { | ||
60 | final ArrayList<EMFGraph> models = new ArrayList<EMFGraph>(); | ||
61 | models.addAll(reader.readModels(((inputFolder + "run") + Integer.valueOf(i)))); | ||
62 | for (final EMFGraph model : models) { | ||
63 | String _name = model.getName(); | ||
64 | String _plus = (outputFolder + _name); | ||
65 | String _plus_1 = (_plus + "_run_"); | ||
66 | String _plus_2 = (_plus_1 + Integer.valueOf(i)); | ||
67 | String _plus_3 = (_plus_2 + ".csv"); | ||
68 | Main.calculateAndOutputMetrics(model, YakindummPackageImpl.eNAME, _plus_3); | ||
69 | } | ||
70 | } | ||
71 | } | ||
72 | _xblockexpression = InputOutput.<String>println(("output results Ended for: " + outputFolder)); | ||
73 | } | ||
74 | return _xblockexpression; | ||
75 | } | ||
76 | |||
77 | public static void calculateAndOutputMetrics(final EMFGraph model, final String metaModel, final String fileName) { | ||
78 | model.setMetaModel(metaModel); | ||
79 | boolean _equals = Objects.equal(Main.d, Domain.Ecore); | ||
80 | if (_equals) { | ||
81 | final Function1<EReference, Boolean> _function = (EReference it) -> { | ||
82 | return Boolean.valueOf((((((it.getName().equals("eGenericType") || it.getName().equals("eGenericSuperTypes")) || it.getName().equals("eFactoryInstance")) || | ||
83 | it.getName().equals("eGenericExceptions")) || it.getName().equals("references")) || it.getName().equals("contents"))); | ||
84 | }; | ||
85 | Iterator<EReference> refsToRemove = IteratorExtensions.<EReference>filter(Iterators.<EReference>filter(EcorePackageImpl.eINSTANCE.eAllContents(), EReference.class), _function); | ||
86 | final Procedure1<EReference> _function_1 = (EReference it) -> { | ||
87 | model.removeReference(it); | ||
88 | }; | ||
89 | IteratorExtensions.<EReference>forEach(refsToRemove, _function_1); | ||
90 | } | ||
91 | ArrayList<ArrayList<String>> outputs = model.evaluateAllMetrics(); | ||
92 | int violations = ViolationCheck.calculateViolationCounts(model.getRoot(), Main.d); | ||
93 | InputOutput.<Integer>println(Integer.valueOf(violations)); | ||
94 | String _plus = (Integer.valueOf(violations) + ""); | ||
95 | ArrayList<String> violationsOutput = CollectionLiterals.<String>newArrayList("violations", _plus); | ||
96 | outputs.add(violationsOutput); | ||
97 | CsvFileWriter.write(outputs, fileName); | ||
98 | } | ||
99 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/MetricDistanceGroup.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/MetricDistanceGroup.java new file mode 100644 index 00000000..bb0e3ffb --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/MetricDistanceGroup.java | |||
@@ -0,0 +1,49 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; | ||
2 | |||
3 | import java.util.HashMap; | ||
4 | |||
5 | @SuppressWarnings("all") | ||
6 | public class MetricDistanceGroup { | ||
7 | private double mpcDistance; | ||
8 | |||
9 | private double naDistance; | ||
10 | |||
11 | private double outDegreeDistance; | ||
12 | |||
13 | private double nodeTypeDistance; | ||
14 | |||
15 | protected HashMap<String, Double> nodeTypeInfo; | ||
16 | |||
17 | public MetricDistanceGroup(final double mpcDistance, final double naDistance, final double outDegreeDistance, final double nodeTypeDistance) { | ||
18 | this.mpcDistance = mpcDistance; | ||
19 | this.naDistance = naDistance; | ||
20 | this.outDegreeDistance = outDegreeDistance; | ||
21 | this.nodeTypeDistance = nodeTypeDistance; | ||
22 | } | ||
23 | |||
24 | public MetricDistanceGroup(final double mpcDistance, final double naDistance, final double outDegreeDistance) { | ||
25 | this.mpcDistance = mpcDistance; | ||
26 | this.naDistance = naDistance; | ||
27 | this.outDegreeDistance = outDegreeDistance; | ||
28 | } | ||
29 | |||
30 | public double getNodeTypeDistance() { | ||
31 | return this.nodeTypeDistance; | ||
32 | } | ||
33 | |||
34 | public double getMPCDistance() { | ||
35 | return this.mpcDistance; | ||
36 | } | ||
37 | |||
38 | public double getNADistance() { | ||
39 | return this.naDistance; | ||
40 | } | ||
41 | |||
42 | public double getOutDegreeDistance() { | ||
43 | return this.outDegreeDistance; | ||
44 | } | ||
45 | |||
46 | public double getNodeTypePercentage(final String typeName) { | ||
47 | return (this.nodeTypeInfo.getOrDefault(typeName, Double.valueOf(0.0))).doubleValue(); | ||
48 | } | ||
49 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.java new file mode 100644 index 00000000..d1d75d0d --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetric.java | |||
@@ -0,0 +1,54 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.JSDistance; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance; | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.PartialInterpretationGraph; | ||
6 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.CsvFileWriter; | ||
7 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
8 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric; | ||
9 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric; | ||
10 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric; | ||
11 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; | ||
12 | import java.io.File; | ||
13 | import java.util.ArrayList; | ||
14 | import java.util.List; | ||
15 | |||
16 | @SuppressWarnings("all") | ||
17 | public class PartialInterpretationMetric { | ||
18 | private static KSDistance ks; | ||
19 | |||
20 | private static JSDistance js; | ||
21 | |||
22 | public static void initPaths() { | ||
23 | new File("debug/metric/").mkdir(); | ||
24 | new File("debug/metric/trajectories/").mkdir(); | ||
25 | } | ||
26 | |||
27 | public static void calculateMetric(final PartialInterpretation partial, final String path, final String currentStateId, final Integer counter) { | ||
28 | final ArrayList<Metric> metrics = new ArrayList<Metric>(); | ||
29 | OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); | ||
30 | metrics.add(_outDegreeMetric); | ||
31 | NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); | ||
32 | metrics.add(_nodeActivityMetric); | ||
33 | MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); | ||
34 | metrics.add(_multiplexParticipationCoefficientMetric); | ||
35 | new File(path).mkdir(); | ||
36 | final String filename = (((((path + "/state_") + currentStateId) + "-") + counter) + ".csv"); | ||
37 | final PartialInterpretationGraph metricCalculator = new PartialInterpretationGraph(partial, metrics, currentStateId); | ||
38 | CsvFileWriter.write(metricCalculator.evaluateAllMetrics(), filename); | ||
39 | } | ||
40 | |||
41 | public static void outputTrajectories(final PartialInterpretation empty, final /* List<Solution> */Object solutions) { | ||
42 | throw new Error("Unresolved compilation problems:" | ||
43 | + "\nshortestTrajectory cannot be resolved" | ||
44 | + "\nmodel cannot be resolved" | ||
45 | + "\ndoNextTransformation cannot be resolved" | ||
46 | + "\nstateCoder cannot be resolved" | ||
47 | + "\ncreateStateCode cannot be resolved" | ||
48 | + "\ntoString cannot be resolved" | ||
49 | + "\ngetModel cannot be resolved" | ||
50 | + "\nstateCoder cannot be resolved" | ||
51 | + "\ncreateStateCode cannot be resolved" | ||
52 | + "\ntoString cannot be resolved"); | ||
53 | } | ||
54 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.java new file mode 100644 index 00000000..c98cbeea --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/app/PartialInterpretationMetricDistance.java | |||
@@ -0,0 +1,180 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.MetricDistanceGroup; | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.EuclideanDistance; | ||
6 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.JSDistance; | ||
7 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.KSDistance; | ||
8 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.StateData; | ||
9 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.PartialInterpretationGraph; | ||
10 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
11 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; | ||
12 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric; | ||
13 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric; | ||
14 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeTypeMetric; | ||
15 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric; | ||
16 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.predictor.LinearModel; | ||
17 | import com.google.common.base.Objects; | ||
18 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; | ||
19 | import java.util.ArrayList; | ||
20 | import java.util.List; | ||
21 | import java.util.Map; | ||
22 | import org.eclipse.xtend.lib.annotations.AccessorType; | ||
23 | import org.eclipse.xtend.lib.annotations.Accessors; | ||
24 | import org.eclipse.xtext.xbase.lib.InputOutput; | ||
25 | import org.eclipse.xtext.xbase.lib.Pure; | ||
26 | |||
27 | @SuppressWarnings("all") | ||
28 | public class PartialInterpretationMetricDistance { | ||
29 | private KSDistance ks; | ||
30 | |||
31 | private JSDistance js; | ||
32 | |||
33 | private EuclideanDistance ed; | ||
34 | |||
35 | private Map<Object, StateData> stateAndHistory; | ||
36 | |||
37 | private /* OLSMultipleLinearRegression */Object regression; | ||
38 | |||
39 | private List<StateData> samples; | ||
40 | |||
41 | private MetricSampleGroup g; | ||
42 | |||
43 | @Accessors(AccessorType.PUBLIC_GETTER) | ||
44 | private LinearModel linearModel; | ||
45 | |||
46 | public PartialInterpretationMetricDistance(final Domain d) { | ||
47 | throw new Error("Unresolved compilation problems:" | ||
48 | + "\nOLSMultipleLinearRegression cannot be resolved." | ||
49 | + "\nThe field PartialInterpretationMetricDistance.regression refers to the missing type OLSMultipleLinearRegression" | ||
50 | + "\nThe field PartialInterpretationMetricDistance.regression refers to the missing type OLSMultipleLinearRegression" | ||
51 | + "\nnoIntercept cannot be resolved"); | ||
52 | } | ||
53 | |||
54 | public MetricDistanceGroup calculateMetricDistanceKS(final PartialInterpretation partial) { | ||
55 | final ArrayList<Metric> metrics = new ArrayList<Metric>(); | ||
56 | OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); | ||
57 | metrics.add(_outDegreeMetric); | ||
58 | NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); | ||
59 | metrics.add(_nodeActivityMetric); | ||
60 | MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); | ||
61 | metrics.add(_multiplexParticipationCoefficientMetric); | ||
62 | NodeTypeMetric _nodeTypeMetric = new NodeTypeMetric(); | ||
63 | metrics.add(_nodeTypeMetric); | ||
64 | final PartialInterpretationGraph metricCalculator = new PartialInterpretationGraph(partial, metrics, null); | ||
65 | MetricSampleGroup metricSamples = metricCalculator.evaluateAllMetricsToSamples(); | ||
66 | double mpc = this.ks.mpcDistance(metricSamples.mpcSamples); | ||
67 | double na = this.ks.naDistance(metricSamples.naSamples); | ||
68 | double outDegree = this.ks.outDegreeDistance(metricSamples.outDegreeSamples); | ||
69 | double nodeType = this.ks.nodeTypeDistance(metricSamples.nodeTypeSamples); | ||
70 | MetricDistanceGroup distance = new MetricDistanceGroup(mpc, na, outDegree, nodeType); | ||
71 | distance.nodeTypeInfo = metricSamples.nodeTypeSamples; | ||
72 | return distance; | ||
73 | } | ||
74 | |||
75 | public MetricDistanceGroup calculateMetricEuclidean(final PartialInterpretation partial) { | ||
76 | final ArrayList<Metric> metrics = new ArrayList<Metric>(); | ||
77 | OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); | ||
78 | metrics.add(_outDegreeMetric); | ||
79 | NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); | ||
80 | metrics.add(_nodeActivityMetric); | ||
81 | MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); | ||
82 | metrics.add(_multiplexParticipationCoefficientMetric); | ||
83 | final PartialInterpretationGraph metricCalculator = new PartialInterpretationGraph(partial, metrics, null); | ||
84 | MetricSampleGroup metricSamples = metricCalculator.evaluateAllMetricsToSamples(); | ||
85 | double mpc = this.ed.mpcDistance(metricSamples.mpcSamples); | ||
86 | double na = this.ed.naDistance(metricSamples.naSamples); | ||
87 | double outDegree = this.ed.outDegreeDistance(metricSamples.outDegreeSamples); | ||
88 | return new MetricDistanceGroup(mpc, na, outDegree); | ||
89 | } | ||
90 | |||
91 | public MetricDistanceGroup calculateMetricDistance(final PartialInterpretation partial) { | ||
92 | final ArrayList<Metric> metrics = new ArrayList<Metric>(); | ||
93 | OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); | ||
94 | metrics.add(_outDegreeMetric); | ||
95 | NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); | ||
96 | metrics.add(_nodeActivityMetric); | ||
97 | MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); | ||
98 | metrics.add(_multiplexParticipationCoefficientMetric); | ||
99 | final PartialInterpretationGraph metricCalculator = new PartialInterpretationGraph(partial, metrics, null); | ||
100 | MetricSampleGroup metricSamples = metricCalculator.evaluateAllMetricsToSamples(); | ||
101 | double mpc = this.js.mpcDistance(metricSamples.mpcSamples); | ||
102 | double na = this.js.naDistance(metricSamples.naSamples); | ||
103 | double outDegree = this.js.outDegreeDistance(metricSamples.outDegreeSamples); | ||
104 | return new MetricDistanceGroup(mpc, na, outDegree); | ||
105 | } | ||
106 | |||
107 | public String resetRegression(final Object state) { | ||
108 | String _xblockexpression = null; | ||
109 | { | ||
110 | this.samples.clear(); | ||
111 | boolean _containsKey = this.stateAndHistory.containsKey(state); | ||
112 | if (_containsKey) { | ||
113 | StateData data = this.stateAndHistory.get(state); | ||
114 | Object curState = state; | ||
115 | this.samples.add(data); | ||
116 | while ((this.stateAndHistory.containsKey(data.getLastState()) && (!Objects.equal(data.getLastState(), curState)))) { | ||
117 | { | ||
118 | curState = data.getLastState(); | ||
119 | data = this.stateAndHistory.get(data.getLastState()); | ||
120 | this.samples.add(data); | ||
121 | } | ||
122 | } | ||
123 | int _size = this.samples.size(); | ||
124 | boolean _equals = (_size == 0); | ||
125 | if (_equals) { | ||
126 | InputOutput.<String>println(("state: " + state)); | ||
127 | Object _lastState = data.getLastState(); | ||
128 | String _plus = ("last state: " + _lastState); | ||
129 | InputOutput.<String>println(_plus); | ||
130 | } | ||
131 | } | ||
132 | int _size_1 = this.samples.size(); | ||
133 | String _plus_1 = ("trajectory sample size:" + Integer.valueOf(_size_1)); | ||
134 | _xblockexpression = InputOutput.<String>println(_plus_1); | ||
135 | } | ||
136 | return _xblockexpression; | ||
137 | } | ||
138 | |||
139 | public boolean feedData(final Object state, final double[] features, final double value, final Object lastState) { | ||
140 | boolean _xblockexpression = false; | ||
141 | { | ||
142 | StateData data = new StateData(features, value, lastState); | ||
143 | this.stateAndHistory.put(state, data); | ||
144 | _xblockexpression = this.samples.add(data); | ||
145 | } | ||
146 | return _xblockexpression; | ||
147 | } | ||
148 | |||
149 | public Object getPredictionForNextDataSample(final double[] features, final double value, final double[] featuresToPredict) { | ||
150 | throw new Error("Unresolved compilation problems:" | ||
151 | + "\nThe field PartialInterpretationMetricDistance.regression refers to the missing type OLSMultipleLinearRegression" | ||
152 | + "\nThe method predict(double[]) from the type PartialInterpretationMetricDistance refers to the missing type Object" | ||
153 | + "\nnewSampleData cannot be resolved"); | ||
154 | } | ||
155 | |||
156 | private Object predict(final double[] featuresToPredict) { | ||
157 | throw new Error("Unresolved compilation problems:" | ||
158 | + "\nThe field PartialInterpretationMetricDistance.regression refers to the missing type OLSMultipleLinearRegression" | ||
159 | + "\nestimateRegressionParameters cannot be resolved" | ||
160 | + "\nget cannot be resolved" | ||
161 | + "\n+= cannot be resolved" | ||
162 | + "\nget cannot be resolved" | ||
163 | + "\n* cannot be resolved"); | ||
164 | } | ||
165 | |||
166 | public double[] calculateFeature(final int step, final int violations) { | ||
167 | double[] features = new double[2]; | ||
168 | features[0] = 1; | ||
169 | double _sqrt = Math.sqrt(step); | ||
170 | double _plus = (_sqrt + 30); | ||
171 | features[0] = _plus; | ||
172 | features[1] = (1.0 / (step + 30)); | ||
173 | return features; | ||
174 | } | ||
175 | |||
176 | @Pure | ||
177 | public LinearModel getLinearModel() { | ||
178 | return this.linearModel; | ||
179 | } | ||
180 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.java._trace new file mode 100644 index 00000000..b7325732 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.xtendbin new file mode 100644 index 00000000..1b30d47a --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.CostDistance.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.java._trace new file mode 100644 index 00000000..fa849d42 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.xtendbin new file mode 100644 index 00000000..e7be4117 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.EuclideanDistance.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.java._trace new file mode 100644 index 00000000..66b1b229 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.xtendbin new file mode 100644 index 00000000..7a08f8e5 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.JSDistance.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.java._trace new file mode 100644 index 00000000..c7256d9a --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.xtendbin new file mode 100644 index 00000000..309066cc --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.KSDistance.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.StateData.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.StateData.java._trace new file mode 100644 index 00000000..d4cde029 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/.StateData.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/CostDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/CostDistance.java new file mode 100644 index 00000000..cb366f64 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/CostDistance.java | |||
@@ -0,0 +1,26 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; | ||
2 | |||
3 | import java.text.DecimalFormat; | ||
4 | import java.util.HashMap; | ||
5 | import java.util.List; | ||
6 | |||
7 | @SuppressWarnings("all") | ||
8 | public abstract class CostDistance { | ||
9 | public abstract double naDistance(final List<Double> samples); | ||
10 | |||
11 | public abstract double mpcDistance(final List<Double> samples); | ||
12 | |||
13 | public abstract double outDegreeDistance(final List<Double> samples); | ||
14 | |||
15 | protected HashMap<String, Double> pmfFromSamples(final double[] samples, final DecimalFormat formatter) { | ||
16 | int length = samples.length; | ||
17 | HashMap<String, Double> pmfMap = new HashMap<String, Double>(); | ||
18 | for (final double sample : samples) { | ||
19 | String _format = formatter.format(sample); | ||
20 | Double _orDefault = pmfMap.getOrDefault(formatter.format(sample), Double.valueOf(0.0)); | ||
21 | double _plus = ((_orDefault).doubleValue() + (1.0 / length)); | ||
22 | pmfMap.put(_format, Double.valueOf(_plus)); | ||
23 | } | ||
24 | return pmfMap; | ||
25 | } | ||
26 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/EuclideanDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/EuclideanDistance.java new file mode 100644 index 00000000..6a80d750 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/EuclideanDistance.java | |||
@@ -0,0 +1,91 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.CostDistance; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; | ||
5 | import com.google.common.collect.Sets; | ||
6 | import java.text.DecimalFormat; | ||
7 | import java.util.ArrayList; | ||
8 | import java.util.HashMap; | ||
9 | import java.util.List; | ||
10 | import java.util.Map; | ||
11 | import java.util.Set; | ||
12 | import java.util.function.ToDoubleFunction; | ||
13 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
14 | import org.eclipse.xtext.xbase.lib.DoubleExtensions; | ||
15 | |||
16 | @SuppressWarnings("all") | ||
17 | public class EuclideanDistance extends CostDistance { | ||
18 | private MetricSampleGroup g; | ||
19 | |||
20 | private HashMap<String, Double> mpcPMF; | ||
21 | |||
22 | private HashMap<String, Double> naPMF; | ||
23 | |||
24 | private HashMap<String, Double> outDegreePMF; | ||
25 | |||
26 | private DecimalFormat formatter; | ||
27 | |||
28 | public EuclideanDistance(final MetricSampleGroup g) { | ||
29 | this.g = g; | ||
30 | List<Double> mpcSamples = g.mpcSamples; | ||
31 | final ToDoubleFunction<Double> _function = (Double it) -> { | ||
32 | return (it).doubleValue(); | ||
33 | }; | ||
34 | double[] naSamples = g.naSamples.stream().mapToDouble(_function).toArray(); | ||
35 | final ToDoubleFunction<Double> _function_1 = (Double it) -> { | ||
36 | return (it).doubleValue(); | ||
37 | }; | ||
38 | double[] outDegreeSamples = g.outDegreeSamples.stream().mapToDouble(_function_1).toArray(); | ||
39 | DecimalFormat _decimalFormat = new DecimalFormat("#0.00000"); | ||
40 | this.formatter = _decimalFormat; | ||
41 | final List<Double> _converted_mpcSamples = (List<Double>)mpcSamples; | ||
42 | this.mpcPMF = this.pmfFromSamples(((double[])Conversions.unwrapArray(_converted_mpcSamples, double.class)), this.formatter); | ||
43 | this.naPMF = this.pmfFromSamples(naSamples, this.formatter); | ||
44 | this.outDegreePMF = this.pmfFromSamples(outDegreeSamples, this.formatter); | ||
45 | } | ||
46 | |||
47 | @Override | ||
48 | public double naDistance(final List<Double> samples) { | ||
49 | HashMap<String, Double> pmfMap = this.pmfFromSamples(((double[])Conversions.unwrapArray(samples, double.class)), this.formatter); | ||
50 | return this.euclideanDistance(pmfMap, this.naPMF); | ||
51 | } | ||
52 | |||
53 | @Override | ||
54 | public double mpcDistance(final List<Double> samples) { | ||
55 | HashMap<String, Double> pmfMap = this.pmfFromSamples(((double[])Conversions.unwrapArray(samples, double.class)), this.formatter); | ||
56 | return this.euclideanDistance(pmfMap, this.mpcPMF); | ||
57 | } | ||
58 | |||
59 | @Override | ||
60 | public double outDegreeDistance(final List<Double> samples) { | ||
61 | HashMap<String, Double> pmfMap = this.pmfFromSamples(((double[])Conversions.unwrapArray(samples, double.class)), this.formatter); | ||
62 | return this.euclideanDistance(pmfMap, this.outDegreePMF); | ||
63 | } | ||
64 | |||
65 | private double euclideanDistance(final HashMap<String, Double> pmf1, final HashMap<String, Double> pmf2) { | ||
66 | Sets.SetView<String> keys = Sets.<String>union(pmf1.keySet(), pmf2.keySet()); | ||
67 | ArrayList<Double> pmfList1 = this.pmfMapToList(pmf1, keys); | ||
68 | ArrayList<Double> pmfList2 = this.pmfMapToList(pmf2, keys); | ||
69 | double distance = 0.0; | ||
70 | for (int i = 0; (i < pmfList1.size()); i++) { | ||
71 | double _distance = distance; | ||
72 | Double _get = pmfList1.get(i); | ||
73 | Double _get_1 = pmfList2.get(i); | ||
74 | double _plus = DoubleExtensions.operator_plus(_get, _get_1); | ||
75 | double _pow = Math.pow(_plus, 2); | ||
76 | distance = (_distance + _pow); | ||
77 | } | ||
78 | return Math.sqrt(distance); | ||
79 | } | ||
80 | |||
81 | private ArrayList<Double> pmfMapToList(final Map<String, Double> map, final Set<String> keys) { | ||
82 | ArrayList<Double> list = new ArrayList<Double>(); | ||
83 | for (final String key : keys) { | ||
84 | { | ||
85 | Double value = map.getOrDefault(key, Double.valueOf(0.0)); | ||
86 | list.add(value); | ||
87 | } | ||
88 | } | ||
89 | return list; | ||
90 | } | ||
91 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.java new file mode 100644 index 00000000..d3e7e3ad --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.java | |||
@@ -0,0 +1,136 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.CostDistance; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; | ||
5 | import com.google.common.collect.Sets; | ||
6 | import java.text.DecimalFormat; | ||
7 | import java.util.HashMap; | ||
8 | import java.util.List; | ||
9 | import java.util.Set; | ||
10 | import java.util.function.ToDoubleFunction; | ||
11 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
12 | import org.eclipse.xtext.xbase.lib.DoubleExtensions; | ||
13 | |||
14 | @SuppressWarnings("all") | ||
15 | public class JSDistance extends CostDistance { | ||
16 | private HashMap<String, Double> mpcPMF; | ||
17 | |||
18 | private HashMap<String, Double> naPMF; | ||
19 | |||
20 | private HashMap<String, Double> outDegreePMF; | ||
21 | |||
22 | private HashMap<String, Double> nodeTypesPMF; | ||
23 | |||
24 | private DecimalFormat formatter; | ||
25 | |||
26 | public JSDistance(final MetricSampleGroup g) { | ||
27 | List<Double> mpcSamples = g.mpcSamples; | ||
28 | final ToDoubleFunction<Double> _function = (Double it) -> { | ||
29 | return (it).doubleValue(); | ||
30 | }; | ||
31 | double[] naSamples = g.naSamples.stream().mapToDouble(_function).toArray(); | ||
32 | final ToDoubleFunction<Double> _function_1 = (Double it) -> { | ||
33 | return (it).doubleValue(); | ||
34 | }; | ||
35 | double[] outDegreeSamples = g.outDegreeSamples.stream().mapToDouble(_function_1).toArray(); | ||
36 | DecimalFormat _decimalFormat = new DecimalFormat("#0.00000"); | ||
37 | this.formatter = _decimalFormat; | ||
38 | final List<Double> _converted_mpcSamples = (List<Double>)mpcSamples; | ||
39 | this.mpcPMF = this.pmfFromSamples(((double[])Conversions.unwrapArray(_converted_mpcSamples, double.class)), this.formatter); | ||
40 | this.naPMF = this.pmfFromSamples(naSamples, this.formatter); | ||
41 | this.outDegreePMF = this.pmfFromSamples(outDegreeSamples, this.formatter); | ||
42 | this.nodeTypesPMF = g.nodeTypeSamples; | ||
43 | } | ||
44 | |||
45 | private HashMap<String, Double> combinePMF(final HashMap<String, Double> pmf1, final HashMap<String, Double> pmf2) { | ||
46 | HashMap<String, Double> pmfMap = new HashMap<String, Double>(); | ||
47 | Sets.SetView<String> union = Sets.<String>union(pmf1.keySet(), pmf2.keySet()); | ||
48 | for (final String key : union) { | ||
49 | { | ||
50 | Double _orDefault = pmf1.getOrDefault(key, Double.valueOf(0.0)); | ||
51 | Double _orDefault_1 = pmf2.getOrDefault(key, Double.valueOf(0.0)); | ||
52 | double _plus = DoubleExtensions.operator_plus(_orDefault, _orDefault_1); | ||
53 | double value = ((1.0 / 2) * _plus); | ||
54 | pmfMap.put(key, Double.valueOf(value)); | ||
55 | } | ||
56 | } | ||
57 | return pmfMap; | ||
58 | } | ||
59 | |||
60 | private double jsDivergence(final HashMap<String, Double> p, final HashMap<String, Double> q) { | ||
61 | final HashMap<String, Double> m = this.combinePMF(q, p); | ||
62 | double _klDivergence = this.klDivergence(p, m); | ||
63 | double _multiply = ((1.0 / 2) * _klDivergence); | ||
64 | double _klDivergence_1 = this.klDivergence(q, m); | ||
65 | double _multiply_1 = ((1.0 / 2) * _klDivergence_1); | ||
66 | double distance = (_multiply + _multiply_1); | ||
67 | return distance; | ||
68 | } | ||
69 | |||
70 | public double klDivergence(final HashMap<String, Double> p, final HashMap<String, Double> q) { | ||
71 | double distance = 0.0; | ||
72 | Set<String> _keySet = q.keySet(); | ||
73 | for (final String key : _keySet) { | ||
74 | boolean _containsKey = p.containsKey(key); | ||
75 | if (_containsKey) { | ||
76 | double _distance = distance; | ||
77 | Double _get = p.get(key); | ||
78 | Double _get_1 = q.get(key); | ||
79 | Double _get_2 = p.get(key); | ||
80 | double _divide = DoubleExtensions.operator_divide(_get_1, _get_2); | ||
81 | double _log = Math.log(_divide); | ||
82 | double _multiply = ((_get).doubleValue() * _log); | ||
83 | double _log_1 = Math.log(2); | ||
84 | double _divide_1 = (_multiply / _log_1); | ||
85 | distance = (_distance - _divide_1); | ||
86 | } | ||
87 | } | ||
88 | return distance; | ||
89 | } | ||
90 | |||
91 | @Override | ||
92 | public double mpcDistance(final List<Double> samples) { | ||
93 | final ToDoubleFunction<Double> _function = (Double it) -> { | ||
94 | return (it).doubleValue(); | ||
95 | }; | ||
96 | HashMap<String, Double> map = this.pmfFromSamples(samples.stream().mapToDouble(_function).toArray(), this.formatter); | ||
97 | int _size = map.size(); | ||
98 | boolean _lessThan = (_size < 2); | ||
99 | if (_lessThan) { | ||
100 | return 1; | ||
101 | } | ||
102 | return this.jsDivergence(map, this.mpcPMF); | ||
103 | } | ||
104 | |||
105 | @Override | ||
106 | public double naDistance(final List<Double> samples) { | ||
107 | final ToDoubleFunction<Double> _function = (Double it) -> { | ||
108 | return (it).doubleValue(); | ||
109 | }; | ||
110 | HashMap<String, Double> map = this.pmfFromSamples(samples.stream().mapToDouble(_function).toArray(), this.formatter); | ||
111 | int _size = map.size(); | ||
112 | boolean _lessThan = (_size < 2); | ||
113 | if (_lessThan) { | ||
114 | return 1; | ||
115 | } | ||
116 | return this.jsDivergence(map, this.naPMF); | ||
117 | } | ||
118 | |||
119 | @Override | ||
120 | public double outDegreeDistance(final List<Double> samples) { | ||
121 | final ToDoubleFunction<Double> _function = (Double it) -> { | ||
122 | return (it).doubleValue(); | ||
123 | }; | ||
124 | HashMap<String, Double> map = this.pmfFromSamples(samples.stream().mapToDouble(_function).toArray(), this.formatter); | ||
125 | int _size = map.size(); | ||
126 | boolean _lessThan = (_size < 2); | ||
127 | if (_lessThan) { | ||
128 | return 1; | ||
129 | } | ||
130 | return this.jsDivergence(map, this.outDegreePMF); | ||
131 | } | ||
132 | |||
133 | public double nodeTypeDistance(final HashMap<String, Double> samples) { | ||
134 | return this.klDivergence(samples, this.nodeTypesPMF); | ||
135 | } | ||
136 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.java new file mode 100644 index 00000000..638ff332 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.java | |||
@@ -0,0 +1,93 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.CostDistance; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; | ||
5 | import java.util.ArrayList; | ||
6 | import java.util.HashMap; | ||
7 | import java.util.List; | ||
8 | import java.util.Set; | ||
9 | import org.eclipse.xtext.xbase.lib.CollectionLiterals; | ||
10 | |||
11 | @SuppressWarnings("all") | ||
12 | public class KSDistance extends CostDistance { | ||
13 | private static Object ksTester /* Skipped initializer because of errors */; | ||
14 | |||
15 | private MetricSampleGroup g; | ||
16 | |||
17 | public KSDistance(final MetricSampleGroup g) { | ||
18 | this.g = g; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public double mpcDistance(final List<Double> samples) { | ||
23 | throw new Error("Unresolved compilation problems:" | ||
24 | + "\nThe field KSDistance.ksTester refers to the missing type Object" | ||
25 | + "\nkolmogorovSmirnovStatistic cannot be resolved"); | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public double naDistance(final List<Double> samples) { | ||
30 | throw new Error("Unresolved compilation problems:" | ||
31 | + "\nThe field KSDistance.ksTester refers to the missing type Object" | ||
32 | + "\nkolmogorovSmirnovStatistic cannot be resolved"); | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public double outDegreeDistance(final List<Double> samples) { | ||
37 | throw new Error("Unresolved compilation problems:" | ||
38 | + "\nThe field KSDistance.ksTester refers to the missing type Object" | ||
39 | + "\nkolmogorovSmirnovStatistic cannot be resolved"); | ||
40 | } | ||
41 | |||
42 | public double typedOutDegreeDistance(final HashMap<String, List<Integer>> map) { | ||
43 | throw new Error("Unresolved compilation problems:" | ||
44 | + "\nThe field KSDistance.ksTester refers to the missing type Object" | ||
45 | + "\nkolmogorovSmirnovStatistic cannot be resolved"); | ||
46 | } | ||
47 | |||
48 | public double nodeTypeDistance(final HashMap<String, Double> samples) { | ||
49 | HashMap<String, Double> typesDistMap = this.g.nodeTypeSamples; | ||
50 | ArrayList<Double> sourceDist = CollectionLiterals.<Double>newArrayList(); | ||
51 | ArrayList<Double> instanceDist = CollectionLiterals.<Double>newArrayList(); | ||
52 | Set<String> _keySet = typesDistMap.keySet(); | ||
53 | for (final String key : _keySet) { | ||
54 | { | ||
55 | sourceDist.add(typesDistMap.get(key)); | ||
56 | instanceDist.add(samples.getOrDefault(key, Double.valueOf(0.0))); | ||
57 | } | ||
58 | } | ||
59 | return this.ks_distance_two_dist(sourceDist, instanceDist); | ||
60 | } | ||
61 | |||
62 | public double edgeTypeDistance(final HashMap<String, Double> samples) { | ||
63 | HashMap<String, Double> typesDistMap = this.g.edgeTypeSamples; | ||
64 | ArrayList<Double> sourceDist = CollectionLiterals.<Double>newArrayList(); | ||
65 | ArrayList<Double> instanceDist = CollectionLiterals.<Double>newArrayList(); | ||
66 | Set<String> _keySet = typesDistMap.keySet(); | ||
67 | for (final String key : _keySet) { | ||
68 | { | ||
69 | sourceDist.add(typesDistMap.get(key)); | ||
70 | instanceDist.add(samples.getOrDefault(key, Double.valueOf(0.0))); | ||
71 | } | ||
72 | } | ||
73 | return this.ks_distance_two_dist(sourceDist, instanceDist); | ||
74 | } | ||
75 | |||
76 | public double ks_distance_two_dist(final List<Double> dist1, final List<Double> dist2) { | ||
77 | double ksStatistics = 0.0; | ||
78 | double sum1 = 0.0; | ||
79 | double sum2 = 0.0; | ||
80 | for (int i = 0; (i < dist1.size()); i++) { | ||
81 | { | ||
82 | double _sum1 = sum1; | ||
83 | Double _get = dist1.get(i); | ||
84 | sum1 = (_sum1 + (_get).doubleValue()); | ||
85 | double _sum2 = sum2; | ||
86 | Double _get_1 = dist2.get(i); | ||
87 | sum2 = (_sum2 + (_get_1).doubleValue()); | ||
88 | ksStatistics = Math.max(ksStatistics, Math.abs((sum1 - sum2))); | ||
89 | } | ||
90 | } | ||
91 | return ksStatistics; | ||
92 | } | ||
93 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/StateData.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/StateData.java new file mode 100644 index 00000000..29a310f4 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/StateData.java | |||
@@ -0,0 +1,38 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance; | ||
2 | |||
3 | import org.eclipse.xtend.lib.annotations.AccessorType; | ||
4 | import org.eclipse.xtend.lib.annotations.Accessors; | ||
5 | import org.eclipse.xtext.xbase.lib.Pure; | ||
6 | |||
7 | @SuppressWarnings("all") | ||
8 | public class StateData { | ||
9 | @Accessors(AccessorType.PUBLIC_GETTER) | ||
10 | private double[] features; | ||
11 | |||
12 | @Accessors(AccessorType.PUBLIC_GETTER) | ||
13 | private double value; | ||
14 | |||
15 | @Accessors(AccessorType.PUBLIC_GETTER) | ||
16 | private Object lastState; | ||
17 | |||
18 | public StateData(final double[] features, final double value, final Object lastState) { | ||
19 | this.features = features; | ||
20 | this.value = value; | ||
21 | this.lastState = lastState; | ||
22 | } | ||
23 | |||
24 | @Pure | ||
25 | public double[] getFeatures() { | ||
26 | return this.features; | ||
27 | } | ||
28 | |||
29 | @Pure | ||
30 | public double getValue() { | ||
31 | return this.value; | ||
32 | } | ||
33 | |||
34 | @Pure | ||
35 | public Object getLastState() { | ||
36 | return this.lastState; | ||
37 | } | ||
38 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.java._trace new file mode 100644 index 00000000..6e2ea420 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.xtendbin new file mode 100644 index 00000000..e949bb11 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.EMFGraph.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.java._trace new file mode 100644 index 00000000..e1d021fd --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.xtendbin new file mode 100644 index 00000000..547fdc38 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.Graph.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.java._trace new file mode 100644 index 00000000..5928ed9d --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.xtendbin new file mode 100644 index 00000000..e9269f16 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.GraphStatistic.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.java._trace new file mode 100644 index 00000000..f19eb46c --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.xtendbin new file mode 100644 index 00000000..c634ef10 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/.PartialInterpretationGraph.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.java new file mode 100644 index 00000000..8a9aa8d3 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/EMFGraph.java | |||
@@ -0,0 +1,140 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.Graph; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
6 | import java.util.ArrayList; | ||
7 | import java.util.HashSet; | ||
8 | import java.util.List; | ||
9 | import java.util.function.Consumer; | ||
10 | import org.eclipse.emf.common.util.EList; | ||
11 | import org.eclipse.emf.ecore.EObject; | ||
12 | import org.eclipse.emf.ecore.EReference; | ||
13 | import org.eclipse.xtend.lib.annotations.AccessorType; | ||
14 | import org.eclipse.xtend.lib.annotations.Accessors; | ||
15 | import org.eclipse.xtext.xbase.lib.IteratorExtensions; | ||
16 | import org.eclipse.xtext.xbase.lib.Pure; | ||
17 | |||
18 | @SuppressWarnings("all") | ||
19 | public class EMFGraph extends Graph { | ||
20 | @Accessors(AccessorType.PUBLIC_GETTER) | ||
21 | private EObject root; | ||
22 | |||
23 | public void init(final EObject root, final List<Metric> metrics, final String name, final List<EReference> referenceTypes) { | ||
24 | final List<EObject> otherContents = IteratorExtensions.<EObject>toList(root.eAllContents()); | ||
25 | this.root = root; | ||
26 | otherContents.add(root); | ||
27 | this.init(otherContents, metrics, name, referenceTypes); | ||
28 | } | ||
29 | |||
30 | /** | ||
31 | * init the graph with all nodes and reference types in the meta model | ||
32 | * @param objects: objects in the instance model (exclude root) | ||
33 | * @param metrics: metrics to be evaluated | ||
34 | * @param name: name of the instance model | ||
35 | * @param ReferenceTypes: reference types defined in the meta model | ||
36 | */ | ||
37 | public void init(final List<EObject> objects, final List<Metric> metrics, final String name, final List<EReference> referenceTypes) { | ||
38 | final Consumer<EObject> _function = (EObject it) -> { | ||
39 | HashSet<String> types = new HashSet<String>(); | ||
40 | types.add(it.eClass().getName()); | ||
41 | this.statistic.addNodeWithAllTypes(it, types); | ||
42 | }; | ||
43 | objects.forEach(_function); | ||
44 | final Consumer<EReference> _function_1 = (EReference it) -> { | ||
45 | boolean _isDerived = it.isDerived(); | ||
46 | boolean _not = (!_isDerived); | ||
47 | if (_not) { | ||
48 | this.statistic.addEdgeType(it.getName()); | ||
49 | } | ||
50 | }; | ||
51 | referenceTypes.forEach(_function_1); | ||
52 | final Consumer<EObject> _function_2 = (EObject source) -> { | ||
53 | final Consumer<EReference> _function_3 = (EReference r) -> { | ||
54 | boolean _isMany = r.isMany(); | ||
55 | if (_isMany) { | ||
56 | final Consumer<EObject> _function_4 = (EObject target) -> { | ||
57 | this.addEdge(source, target, r); | ||
58 | }; | ||
59 | this.getNeighbours(source, r).forEach(_function_4); | ||
60 | } else { | ||
61 | Object _eGet = source.eGet(r); | ||
62 | final EObject target = ((EObject) _eGet); | ||
63 | this.addEdge(source, target, r); | ||
64 | } | ||
65 | }; | ||
66 | source.eClass().getEAllReferences().forEach(_function_3); | ||
67 | }; | ||
68 | objects.forEach(_function_2); | ||
69 | this.metrics = metrics; | ||
70 | this.name = name; | ||
71 | } | ||
72 | |||
73 | public void removeReference(final EReference r) { | ||
74 | boolean _containsEdgeType = this.statistic.containsEdgeType(r.getName()); | ||
75 | if (_containsEdgeType) { | ||
76 | this.statistic.removeReference(r.getName(), r.isContainment()); | ||
77 | } | ||
78 | } | ||
79 | |||
80 | /** | ||
81 | * Set basic information for the output | ||
82 | */ | ||
83 | @Override | ||
84 | public void setBasicInformation(final ArrayList<ArrayList<String>> output) { | ||
85 | final ArrayList<String> metaInfo = new ArrayList<String>(); | ||
86 | metaInfo.add(Graph.META_MODEL_HEADER); | ||
87 | metaInfo.add(this.metaModel); | ||
88 | final ArrayList<String> edgeInfo = new ArrayList<String>(); | ||
89 | edgeInfo.add(Graph.NUM_EDGE_TYPE_HEADER); | ||
90 | int _size = this.statistic.getAllTypes().size(); | ||
91 | String _plus = (Integer.valueOf(_size) + ""); | ||
92 | edgeInfo.add(_plus); | ||
93 | final ArrayList<String> nodeInfo = new ArrayList<String>(); | ||
94 | nodeInfo.add(Graph.NUM_NODE_HEADER); | ||
95 | int _size_1 = this.statistic.getAllNodes().size(); | ||
96 | String _plus_1 = (Integer.valueOf(_size_1) + ""); | ||
97 | nodeInfo.add(_plus_1); | ||
98 | final ArrayList<String> stateInfo = new ArrayList<String>(); | ||
99 | stateInfo.add(Graph.STATE_ID_HEADER); | ||
100 | stateInfo.add(this.name); | ||
101 | output.add(metaInfo); | ||
102 | output.add(edgeInfo); | ||
103 | output.add(nodeInfo); | ||
104 | output.add(stateInfo); | ||
105 | } | ||
106 | |||
107 | public EList<EObject> getNeighbours(final EObject o, final EReference r) { | ||
108 | Object _eGet = o.eGet(r, true); | ||
109 | return ((EList<EObject>) _eGet); | ||
110 | } | ||
111 | |||
112 | public void addEdge(final EObject source, final EObject target, final EReference r) { | ||
113 | if ((((target != null) && (r != null)) && (!r.isDerived()))) { | ||
114 | this.statistic.addEdge(source, target, r.getName()); | ||
115 | } | ||
116 | } | ||
117 | |||
118 | @Override | ||
119 | public GraphStatistic getStatistic() { | ||
120 | return this.statistic; | ||
121 | } | ||
122 | |||
123 | @Override | ||
124 | public String getName() { | ||
125 | return this.name; | ||
126 | } | ||
127 | |||
128 | public void setMetaModel(final String model) { | ||
129 | this.metaModel = model; | ||
130 | } | ||
131 | |||
132 | public String getMetaModel() { | ||
133 | return this.metaModel; | ||
134 | } | ||
135 | |||
136 | @Pure | ||
137 | public EObject getRoot() { | ||
138 | return this.root; | ||
139 | } | ||
140 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.java new file mode 100644 index 00000000..f9923a63 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/Graph.java | |||
@@ -0,0 +1,96 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.EdgeTypeMetric; | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
6 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; | ||
7 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric; | ||
8 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric; | ||
9 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeTypeMetric; | ||
10 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric; | ||
11 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.TypedOutDegree; | ||
12 | import java.util.ArrayList; | ||
13 | import java.util.Collection; | ||
14 | import java.util.HashMap; | ||
15 | import java.util.List; | ||
16 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
17 | |||
18 | @SuppressWarnings("all") | ||
19 | public abstract class Graph { | ||
20 | protected final static String META_MODEL_HEADER = "Meta Mode"; | ||
21 | |||
22 | protected final static String NUM_NODE_HEADER = "Number Of Nodes"; | ||
23 | |||
24 | protected final static String NUM_EDGE_TYPE_HEADER = "Number of Edge types"; | ||
25 | |||
26 | protected final static String STATE_ID_HEADER = "State Id"; | ||
27 | |||
28 | protected final GraphStatistic statistic = new GraphStatistic(); | ||
29 | |||
30 | protected List<Metric> metrics; | ||
31 | |||
32 | protected String name = ""; | ||
33 | |||
34 | protected String metaModel = ""; | ||
35 | |||
36 | /** | ||
37 | * evaluate all metrics for this model | ||
38 | * return the result as a two dimentional list | ||
39 | */ | ||
40 | public ArrayList<ArrayList<String>> evaluateAllMetrics() { | ||
41 | final ArrayList<ArrayList<String>> result = new ArrayList<ArrayList<String>>(); | ||
42 | this.setBasicInformation(result); | ||
43 | for (final Metric metric : this.metrics) { | ||
44 | { | ||
45 | final String[][] datas = metric.evaluate(this.statistic); | ||
46 | for (final String[] row : datas) { | ||
47 | ArrayList<String> _arrayList = new ArrayList<String>((Collection<? extends String>)Conversions.doWrapArray(row)); | ||
48 | result.add(_arrayList); | ||
49 | } | ||
50 | } | ||
51 | } | ||
52 | return result; | ||
53 | } | ||
54 | |||
55 | public MetricSampleGroup evaluateAllMetricsToSamples() { | ||
56 | MetricSampleGroup sample = new MetricSampleGroup(); | ||
57 | for (final Metric metric : this.metrics) { | ||
58 | if ((metric instanceof MultiplexParticipationCoefficientMetric)) { | ||
59 | Object _evaluateSamples = ((MultiplexParticipationCoefficientMetric)metric).evaluateSamples(this.statistic); | ||
60 | sample.mpcSamples = ((ArrayList<Double>) _evaluateSamples); | ||
61 | } else { | ||
62 | if ((metric instanceof NodeActivityMetric)) { | ||
63 | Object _evaluateSamples_1 = ((NodeActivityMetric)metric).evaluateSamples(this.statistic); | ||
64 | sample.naSamples = ((ArrayList<Double>) _evaluateSamples_1); | ||
65 | } else { | ||
66 | if ((metric instanceof OutDegreeMetric)) { | ||
67 | Object _evaluateSamples_2 = ((OutDegreeMetric)metric).evaluateSamples(this.statistic); | ||
68 | sample.outDegreeSamples = ((ArrayList<Double>) _evaluateSamples_2); | ||
69 | } else { | ||
70 | if ((metric instanceof TypedOutDegree)) { | ||
71 | Object _evaluateSamples_3 = ((TypedOutDegree)metric).evaluateSamples(this.statistic); | ||
72 | sample.typedOutDegreeSamples = ((HashMap<String, List<Integer>>) _evaluateSamples_3); | ||
73 | } else { | ||
74 | if ((metric instanceof NodeTypeMetric)) { | ||
75 | Object _evaluateSamples_4 = ((NodeTypeMetric)metric).evaluateSamples(this.statistic); | ||
76 | sample.nodeTypeSamples = ((HashMap<String, Double>) _evaluateSamples_4); | ||
77 | } else { | ||
78 | if ((metric instanceof EdgeTypeMetric)) { | ||
79 | Object _evaluateSamples_5 = ((EdgeTypeMetric)metric).evaluateSamples(this.statistic); | ||
80 | sample.edgeTypeSamples = ((HashMap<String, Double>) _evaluateSamples_5); | ||
81 | } | ||
82 | } | ||
83 | } | ||
84 | } | ||
85 | } | ||
86 | } | ||
87 | } | ||
88 | return sample; | ||
89 | } | ||
90 | |||
91 | public abstract void setBasicInformation(final ArrayList<ArrayList<String>> result); | ||
92 | |||
93 | public abstract GraphStatistic getStatistic(); | ||
94 | |||
95 | public abstract String getName(); | ||
96 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.java new file mode 100644 index 00000000..7bd1d899 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/GraphStatistic.java | |||
@@ -0,0 +1,201 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph; | ||
2 | |||
3 | import com.google.common.collect.ArrayListMultimap; | ||
4 | import com.google.common.collect.Multimap; | ||
5 | import java.util.Collection; | ||
6 | import java.util.HashMap; | ||
7 | import java.util.HashSet; | ||
8 | import java.util.List; | ||
9 | import java.util.Map; | ||
10 | import java.util.Set; | ||
11 | import java.util.function.Consumer; | ||
12 | import org.eclipse.emf.ecore.EObject; | ||
13 | import org.eclipse.xtext.xbase.lib.IterableExtensions; | ||
14 | import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; | ||
15 | |||
16 | @SuppressWarnings("all") | ||
17 | public class GraphStatistic { | ||
18 | private final HashMap<String, Multimap<EObject, EObject>> incomingEdges = new HashMap<String, Multimap<EObject, EObject>>(); | ||
19 | |||
20 | private final HashMap<String, Multimap<EObject, EObject>> outgoingEdges = new HashMap<String, Multimap<EObject, EObject>>(); | ||
21 | |||
22 | private final HashSet<String> edgeTypes = new HashSet<String>(); | ||
23 | |||
24 | private final HashMap<EObject, Set<String>> nodeToType = new HashMap<EObject, Set<String>>(); | ||
25 | |||
26 | /** | ||
27 | * Add an edge type to to the graph | ||
28 | * @param type: type to add | ||
29 | */ | ||
30 | public void addEdgeType(final String type) { | ||
31 | boolean _contains = this.edgeTypes.contains(type); | ||
32 | if (_contains) { | ||
33 | return; | ||
34 | } | ||
35 | this.edgeTypes.add(type); | ||
36 | this.incomingEdges.put(type, ArrayListMultimap.<EObject, EObject>create()); | ||
37 | this.outgoingEdges.put(type, ArrayListMultimap.<EObject, EObject>create()); | ||
38 | } | ||
39 | |||
40 | /** | ||
41 | * Add a node to the graph with one type in its type hierarchy | ||
42 | * @param node: node to add | ||
43 | */ | ||
44 | public void addNodeWithType(final EObject n, final String Type) { | ||
45 | HashSet<String> _hashSet = new HashSet<String>(); | ||
46 | Set<String> types = this.nodeToType.getOrDefault(n, _hashSet); | ||
47 | types.add(Type); | ||
48 | this.nodeToType.put(n, types); | ||
49 | } | ||
50 | |||
51 | public boolean containsNode(final EObject o) { | ||
52 | return this.nodeToType.containsKey(o); | ||
53 | } | ||
54 | |||
55 | public Set<String> getTypesForNode(final EObject o) { | ||
56 | HashSet<String> _hashSet = new HashSet<String>(); | ||
57 | return this.nodeToType.getOrDefault(o, _hashSet); | ||
58 | } | ||
59 | |||
60 | public void overwriteCurrentType(final EObject o, final String type) { | ||
61 | HashSet<String> _hashSet = new HashSet<String>(); | ||
62 | Set<String> typeSet = this.nodeToType.getOrDefault(o, _hashSet); | ||
63 | typeSet.clear(); | ||
64 | typeSet.add(type); | ||
65 | this.nodeToType.put(o, typeSet); | ||
66 | } | ||
67 | |||
68 | /** | ||
69 | * Add a node to the graph with all types in its type hierarchy | ||
70 | */ | ||
71 | public void addNodeWithAllTypes(final EObject n, final Set<String> types) { | ||
72 | this.nodeToType.put(n, types); | ||
73 | } | ||
74 | |||
75 | /** | ||
76 | * Add an edge to the graph | ||
77 | * @param source: source node | ||
78 | * @param target: target node | ||
79 | * @param type: type of the reference | ||
80 | */ | ||
81 | public void addEdge(final EObject source, final EObject target, final String type) { | ||
82 | this.outgoingEdges.get(type).put(source, target); | ||
83 | this.incomingEdges.get(type).put(target, source); | ||
84 | } | ||
85 | |||
86 | /** | ||
87 | * check if this graph contains a specific edge type | ||
88 | */ | ||
89 | public boolean containsEdgeType(final String typeName) { | ||
90 | if ((this.outgoingEdges.containsKey(typeName) && this.incomingEdges.containsKey(typeName))) { | ||
91 | return true; | ||
92 | } | ||
93 | return false; | ||
94 | } | ||
95 | |||
96 | /** | ||
97 | * remove references from the statistics, potentially remove the nodes associated with it | ||
98 | * @Param name: name of the reference | ||
99 | * @Param isContainment: if true then the corresponding nodes on the incoming side will also be removed | ||
100 | */ | ||
101 | public void removeReference(final String name, final boolean isContainment) { | ||
102 | boolean _contains = this.edgeTypes.contains(name); | ||
103 | boolean _not = (!_contains); | ||
104 | if (_not) { | ||
105 | return; | ||
106 | } | ||
107 | this.edgeTypes.remove(name); | ||
108 | Multimap<EObject, EObject> incomingSet = this.incomingEdges.remove(name); | ||
109 | this.outgoingEdges.remove(name); | ||
110 | if ((!isContainment)) { | ||
111 | return; | ||
112 | } | ||
113 | final Set<EObject> nodesToRemove = incomingSet.keySet(); | ||
114 | final Consumer<EObject> _function = (EObject it) -> { | ||
115 | this.nodeToType.remove(it); | ||
116 | }; | ||
117 | nodesToRemove.forEach(_function); | ||
118 | final Procedure1<Multimap<EObject, EObject>> _function_1 = (Multimap<EObject, EObject> refMap) -> { | ||
119 | final Consumer<EObject> _function_2 = (EObject it) -> { | ||
120 | refMap.removeAll(it); | ||
121 | }; | ||
122 | nodesToRemove.forEach(_function_2); | ||
123 | Collection<EObject> values = refMap.values(); | ||
124 | values.removeAll(nodesToRemove); | ||
125 | return; | ||
126 | }; | ||
127 | final Procedure1<Multimap<EObject, EObject>> removeForMultimap = _function_1; | ||
128 | IterableExtensions.<Multimap<EObject, EObject>>forEach(this.incomingEdges.values(), removeForMultimap); | ||
129 | IterableExtensions.<Multimap<EObject, EObject>>forEach(this.outgoingEdges.values(), removeForMultimap); | ||
130 | } | ||
131 | |||
132 | /** | ||
133 | * calculate the out degree for an object | ||
134 | */ | ||
135 | public int outDegree(final EObject o) { | ||
136 | int count = 0; | ||
137 | for (final String type : this.edgeTypes) { | ||
138 | int _count = count; | ||
139 | int _size = this.outgoingEdges.get(type).get(o).size(); | ||
140 | count = (_count + _size); | ||
141 | } | ||
142 | return count; | ||
143 | } | ||
144 | |||
145 | /** | ||
146 | * calculate the in degree of an object | ||
147 | */ | ||
148 | public int inDegree(final EObject o) { | ||
149 | int count = 0; | ||
150 | for (final String type : this.edgeTypes) { | ||
151 | int _count = count; | ||
152 | int _size = this.incomingEdges.get(type).get(o).size(); | ||
153 | count = (_count + _size); | ||
154 | } | ||
155 | return count; | ||
156 | } | ||
157 | |||
158 | /** | ||
159 | * calculate the dimentional degree of a node | ||
160 | */ | ||
161 | public int dimentionalDegree(final EObject o, final String type) { | ||
162 | int _size = this.incomingEdges.get(type).get(o).size(); | ||
163 | int _size_1 = this.outgoingEdges.get(type).get(o).size(); | ||
164 | return (_size + _size_1); | ||
165 | } | ||
166 | |||
167 | /** | ||
168 | * calculate the number of edge types for a given node. | ||
169 | */ | ||
170 | public int numOfEdgeTypes(final EObject o) { | ||
171 | int count = 0; | ||
172 | for (final String type : this.edgeTypes) { | ||
173 | int _dimentionalDegree = this.dimentionalDegree(o, type); | ||
174 | boolean _greaterThan = (_dimentionalDegree > 0); | ||
175 | if (_greaterThan) { | ||
176 | count++; | ||
177 | } | ||
178 | } | ||
179 | return count; | ||
180 | } | ||
181 | |||
182 | public List<String> getAllTypes() { | ||
183 | return IterableExtensions.<String>toList(this.edgeTypes); | ||
184 | } | ||
185 | |||
186 | public Map<EObject, Set<String>> getNodeToTypesMap() { | ||
187 | return this.nodeToType; | ||
188 | } | ||
189 | |||
190 | public List<EObject> getAllNodes() { | ||
191 | return IterableExtensions.<EObject>toList(this.nodeToType.keySet()); | ||
192 | } | ||
193 | |||
194 | public HashMap<String, Multimap<EObject, EObject>> getOutgoingEdges() { | ||
195 | return this.outgoingEdges; | ||
196 | } | ||
197 | |||
198 | public HashMap<String, Multimap<EObject, EObject>> incomingEdges() { | ||
199 | return this.incomingEdges; | ||
200 | } | ||
201 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.java new file mode 100644 index 00000000..83bb92ca --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/graph/PartialInterpretationGraph.java | |||
@@ -0,0 +1,162 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.Graph; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
6 | import com.google.common.collect.Iterables; | ||
7 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.DefinedElement; | ||
8 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RelationDeclaration; | ||
9 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; | ||
10 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDefinition; | ||
11 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.BinaryElementRelationLink; | ||
12 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; | ||
13 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation; | ||
14 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.impl.PartialComplexTypeInterpretationImpl; | ||
15 | import java.util.ArrayList; | ||
16 | import java.util.List; | ||
17 | import java.util.function.Consumer; | ||
18 | import org.eclipse.emf.common.util.EList; | ||
19 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
20 | import org.eclipse.xtext.xbase.lib.Functions.Function1; | ||
21 | import org.eclipse.xtext.xbase.lib.IterableExtensions; | ||
22 | import org.eclipse.xtext.xbase.lib.ListExtensions; | ||
23 | |||
24 | @SuppressWarnings("all") | ||
25 | public class PartialInterpretationGraph extends Graph { | ||
26 | private final String typeToExclude = "undefinedpart"; | ||
27 | |||
28 | private final String classSuffix = " class"; | ||
29 | |||
30 | /** | ||
31 | * Define a new PartialInterpretationGraph by parse every element from a PartialInterpretation | ||
32 | */ | ||
33 | public PartialInterpretationGraph(final PartialInterpretation partial, final List<Metric> metrics, final String name) { | ||
34 | final Consumer<RelationDeclaration> _function = (RelationDeclaration it) -> { | ||
35 | String n = it.getName().split(" ")[0]; | ||
36 | this.statistic.addEdgeType(n); | ||
37 | }; | ||
38 | Iterables.<RelationDeclaration>filter(partial.getProblem().getRelations(), RelationDeclaration.class).forEach(_function); | ||
39 | final Iterable<PartialComplexTypeInterpretationImpl> typeInterpretations = this.getTypes(partial); | ||
40 | for (final PartialComplexTypeInterpretationImpl type : typeInterpretations) { | ||
41 | boolean _isConcreteType = this.isConcreteType(type.getInterpretationOf()); | ||
42 | if (_isConcreteType) { | ||
43 | String typeName = type.getInterpretationOf().getName().replace(this.classSuffix, ""); | ||
44 | EList<DefinedElement> _elements = type.getElements(); | ||
45 | for (final DefinedElement node : _elements) { | ||
46 | boolean _containsNode = this.statistic.containsNode(node); | ||
47 | boolean _not = (!_containsNode); | ||
48 | if (_not) { | ||
49 | this.statistic.addNodeWithType(node, typeName); | ||
50 | } else { | ||
51 | String currentType = ((String[])Conversions.unwrapArray(this.statistic.getTypesForNode(node), String.class))[0]; | ||
52 | boolean _isSuperType = this.isSuperType(currentType, type.getInterpretationOf()); | ||
53 | if (_isSuperType) { | ||
54 | this.statistic.overwriteCurrentType(node, typeName); | ||
55 | } | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | } | ||
60 | EList<PartialRelationInterpretation> _partialrelationinterpretation = partial.getPartialrelationinterpretation(); | ||
61 | for (final PartialRelationInterpretation relationInterpretation : _partialrelationinterpretation) { | ||
62 | { | ||
63 | final String type_1 = relationInterpretation.getInterpretationOf().getName().split(" ")[0]; | ||
64 | Iterable<BinaryElementRelationLink> _filter = Iterables.<BinaryElementRelationLink>filter(relationInterpretation.getRelationlinks(), BinaryElementRelationLink.class); | ||
65 | for (final BinaryElementRelationLink edge : _filter) { | ||
66 | this.statistic.addEdge(edge.getParam1(), edge.getParam2(), type_1); | ||
67 | } | ||
68 | } | ||
69 | } | ||
70 | this.name = name; | ||
71 | this.metrics = metrics; | ||
72 | } | ||
73 | |||
74 | /** | ||
75 | * recursively check if a type is the super type of another | ||
76 | */ | ||
77 | public boolean isSuperType(final String typeName, final Type subtypeToCheck) { | ||
78 | EList<Type> superTypes = subtypeToCheck.getSupertypes(); | ||
79 | int _size = superTypes.size(); | ||
80 | boolean _equals = (_size == 0); | ||
81 | if (_equals) { | ||
82 | return false; | ||
83 | } else { | ||
84 | final Function1<Type, String> _function = (Type it) -> { | ||
85 | return it.getName().replace(this.classSuffix, ""); | ||
86 | }; | ||
87 | boolean _contains = ListExtensions.<Type, String>map(subtypeToCheck.getSupertypes(), _function).contains(typeName); | ||
88 | if (_contains) { | ||
89 | return true; | ||
90 | } else { | ||
91 | for (final Type superType : superTypes) { | ||
92 | boolean _isSuperType = this.isSuperType(typeName, superType); | ||
93 | if (_isSuperType) { | ||
94 | return true; | ||
95 | } | ||
96 | } | ||
97 | return false; | ||
98 | } | ||
99 | } | ||
100 | } | ||
101 | |||
102 | /** | ||
103 | * Check if a Type object is the class that we want to consider | ||
104 | * A type object is to be considered if it satisfy one of the following: | ||
105 | * 1. if it is not abstract | ||
106 | * 2. if it is abstract but has a subclass of type TypeDefinition (This means the generation is | ||
107 | * started with nodes in this type) | ||
108 | */ | ||
109 | public boolean isConcreteType(final Type t) { | ||
110 | if (((!t.isIsAbstract()) || (IterableExtensions.<Type>findFirst(t.getSubtypes(), ((Function1<Type, Boolean>) (Type it) -> { | ||
111 | return Boolean.valueOf((it instanceof TypeDefinition)); | ||
112 | })) != null))) { | ||
113 | return true; | ||
114 | } | ||
115 | return false; | ||
116 | } | ||
117 | |||
118 | /** | ||
119 | * Set basic information for the output | ||
120 | */ | ||
121 | @Override | ||
122 | public void setBasicInformation(final ArrayList<ArrayList<String>> output) { | ||
123 | final ArrayList<String> metaInfo = new ArrayList<String>(); | ||
124 | metaInfo.add(Graph.META_MODEL_HEADER); | ||
125 | metaInfo.add(this.metaModel); | ||
126 | final ArrayList<String> edgeInfo = new ArrayList<String>(); | ||
127 | edgeInfo.add(Graph.NUM_EDGE_TYPE_HEADER); | ||
128 | int _size = this.statistic.getAllTypes().size(); | ||
129 | String _plus = (Integer.valueOf(_size) + ""); | ||
130 | edgeInfo.add(_plus); | ||
131 | final ArrayList<String> nodeInfo = new ArrayList<String>(); | ||
132 | nodeInfo.add(Graph.NUM_NODE_HEADER); | ||
133 | int _size_1 = this.statistic.getAllNodes().size(); | ||
134 | String _plus_1 = (Integer.valueOf(_size_1) + ""); | ||
135 | nodeInfo.add(_plus_1); | ||
136 | final ArrayList<String> stateInfo = new ArrayList<String>(); | ||
137 | stateInfo.add(Graph.STATE_ID_HEADER); | ||
138 | stateInfo.add(this.name); | ||
139 | output.add(metaInfo); | ||
140 | output.add(edgeInfo); | ||
141 | output.add(nodeInfo); | ||
142 | output.add(stateInfo); | ||
143 | } | ||
144 | |||
145 | private Iterable<PartialComplexTypeInterpretationImpl> getTypes(final PartialInterpretation partial) { | ||
146 | final Function1<PartialComplexTypeInterpretationImpl, Boolean> _function = (PartialComplexTypeInterpretationImpl it) -> { | ||
147 | boolean _contains = it.getInterpretationOf().getName().toLowerCase().contains(this.typeToExclude); | ||
148 | return Boolean.valueOf((!_contains)); | ||
149 | }; | ||
150 | return IterableExtensions.<PartialComplexTypeInterpretationImpl>filter(Iterables.<PartialComplexTypeInterpretationImpl>filter(partial.getPartialtypeinterpratation(), PartialComplexTypeInterpretationImpl.class), _function); | ||
151 | } | ||
152 | |||
153 | @Override | ||
154 | public GraphStatistic getStatistic() { | ||
155 | throw new UnsupportedOperationException("TODO: auto-generated method stub"); | ||
156 | } | ||
157 | |||
158 | @Override | ||
159 | public String getName() { | ||
160 | return this.name; | ||
161 | } | ||
162 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.java._trace new file mode 100644 index 00000000..983bd97e --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.xtendbin new file mode 100644 index 00000000..daf9b285 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.CsvFileWriter.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.DataName.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.DataName.java._trace new file mode 100644 index 00000000..7a93f65a --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.DataName.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.java._trace new file mode 100644 index 00000000..2ee37cec --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.xtendbin new file mode 100644 index 00000000..8dda7d21 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.GraphReader.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.java._trace new file mode 100644 index 00000000..e7945d8c --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.xtendbin new file mode 100644 index 00000000..74675aec --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/.RepMetricsReader.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.java new file mode 100644 index 00000000..d166e31b --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/CsvFileWriter.java | |||
@@ -0,0 +1,75 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io; | ||
2 | |||
3 | import java.io.File; | ||
4 | import java.io.FileNotFoundException; | ||
5 | import java.io.FileOutputStream; | ||
6 | import java.io.PrintWriter; | ||
7 | import java.util.ArrayList; | ||
8 | import java.util.List; | ||
9 | import org.eclipse.xtext.xbase.lib.Exceptions; | ||
10 | |||
11 | @SuppressWarnings("all") | ||
12 | public class CsvFileWriter { | ||
13 | public static void write(final ArrayList<ArrayList<String>> datas, final String uri) { | ||
14 | try { | ||
15 | int _size = datas.size(); | ||
16 | boolean _lessEqualsThan = (_size <= 0); | ||
17 | if (_lessEqualsThan) { | ||
18 | return; | ||
19 | } | ||
20 | File _file = new File(uri); | ||
21 | final PrintWriter writer = new PrintWriter(_file); | ||
22 | CsvFileWriter.output(writer, datas, uri); | ||
23 | } catch (Throwable _e) { | ||
24 | throw Exceptions.sneakyThrow(_e); | ||
25 | } | ||
26 | } | ||
27 | |||
28 | public static void append(final ArrayList<ArrayList<String>> datas, final String uri) { | ||
29 | try { | ||
30 | int _size = datas.size(); | ||
31 | boolean _lessEqualsThan = (_size <= 0); | ||
32 | if (_lessEqualsThan) { | ||
33 | return; | ||
34 | } | ||
35 | File _file = new File(uri); | ||
36 | FileOutputStream _fileOutputStream = new FileOutputStream(_file, true); | ||
37 | final PrintWriter writer = new PrintWriter(_fileOutputStream); | ||
38 | CsvFileWriter.output(writer, datas, uri); | ||
39 | } catch (Throwable _e) { | ||
40 | throw Exceptions.sneakyThrow(_e); | ||
41 | } | ||
42 | } | ||
43 | |||
44 | private static void output(final PrintWriter writer, final ArrayList<ArrayList<String>> datas, final String uri) { | ||
45 | try { | ||
46 | final StringBuilder output = new StringBuilder(); | ||
47 | for (final List<String> datarow : datas) { | ||
48 | { | ||
49 | for (int i = 0; (i < (datarow.size() - 1)); i++) { | ||
50 | String _get = datarow.get(i); | ||
51 | String _plus = (_get + ","); | ||
52 | output.append(_plus); | ||
53 | } | ||
54 | int _size = datarow.size(); | ||
55 | boolean _greaterEqualsThan = (_size >= 1); | ||
56 | if (_greaterEqualsThan) { | ||
57 | int _size_1 = datarow.size(); | ||
58 | int _minus = (_size_1 - 1); | ||
59 | output.append(datarow.get(_minus)); | ||
60 | output.append("\n"); | ||
61 | } | ||
62 | } | ||
63 | } | ||
64 | writer.write(output.toString()); | ||
65 | writer.close(); | ||
66 | } catch (final Throwable _t) { | ||
67 | if (_t instanceof FileNotFoundException) { | ||
68 | final FileNotFoundException e = (FileNotFoundException)_t; | ||
69 | e.printStackTrace(); | ||
70 | } else { | ||
71 | throw Exceptions.sneakyThrow(_t); | ||
72 | } | ||
73 | } | ||
74 | } | ||
75 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/DataName.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/DataName.java new file mode 100644 index 00000000..9e2c9c86 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/DataName.java | |||
@@ -0,0 +1,12 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io; | ||
2 | |||
3 | @SuppressWarnings("all") | ||
4 | public class DataName { | ||
5 | public final static String REP_PATH = "data/"; | ||
6 | |||
7 | public final static String MPC_REP = "mpc_rep"; | ||
8 | |||
9 | public final static String NA_REP = "na_rep"; | ||
10 | |||
11 | public final static String OUT_D_REP = "out_d_rep"; | ||
12 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.java new file mode 100644 index 00000000..0299fc0c --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/GraphReader.java | |||
@@ -0,0 +1,138 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.EdgeTypeMetric; | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
6 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MultiplexParticipationCoefficientMetric; | ||
7 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeActivityMetric; | ||
8 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.NodeTypeMetric; | ||
9 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.OutDegreeMetric; | ||
10 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.TypedOutDegree; | ||
11 | import java.io.File; | ||
12 | import java.io.FileNotFoundException; | ||
13 | import java.util.ArrayList; | ||
14 | import java.util.List; | ||
15 | import org.eclipse.emf.common.util.EList; | ||
16 | import org.eclipse.emf.common.util.URI; | ||
17 | import org.eclipse.emf.ecore.EObject; | ||
18 | import org.eclipse.emf.ecore.EPackage; | ||
19 | import org.eclipse.emf.ecore.EReference; | ||
20 | import org.eclipse.emf.ecore.resource.Resource; | ||
21 | import org.eclipse.emf.ecore.resource.ResourceSet; | ||
22 | import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; | ||
23 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
24 | import org.eclipse.xtext.xbase.lib.Exceptions; | ||
25 | import org.eclipse.xtext.xbase.lib.Functions.Function1; | ||
26 | import org.eclipse.xtext.xbase.lib.IterableExtensions; | ||
27 | |||
28 | @SuppressWarnings("all") | ||
29 | public class GraphReader { | ||
30 | private final ResourceSet resSet = new ResourceSetImpl(); | ||
31 | |||
32 | private final ArrayList<EReference> referenceTypes = new ArrayList<EReference>(); | ||
33 | |||
34 | private String suffix; | ||
35 | |||
36 | public GraphReader(final EPackage metaModel, final String suffix) { | ||
37 | throw new Error("Unresolved compilation problems:" | ||
38 | + "\nXMIResourceFactoryImpl cannot be resolved."); | ||
39 | } | ||
40 | |||
41 | public List<EMFGraph> readModels(final String path) { | ||
42 | try { | ||
43 | final File dir = new File(path); | ||
44 | boolean _isDirectory = dir.isDirectory(); | ||
45 | boolean _not = (!_isDirectory); | ||
46 | if (_not) { | ||
47 | throw new Exception("expecting a directory"); | ||
48 | } | ||
49 | final ArrayList<EMFGraph> graphs = new ArrayList<EMFGraph>(); | ||
50 | final ArrayList<Metric> metrics = new ArrayList<Metric>(); | ||
51 | OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); | ||
52 | metrics.add(_outDegreeMetric); | ||
53 | NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); | ||
54 | metrics.add(_nodeActivityMetric); | ||
55 | MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); | ||
56 | metrics.add(_multiplexParticipationCoefficientMetric); | ||
57 | TypedOutDegree _typedOutDegree = new TypedOutDegree(); | ||
58 | metrics.add(_typedOutDegree); | ||
59 | NodeTypeMetric _nodeTypeMetric = new NodeTypeMetric(); | ||
60 | metrics.add(_nodeTypeMetric); | ||
61 | EdgeTypeMetric _edgeTypeMetric = new EdgeTypeMetric(); | ||
62 | metrics.add(_edgeTypeMetric); | ||
63 | int count = 1; | ||
64 | final Function1<String, Boolean> _function = (String it) -> { | ||
65 | return Boolean.valueOf(it.endsWith(this.suffix)); | ||
66 | }; | ||
67 | Iterable<String> _filter = IterableExtensions.<String>filter(((Iterable<String>)Conversions.doWrapArray(dir.list())), _function); | ||
68 | for (final String name : _filter) { | ||
69 | { | ||
70 | final File file = new File(name); | ||
71 | final List<EObject> roots = this.<EObject>readModel(EObject.class, path, file.getName()); | ||
72 | final EMFGraph g = new EMFGraph(); | ||
73 | for (final EObject root : roots) { | ||
74 | g.init(root, metrics, name.replaceFirst(this.suffix, ""), this.referenceTypes); | ||
75 | } | ||
76 | count++; | ||
77 | graphs.add(g); | ||
78 | } | ||
79 | } | ||
80 | return graphs; | ||
81 | } catch (Throwable _e) { | ||
82 | throw Exceptions.sneakyThrow(_e); | ||
83 | } | ||
84 | } | ||
85 | |||
86 | public EMFGraph readModel(final String path, final String filename) { | ||
87 | final ArrayList<Metric> metrics = new ArrayList<Metric>(); | ||
88 | OutDegreeMetric _outDegreeMetric = new OutDegreeMetric(); | ||
89 | metrics.add(_outDegreeMetric); | ||
90 | NodeActivityMetric _nodeActivityMetric = new NodeActivityMetric(); | ||
91 | metrics.add(_nodeActivityMetric); | ||
92 | MultiplexParticipationCoefficientMetric _multiplexParticipationCoefficientMetric = new MultiplexParticipationCoefficientMetric(); | ||
93 | metrics.add(_multiplexParticipationCoefficientMetric); | ||
94 | TypedOutDegree _typedOutDegree = new TypedOutDegree(); | ||
95 | metrics.add(_typedOutDegree); | ||
96 | NodeTypeMetric _nodeTypeMetric = new NodeTypeMetric(); | ||
97 | metrics.add(_nodeTypeMetric); | ||
98 | EdgeTypeMetric _edgeTypeMetric = new EdgeTypeMetric(); | ||
99 | metrics.add(_edgeTypeMetric); | ||
100 | final File file = new File(filename); | ||
101 | final List<EObject> roots = this.<EObject>readModel(EObject.class, path, file.getName()); | ||
102 | final EMFGraph g = new EMFGraph(); | ||
103 | for (final EObject root : roots) { | ||
104 | g.init(root, metrics, filename.replaceFirst(this.suffix, ""), this.referenceTypes); | ||
105 | } | ||
106 | return g; | ||
107 | } | ||
108 | |||
109 | public <RootType extends EObject> List<RootType> readModel(final Class<RootType> type, final String path, final String name) { | ||
110 | try { | ||
111 | try { | ||
112 | final Resource resource = this.resSet.getResource(GraphReader.getURI(path, name), true); | ||
113 | if ((resource == null)) { | ||
114 | String _string = GraphReader.getURI(path, name).toString(); | ||
115 | throw new FileNotFoundException(_string); | ||
116 | } else { | ||
117 | EList<EObject> _contents = resource.getContents(); | ||
118 | return ((List<RootType>) _contents); | ||
119 | } | ||
120 | } catch (final Throwable _t) { | ||
121 | if (_t instanceof Exception) { | ||
122 | final Exception e = (Exception)_t; | ||
123 | e.printStackTrace(); | ||
124 | String _string_1 = GraphReader.getURI(path, name).toString(); | ||
125 | throw new Exception(_string_1); | ||
126 | } else { | ||
127 | throw Exceptions.sneakyThrow(_t); | ||
128 | } | ||
129 | } | ||
130 | } catch (Throwable _e) { | ||
131 | throw Exceptions.sneakyThrow(_e); | ||
132 | } | ||
133 | } | ||
134 | |||
135 | public static URI getURI(final String path, final String name) { | ||
136 | return URI.createFileURI(((path + "/") + name)); | ||
137 | } | ||
138 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.java new file mode 100644 index 00000000..2486cf83 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/io/RepMetricsReader.java | |||
@@ -0,0 +1,49 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.EMFGraph; | ||
5 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.GraphReader; | ||
6 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup; | ||
7 | import com.google.common.base.Objects; | ||
8 | import com.google.common.collect.Iterators; | ||
9 | import java.util.Iterator; | ||
10 | import org.eclipse.emf.ecore.EReference; | ||
11 | import org.eclipse.emf.ecore.impl.EcorePackageImpl; | ||
12 | import org.eclipse.xtext.xbase.lib.Functions.Function1; | ||
13 | import org.eclipse.xtext.xbase.lib.IterableExtensions; | ||
14 | import org.eclipse.xtext.xbase.lib.IteratorExtensions; | ||
15 | import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; | ||
16 | |||
17 | /** | ||
18 | * Read the sample of the distribution of a metric provided the csv file of the metric | ||
19 | */ | ||
20 | @SuppressWarnings("all") | ||
21 | public class RepMetricsReader { | ||
22 | private static Domain domain; | ||
23 | |||
24 | public static MetricSampleGroup read(final Domain d) { | ||
25 | throw new Error("Unresolved compilation problems:" | ||
26 | + "\nThe method or field GithubPackageImpl is undefined" | ||
27 | + "\neINSTANCE cannot be resolved"); | ||
28 | } | ||
29 | |||
30 | /** | ||
31 | * Read representative model | ||
32 | */ | ||
33 | private static MetricSampleGroup readMetrics(final GraphReader r, final String path) { | ||
34 | final EMFGraph model = IterableExtensions.<EMFGraph>head(r.readModels(path)); | ||
35 | boolean _equals = Objects.equal(RepMetricsReader.domain, Domain.Ecore); | ||
36 | if (_equals) { | ||
37 | final Function1<EReference, Boolean> _function = (EReference it) -> { | ||
38 | return Boolean.valueOf((((((it.getName().equals("eGenericType") || it.getName().equals("eGenericSuperTypes")) || it.getName().equals("eFactoryInstance")) || | ||
39 | it.getName().equals("eGenericExceptions")) || it.getName().equals("references")) || it.getName().equals("contents"))); | ||
40 | }; | ||
41 | Iterator<EReference> refsToRemove = IteratorExtensions.<EReference>filter(Iterators.<EReference>filter(EcorePackageImpl.eINSTANCE.eAllContents(), EReference.class), _function); | ||
42 | final Procedure1<EReference> _function_1 = (EReference it) -> { | ||
43 | model.removeReference(it); | ||
44 | }; | ||
45 | IteratorExtensions.<EReference>forEach(refsToRemove, _function_1); | ||
46 | } | ||
47 | return model.evaluateAllMetricsToSamples(); | ||
48 | } | ||
49 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.java._trace new file mode 100644 index 00000000..6f941f84 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.xtendbin new file mode 100644 index 00000000..97674c9e --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.EdgeTypeMetric.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.java._trace new file mode 100644 index 00000000..4feb0150 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.xtendbin new file mode 100644 index 00000000..ffe985d4 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.Metric.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.java._trace new file mode 100644 index 00000000..e206794e --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.xtendbin new file mode 100644 index 00000000..478004db --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MetricSampleGroup.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.java._trace new file mode 100644 index 00000000..7e322646 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.xtendbin new file mode 100644 index 00000000..14cb7ae5 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.MultiplexParticipationCoefficientMetric.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.java._trace new file mode 100644 index 00000000..b6cf817f --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.xtendbin new file mode 100644 index 00000000..074a8167 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeActivityMetric.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.java._trace new file mode 100644 index 00000000..fbf9468d --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.xtendbin new file mode 100644 index 00000000..38aa72c1 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.NodeTypeMetric.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.java._trace new file mode 100644 index 00000000..bfec1ccd --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.xtendbin new file mode 100644 index 00000000..eeed0bd4 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.OutDegreeMetric.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.java._trace new file mode 100644 index 00000000..5cc35d7c --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.xtendbin new file mode 100644 index 00000000..3d9fe56e --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedClusteringCoefficientMetric.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.java._trace new file mode 100644 index 00000000..0b3e6e4f --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.xtendbin new file mode 100644 index 00000000..5f61f506 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/.TypedOutDegree.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/EdgeTypeMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/EdgeTypeMetric.java new file mode 100644 index 00000000..58dea567 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/EdgeTypeMetric.java | |||
@@ -0,0 +1,65 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
5 | import com.google.common.collect.Multimap; | ||
6 | import java.util.ArrayList; | ||
7 | import java.util.Collection; | ||
8 | import java.util.HashMap; | ||
9 | import java.util.Set; | ||
10 | import java.util.function.BiConsumer; | ||
11 | import org.eclipse.emf.ecore.EObject; | ||
12 | import org.eclipse.xtext.xbase.lib.CollectionLiterals; | ||
13 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
14 | import org.eclipse.xtext.xbase.lib.Functions.Function2; | ||
15 | import org.eclipse.xtext.xbase.lib.IterableExtensions; | ||
16 | |||
17 | @SuppressWarnings("all") | ||
18 | public class EdgeTypeMetric extends Metric { | ||
19 | @Override | ||
20 | public String[][] evaluate(final GraphStatistic g) { | ||
21 | Object _evaluateSamples = this.evaluateSamples(g); | ||
22 | HashMap<String, Double> map = ((HashMap<String, Double>) _evaluateSamples); | ||
23 | ArrayList<String[]> output = new ArrayList<String[]>(); | ||
24 | output.add(((String[])Conversions.unwrapArray(CollectionLiterals.<String>newArrayList("Edge Type"), String.class))); | ||
25 | Set<String> keys = map.keySet(); | ||
26 | ArrayList<String> values = CollectionLiterals.<String>newArrayList(); | ||
27 | for (final String key : keys) { | ||
28 | Double _get = map.get(key); | ||
29 | String _plus = (_get + ""); | ||
30 | values.add(_plus); | ||
31 | } | ||
32 | final Set<String> _converted_keys = (Set<String>)keys; | ||
33 | output.add(((String[])Conversions.unwrapArray(_converted_keys, String.class))); | ||
34 | final ArrayList<String> _converted_values = (ArrayList<String>)values; | ||
35 | output.add(((String[])Conversions.unwrapArray(_converted_values, String.class))); | ||
36 | return ((String[][])Conversions.unwrapArray(output, String[].class)); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public Object evaluateSamples(final GraphStatistic g) { | ||
41 | final HashMap<String, Double> map = new HashMap<String, Double>(); | ||
42 | HashMap<String, Multimap<EObject, EObject>> outgoingEdges = g.getOutgoingEdges(); | ||
43 | final Function2<Integer, Multimap<EObject, EObject>, Integer> _function = (Integer r, Multimap<EObject, EObject> t) -> { | ||
44 | final Function2<Integer, Collection<EObject>, Integer> _function_1 = (Integer r1, Collection<EObject> t1) -> { | ||
45 | int _size = t1.size(); | ||
46 | return Integer.valueOf(((r1).intValue() + _size)); | ||
47 | }; | ||
48 | Integer _fold = IterableExtensions.<Collection<EObject>, Integer>fold(t.asMap().values(), Integer.valueOf(0), _function_1); | ||
49 | return Integer.valueOf(((r).intValue() + (_fold).intValue())); | ||
50 | }; | ||
51 | Integer _fold = IterableExtensions.<Multimap<EObject, EObject>, Integer>fold(outgoingEdges.values(), Integer.valueOf(0), _function); | ||
52 | final double edgeCount = ((double) (int) _fold); | ||
53 | final BiConsumer<String, Multimap<EObject, EObject>> _function_1 = (String k, Multimap<EObject, EObject> v) -> { | ||
54 | final Function2<Integer, Collection<EObject>, Integer> _function_2 = (Integer r, Collection<EObject> t) -> { | ||
55 | int _size = t.size(); | ||
56 | return Integer.valueOf(((r).intValue() + _size)); | ||
57 | }; | ||
58 | Integer _fold_1 = IterableExtensions.<Collection<EObject>, Integer>fold(v.asMap().values(), Integer.valueOf(0), _function_2); | ||
59 | double value = ((_fold_1).intValue() / edgeCount); | ||
60 | map.put(k, Double.valueOf(value)); | ||
61 | }; | ||
62 | outgoingEdges.forEach(_function_1); | ||
63 | return map; | ||
64 | } | ||
65 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.java new file mode 100644 index 00000000..be6353a2 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/Metric.java | |||
@@ -0,0 +1,10 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | |||
5 | @SuppressWarnings("all") | ||
6 | public abstract class Metric { | ||
7 | public abstract String[][] evaluate(final GraphStatistic g); | ||
8 | |||
9 | public abstract Object evaluateSamples(final GraphStatistic g); | ||
10 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.java new file mode 100644 index 00000000..6db61944 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MetricSampleGroup.java | |||
@@ -0,0 +1,19 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import java.util.HashMap; | ||
4 | import java.util.List; | ||
5 | |||
6 | @SuppressWarnings("all") | ||
7 | public class MetricSampleGroup { | ||
8 | public List<Double> mpcSamples; | ||
9 | |||
10 | public List<Double> naSamples; | ||
11 | |||
12 | public List<Double> outDegreeSamples; | ||
13 | |||
14 | public HashMap<String, List<Integer>> typedOutDegreeSamples; | ||
15 | |||
16 | public HashMap<String, Double> nodeTypeSamples; | ||
17 | |||
18 | public HashMap<String, Double> edgeTypeSamples; | ||
19 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.java new file mode 100644 index 00000000..660a5978 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.java | |||
@@ -0,0 +1,59 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
5 | import java.text.DecimalFormat; | ||
6 | import java.util.ArrayList; | ||
7 | import java.util.List; | ||
8 | import java.util.function.Consumer; | ||
9 | import org.eclipse.emf.ecore.EObject; | ||
10 | |||
11 | @SuppressWarnings("all") | ||
12 | public class MultiplexParticipationCoefficientMetric extends Metric { | ||
13 | public final static String countName = "MPCCount"; | ||
14 | |||
15 | public final static String valueName = "MPCValue"; | ||
16 | |||
17 | private final DecimalFormat formatter = new DecimalFormat("#0.00000"); | ||
18 | |||
19 | @Override | ||
20 | public String[][] evaluate(final GraphStatistic g) { | ||
21 | throw new Error("Unresolved compilation problems:" | ||
22 | + "\nInvalid number of arguments. The method newArrayOfSize(int) is not applicable for the arguments (int,int)"); | ||
23 | } | ||
24 | |||
25 | @Override | ||
26 | public Object evaluateSamples(final GraphStatistic g) { | ||
27 | final ArrayList<Double> samples = new ArrayList<Double>(); | ||
28 | final int typeCounts = g.getAllTypes().size(); | ||
29 | final Consumer<EObject> _function = (EObject it) -> { | ||
30 | samples.add(Double.valueOf(this.calculateMPC(it, g, typeCounts))); | ||
31 | }; | ||
32 | g.getAllNodes().forEach(_function); | ||
33 | return samples; | ||
34 | } | ||
35 | |||
36 | public double calculateMPC(final EObject n, final GraphStatistic g, final int typeCounts) { | ||
37 | int _outDegree = g.outDegree(n); | ||
38 | int _inDegree = g.inDegree(n); | ||
39 | final int edgeCounts = (_outDegree + _inDegree); | ||
40 | double coef = 0.0; | ||
41 | List<String> _allTypes = g.getAllTypes(); | ||
42 | for (final String type : _allTypes) { | ||
43 | { | ||
44 | int _dimentionalDegree = g.dimentionalDegree(n, type); | ||
45 | final double degree = ((double) _dimentionalDegree); | ||
46 | double _coef = coef; | ||
47 | double _pow = Math.pow((degree / edgeCounts), 2); | ||
48 | coef = (_coef + _pow); | ||
49 | } | ||
50 | } | ||
51 | coef = (1 - coef); | ||
52 | coef = ((coef * typeCounts) / (typeCounts - 1)); | ||
53 | boolean _isNaN = Double.isNaN(coef); | ||
54 | if (_isNaN) { | ||
55 | coef = 0; | ||
56 | } | ||
57 | return Double.parseDouble(this.formatter.format(coef)); | ||
58 | } | ||
59 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.java new file mode 100644 index 00000000..12bec460 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeActivityMetric.java | |||
@@ -0,0 +1,31 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
5 | import java.util.ArrayList; | ||
6 | import java.util.function.Consumer; | ||
7 | import org.eclipse.emf.ecore.EObject; | ||
8 | |||
9 | @SuppressWarnings("all") | ||
10 | public class NodeActivityMetric extends Metric { | ||
11 | public final static String countName = "NACount"; | ||
12 | |||
13 | public final static String valueName = "NAValue"; | ||
14 | |||
15 | @Override | ||
16 | public String[][] evaluate(final GraphStatistic g) { | ||
17 | throw new Error("Unresolved compilation problems:" | ||
18 | + "\nInvalid number of arguments. The method newArrayOfSize(int) is not applicable for the arguments (int,int)"); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Object evaluateSamples(final GraphStatistic g) { | ||
23 | final ArrayList<Double> samples = new ArrayList<Double>(); | ||
24 | final Consumer<EObject> _function = (EObject it) -> { | ||
25 | int _numOfEdgeTypes = g.numOfEdgeTypes(it); | ||
26 | samples.add(Double.valueOf(((double) _numOfEdgeTypes))); | ||
27 | }; | ||
28 | g.getAllNodes().forEach(_function); | ||
29 | return samples; | ||
30 | } | ||
31 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeTypeMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeTypeMetric.java new file mode 100644 index 00000000..75c2cfef --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/NodeTypeMetric.java | |||
@@ -0,0 +1,54 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
5 | import java.util.ArrayList; | ||
6 | import java.util.HashMap; | ||
7 | import java.util.List; | ||
8 | import java.util.Map; | ||
9 | import java.util.Set; | ||
10 | import org.eclipse.emf.ecore.EObject; | ||
11 | import org.eclipse.xtext.xbase.lib.CollectionLiterals; | ||
12 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
13 | |||
14 | @SuppressWarnings("all") | ||
15 | public class NodeTypeMetric extends Metric { | ||
16 | @Override | ||
17 | public String[][] evaluate(final GraphStatistic g) { | ||
18 | Object _evaluateSamples = this.evaluateSamples(g); | ||
19 | HashMap<String, Double> map = ((HashMap<String, Double>) _evaluateSamples); | ||
20 | ArrayList<String[]> output = new ArrayList<String[]>(); | ||
21 | output.add(((String[])Conversions.unwrapArray(CollectionLiterals.<String>newArrayList("Node Type"), String.class))); | ||
22 | Set<String> keys = map.keySet(); | ||
23 | ArrayList<String> values = CollectionLiterals.<String>newArrayList(); | ||
24 | for (final String key : keys) { | ||
25 | Double _get = map.get(key); | ||
26 | String _plus = (_get + ""); | ||
27 | values.add(_plus); | ||
28 | } | ||
29 | final Set<String> _converted_keys = (Set<String>)keys; | ||
30 | output.add(((String[])Conversions.unwrapArray(_converted_keys, String.class))); | ||
31 | final ArrayList<String> _converted_values = (ArrayList<String>)values; | ||
32 | output.add(((String[])Conversions.unwrapArray(_converted_values, String.class))); | ||
33 | return ((String[][])Conversions.unwrapArray(output, String[].class)); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public Object evaluateSamples(final GraphStatistic g) { | ||
38 | HashMap<String, Double> map = new HashMap<String, Double>(); | ||
39 | List<EObject> nodes = g.getAllNodes(); | ||
40 | int _size = nodes.size(); | ||
41 | double single = (1.0 / _size); | ||
42 | Map<EObject, Set<String>> nodeToType = g.getNodeToTypesMap(); | ||
43 | for (final EObject node : nodes) { | ||
44 | Set<String> _get = nodeToType.get(node); | ||
45 | for (final String cl : _get) { | ||
46 | { | ||
47 | Double value = map.getOrDefault(cl, Double.valueOf(0.0)); | ||
48 | map.put(cl, Double.valueOf(((value).doubleValue() + single))); | ||
49 | } | ||
50 | } | ||
51 | } | ||
52 | return map; | ||
53 | } | ||
54 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.java new file mode 100644 index 00000000..67e4be0d --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/OutDegreeMetric.java | |||
@@ -0,0 +1,31 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
5 | import java.util.ArrayList; | ||
6 | import java.util.function.Consumer; | ||
7 | import org.eclipse.emf.ecore.EObject; | ||
8 | |||
9 | @SuppressWarnings("all") | ||
10 | public class OutDegreeMetric extends Metric { | ||
11 | public final static String countName = "OutDegreeCount"; | ||
12 | |||
13 | public final static String valueName = "OutDegreeValue"; | ||
14 | |||
15 | @Override | ||
16 | public String[][] evaluate(final GraphStatistic g) { | ||
17 | throw new Error("Unresolved compilation problems:" | ||
18 | + "\nInvalid number of arguments. The method newArrayOfSize(int) is not applicable for the arguments (int,int)"); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Object evaluateSamples(final GraphStatistic g) { | ||
23 | final ArrayList<Double> samples = new ArrayList<Double>(); | ||
24 | final Consumer<EObject> _function = (EObject it) -> { | ||
25 | int _outDegree = g.outDegree(it); | ||
26 | samples.add(Double.valueOf(((double) _outDegree))); | ||
27 | }; | ||
28 | g.getAllNodes().forEach(_function); | ||
29 | return samples; | ||
30 | } | ||
31 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.java new file mode 100644 index 00000000..042af5c3 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedClusteringCoefficientMetric.java | |||
@@ -0,0 +1,74 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
5 | import com.google.common.base.Objects; | ||
6 | import java.text.DecimalFormat; | ||
7 | import java.util.ArrayList; | ||
8 | import java.util.Collection; | ||
9 | import java.util.HashSet; | ||
10 | import java.util.List; | ||
11 | import java.util.function.Consumer; | ||
12 | import org.eclipse.emf.ecore.EObject; | ||
13 | |||
14 | @SuppressWarnings("all") | ||
15 | public class TypedClusteringCoefficientMetric extends Metric { | ||
16 | public final static String countName = "TCCCount"; | ||
17 | |||
18 | public final static String valueName = "TCCValue"; | ||
19 | |||
20 | private final DecimalFormat formatter = new DecimalFormat("#0.00000"); | ||
21 | |||
22 | @Override | ||
23 | public String[][] evaluate(final GraphStatistic g) { | ||
24 | throw new Error("Unresolved compilation problems:" | ||
25 | + "\nInvalid number of arguments. The method newArrayOfSize(int) is not applicable for the arguments (int,int)"); | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public Object evaluateSamples(final GraphStatistic g) { | ||
30 | final ArrayList<Double> samples = new ArrayList<Double>(); | ||
31 | final Consumer<EObject> _function = (EObject it) -> { | ||
32 | samples.add(Double.valueOf(this.calculateTCC1(it, g))); | ||
33 | }; | ||
34 | g.getAllNodes().forEach(_function); | ||
35 | return samples; | ||
36 | } | ||
37 | |||
38 | /** | ||
39 | * Compute TCC1 metric for node n | ||
40 | */ | ||
41 | public double calculateTCC1(final EObject n, final GraphStatistic g) { | ||
42 | int wedges = 0; | ||
43 | int triangles = 0; | ||
44 | List<String> _allTypes = g.getAllTypes(); | ||
45 | for (final String type1 : _allTypes) { | ||
46 | { | ||
47 | Collection<EObject> _get = g.getOutgoingEdges().get(type1).get(n); | ||
48 | final HashSet<EObject> typed1RelatedOfN = new HashSet<EObject>(_get); | ||
49 | Collection<EObject> _get_1 = g.incomingEdges().get(type1).get(n); | ||
50 | final HashSet<EObject> type1EdgeSourceNodesOfN = new HashSet<EObject>(_get_1); | ||
51 | typed1RelatedOfN.addAll(type1EdgeSourceNodesOfN); | ||
52 | final int d = typed1RelatedOfN.size(); | ||
53 | int _wedges = wedges; | ||
54 | wedges = (_wedges + (d * (d - 1))); | ||
55 | for (final EObject n1 : typed1RelatedOfN) { | ||
56 | for (final EObject n2 : typed1RelatedOfN) { | ||
57 | List<String> _allTypes_1 = g.getAllTypes(); | ||
58 | for (final String type2 : _allTypes_1) { | ||
59 | if (((!Objects.equal(type1, type2)) && (g.getOutgoingEdges().get(type2).containsEntry(n1, n2) || | ||
60 | g.getOutgoingEdges().get(type2).containsEntry(n2, n1)))) { | ||
61 | triangles++; | ||
62 | } | ||
63 | } | ||
64 | } | ||
65 | } | ||
66 | } | ||
67 | } | ||
68 | if ((wedges == 0.0)) { | ||
69 | return 0.0; | ||
70 | } else { | ||
71 | return (((double) triangles) / wedges); | ||
72 | } | ||
73 | } | ||
74 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedOutDegree.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedOutDegree.java new file mode 100644 index 00000000..dce80389 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/TypedOutDegree.java | |||
@@ -0,0 +1,73 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.graph.GraphStatistic; | ||
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.Metric; | ||
5 | import com.google.common.collect.Multimap; | ||
6 | import java.util.ArrayList; | ||
7 | import java.util.HashMap; | ||
8 | import java.util.List; | ||
9 | import java.util.Map; | ||
10 | import java.util.Set; | ||
11 | import org.eclipse.emf.ecore.EObject; | ||
12 | import org.eclipse.xtext.xbase.lib.CollectionLiterals; | ||
13 | import org.eclipse.xtext.xbase.lib.Conversions; | ||
14 | |||
15 | @SuppressWarnings("all") | ||
16 | public class TypedOutDegree extends Metric { | ||
17 | private HashMap<String, List<Integer>> calculateMetric(final GraphStatistic g) { | ||
18 | HashMap<String, Multimap<EObject, EObject>> outgoingEdges = g.getOutgoingEdges(); | ||
19 | HashMap<String, List<Integer>> metric = new HashMap<String, List<Integer>>(); | ||
20 | Map<EObject, Set<String>> nodeToTypes = g.getNodeToTypesMap(); | ||
21 | Set<String> _keySet = outgoingEdges.keySet(); | ||
22 | for (final String edgeType : _keySet) { | ||
23 | Set<EObject> _keySet_1 = outgoingEdges.get(edgeType).keySet(); | ||
24 | for (final EObject node : _keySet_1) { | ||
25 | { | ||
26 | Set<String> classes = nodeToTypes.get(node); | ||
27 | for (final String cl : classes) { | ||
28 | { | ||
29 | String key = ((cl + " ") + edgeType); | ||
30 | List<Integer> typeCount = metric.get(key); | ||
31 | if ((typeCount == null)) { | ||
32 | ArrayList<Integer> _arrayList = new ArrayList<Integer>(); | ||
33 | typeCount = _arrayList; | ||
34 | metric.put(key, typeCount); | ||
35 | } | ||
36 | typeCount.add(Integer.valueOf(outgoingEdges.get(edgeType).get(node).size())); | ||
37 | } | ||
38 | } | ||
39 | } | ||
40 | } | ||
41 | } | ||
42 | return metric; | ||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public String[][] evaluate(final GraphStatistic g) { | ||
47 | HashMap<String, List<Integer>> metric = this.calculateMetric(g); | ||
48 | ArrayList<String[]> output = new ArrayList<String[]>(); | ||
49 | output.add(((String[])Conversions.unwrapArray(CollectionLiterals.<String>newArrayList("Typed Out Degree"), String.class))); | ||
50 | Set<String> _keySet = metric.keySet(); | ||
51 | for (final String key : _keySet) { | ||
52 | { | ||
53 | List<Integer> samples = metric.get(key); | ||
54 | int _size = samples.size(); | ||
55 | int _plus = (_size + 1); | ||
56 | String[] outputForOnePair = new String[_plus]; | ||
57 | outputForOnePair[0] = key; | ||
58 | for (int i = 0; (i < samples.size()); i++) { | ||
59 | Integer _get = samples.get(i); | ||
60 | String _plus_1 = (_get + ""); | ||
61 | outputForOnePair[(i + 1)] = _plus_1; | ||
62 | } | ||
63 | output.add(outputForOnePair); | ||
64 | } | ||
65 | } | ||
66 | return ((String[][])Conversions.unwrapArray(output, String[].class)); | ||
67 | } | ||
68 | |||
69 | @Override | ||
70 | public Object evaluateSamples(final GraphStatistic g) { | ||
71 | return this.calculateMetric(g); | ||
72 | } | ||
73 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.java._trace new file mode 100644 index 00000000..906a396a --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.xtendbin new file mode 100644 index 00000000..06925afd --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/.LinearModel.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/LinearModel.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/LinearModel.java new file mode 100644 index 00000000..6a7f8497 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/predictor/LinearModel.java | |||
@@ -0,0 +1,90 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.predictor; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance.StateData; | ||
4 | import com.google.common.base.Objects; | ||
5 | import java.util.ArrayList; | ||
6 | import java.util.HashMap; | ||
7 | import java.util.List; | ||
8 | import java.util.Map; | ||
9 | |||
10 | @SuppressWarnings("all") | ||
11 | public class LinearModel { | ||
12 | private double ridge; | ||
13 | |||
14 | private Map<Object, StateData> stateAndHistory; | ||
15 | |||
16 | private List<StateData> samples; | ||
17 | |||
18 | public LinearModel(final double ridge) { | ||
19 | this.ridge = ridge; | ||
20 | HashMap<Object, StateData> _hashMap = new HashMap<Object, StateData>(); | ||
21 | this.stateAndHistory = _hashMap; | ||
22 | ArrayList<StateData> _arrayList = new ArrayList<StateData>(); | ||
23 | this.samples = _arrayList; | ||
24 | } | ||
25 | |||
26 | /** | ||
27 | * reset the current train data for regression to a new trajectory | ||
28 | * @param state: the last state of the trajectory | ||
29 | */ | ||
30 | public void resetRegression(final Object state) { | ||
31 | this.samples.clear(); | ||
32 | boolean _containsKey = this.stateAndHistory.containsKey(state); | ||
33 | if (_containsKey) { | ||
34 | StateData data = this.stateAndHistory.get(state); | ||
35 | Object curState = state; | ||
36 | this.samples.add(data); | ||
37 | while ((this.stateAndHistory.containsKey(data.getLastState()) && (!Objects.equal(data.getLastState(), curState)))) { | ||
38 | { | ||
39 | curState = data.getLastState(); | ||
40 | data = this.stateAndHistory.get(data.getLastState()); | ||
41 | this.samples.add(data); | ||
42 | } | ||
43 | } | ||
44 | } | ||
45 | } | ||
46 | |||
47 | /** | ||
48 | * Add a new data point to the current training set | ||
49 | * @param state: the state on which the new data point is calculated | ||
50 | * @param features: the set of feature value(x) | ||
51 | * @param value: the value of the state (y) | ||
52 | * @param lastState: the state which transformed to current state, used to record the trajectory | ||
53 | */ | ||
54 | public boolean feedData(final Object state, final double[] features, final double value, final Object lastState) { | ||
55 | boolean _xblockexpression = false; | ||
56 | { | ||
57 | StateData data = new StateData(features, value, lastState); | ||
58 | this.stateAndHistory.put(state, data); | ||
59 | _xblockexpression = this.samples.add(data); | ||
60 | } | ||
61 | return _xblockexpression; | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * get prediction for next state, without storing the data point into the training set | ||
66 | * @param features: the feature values of current state | ||
67 | * @param value: the value of the current state | ||
68 | * @param: featuresToPredict: the features of the state wanted to be predected | ||
69 | * @return the value of the state to be predicted | ||
70 | */ | ||
71 | public double getPredictionForNextDataSample(final double[] features, final double value, final double[] featuresToPredict) { | ||
72 | throw new Error("Unresolved compilation problems:" | ||
73 | + "\nMatrix cannot be resolved." | ||
74 | + "\nMatrix cannot be resolved." | ||
75 | + "\nLinearRegression cannot be resolved." | ||
76 | + "\ncoefficients cannot be resolved"); | ||
77 | } | ||
78 | |||
79 | private double predict(final double[] parameters, final double[] featuresToPredict) { | ||
80 | double result = parameters[0]; | ||
81 | for (int i = 0; (i < featuresToPredict.length); i++) { | ||
82 | double _result = result; | ||
83 | double _get = parameters[i]; | ||
84 | double _get_1 = featuresToPredict[i]; | ||
85 | double _multiply = (_get * _get_1); | ||
86 | result = (_result + _multiply); | ||
87 | } | ||
88 | return result; | ||
89 | } | ||
90 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.java._trace new file mode 100644 index 00000000..1756f86a --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.xtendbin new file mode 100644 index 00000000..708955a4 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ConstraintCollection.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.java._trace b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.java._trace new file mode 100644 index 00000000..0cb68ca8 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.xtendbin b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.xtendbin new file mode 100644 index 00000000..63721784 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/.ViolationCheck.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ConstraintCollection.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ConstraintCollection.java new file mode 100644 index 00000000..92c69bea --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ConstraintCollection.java | |||
@@ -0,0 +1,79 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.validation; | ||
2 | |||
3 | import java.util.ArrayList; | ||
4 | import java.util.List; | ||
5 | import java.util.Map; | ||
6 | import org.eclipse.emf.common.notify.Notifier; | ||
7 | import org.eclipse.emf.common.util.URI; | ||
8 | import org.eclipse.emf.ecore.resource.Resource; | ||
9 | import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; | ||
10 | import org.eclipse.xtext.xbase.lib.InputOutput; | ||
11 | |||
12 | @SuppressWarnings("all") | ||
13 | public class ConstraintCollection { | ||
14 | private final /* ArrayList<IConstraintSpecification> */Object constraints /* Skipped initializer because of errors */; | ||
15 | |||
16 | private /* BaseGeneratedPatternGroup */Object patterns; | ||
17 | |||
18 | private List<Notifier> resources = new ArrayList<Notifier>(); | ||
19 | |||
20 | public ConstraintCollection(final /* List<IConstraintSpecification> */Object constraints, final List<String> uris, final /* BaseGeneratedPatternGroup */Object patterns) { | ||
21 | throw new Error("Unresolved compilation problems:" | ||
22 | + "\nThe field ConstraintCollection.constraints refers to the missing type IConstraintSpecification" | ||
23 | + "\nThe field ConstraintCollection.patterns refers to the missing type BaseGeneratedPatternGroup"); | ||
24 | } | ||
25 | |||
26 | public ConstraintCollection(final /* List<IConstraintSpecification> */Object constraints, final /* BaseGeneratedPatternGroup */Object patterns) { | ||
27 | throw new Error("Unresolved compilation problems:" | ||
28 | + "\nThe field ConstraintCollection.constraints refers to the missing type IConstraintSpecification" | ||
29 | + "\nThe field ConstraintCollection.patterns refers to the missing type BaseGeneratedPatternGroup"); | ||
30 | } | ||
31 | |||
32 | public boolean addModel(final Notifier n) { | ||
33 | return this.resources.add(n); | ||
34 | } | ||
35 | |||
36 | public String setURIs(final List<String> uris) { | ||
37 | String _xblockexpression = null; | ||
38 | { | ||
39 | final ResourceSetImpl resSet = new ResourceSetImpl(); | ||
40 | for (final String uri : uris) { | ||
41 | { | ||
42 | Resource resource = resSet.getResource(URI.createURI(uri), true); | ||
43 | this.resources.add(resource); | ||
44 | } | ||
45 | } | ||
46 | _xblockexpression = InputOutput.<String>println("reading model finished"); | ||
47 | } | ||
48 | return _xblockexpression; | ||
49 | } | ||
50 | |||
51 | public List<Integer> calculateViolations() { | ||
52 | throw new Error("Unresolved compilation problems:" | ||
53 | + "\nThe method or field querySpecification is undefined for the type Object" | ||
54 | + "\nThe method initEngine(Notifier) from the type ConstraintCollection refers to the missing type Object" | ||
55 | + "\nThe field ConstraintCollection.constraints refers to the missing type IConstraintSpecification" | ||
56 | + "\ngetMatcher cannot be resolved" | ||
57 | + "\ncountMatches cannot be resolved"); | ||
58 | } | ||
59 | |||
60 | public ArrayList<Map<String, Integer>> calculateViolationMaps() { | ||
61 | throw new Error("Unresolved compilation problems:" | ||
62 | + "\nThe method or field querySpecification is undefined for the type Object" | ||
63 | + "\nThe method or field querySpecification is undefined for the type Object" | ||
64 | + "\nThe method initEngine(Notifier) from the type ConstraintCollection refers to the missing type Object" | ||
65 | + "\nThe field ConstraintCollection.constraints refers to the missing type IConstraintSpecification" | ||
66 | + "\ngetMatcher cannot be resolved" | ||
67 | + "\ncountMatches cannot be resolved" | ||
68 | + "\nsimpleName cannot be resolved"); | ||
69 | } | ||
70 | |||
71 | private Object initEngine(final Notifier r) { | ||
72 | throw new Error("Unresolved compilation problems:" | ||
73 | + "\nThe method or field ViatraQueryEngine is undefined" | ||
74 | + "\nEMFScope cannot be resolved." | ||
75 | + "\nThe field ConstraintCollection.patterns refers to the missing type BaseGeneratedPatternGroup" | ||
76 | + "\non cannot be resolved" | ||
77 | + "\nprepare cannot be resolved"); | ||
78 | } | ||
79 | } | ||
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.java b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.java new file mode 100644 index 00000000..7eb3ec77 --- /dev/null +++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/validation/ViolationCheck.java | |||
@@ -0,0 +1,34 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.validation; | ||
2 | |||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain; | ||
4 | import java.util.ArrayList; | ||
5 | import java.util.Map; | ||
6 | import org.eclipse.emf.ecore.EObject; | ||
7 | |||
8 | @SuppressWarnings("all") | ||
9 | public class ViolationCheck { | ||
10 | /** | ||
11 | * Return the total number of violations | ||
12 | */ | ||
13 | public static int calculateViolationCounts(final EObject root, final Domain d) { | ||
14 | throw new Error("Unresolved compilation problems:" | ||
15 | + "\nThe method loadConstraints(String) from the type ViolationCheck refers to the missing type IConstraintSpecification" | ||
16 | + "\nThe constructor ConstraintCollection(List<IConstraintSpecification>, BaseGeneratedPatternGroup) refers to the missing type IConstraintSpecification"); | ||
17 | } | ||
18 | |||
19 | /** | ||
20 | * return a map contain the count for each type of violation | ||
21 | */ | ||
22 | public static Map<String, Integer> violationMaps(final EObject root) { | ||
23 | throw new Error("Unresolved compilation problems:" | ||
24 | + "\nThe method loadConstraints(String) from the type ViolationCheck refers to the missing type IConstraintSpecification" | ||
25 | + "\nThe constructor ConstraintCollection(List<IConstraintSpecification>, BaseGeneratedPatternGroup) refers to the missing type IConstraintSpecification"); | ||
26 | } | ||
27 | |||
28 | public static /* ArrayList<IConstraintSpecification> */Object loadConstraints(final String packageName) { | ||
29 | throw new Error("Unresolved compilation problems:" | ||
30 | + "\nIConstraintSpecification cannot be resolved to a type." | ||
31 | + "\nIConstraintSpecification cannot be resolved to a type." | ||
32 | + "\nThe method or field IConstraintSpecification is undefined"); | ||
33 | } | ||
34 | } | ||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.java._trace new file mode 100644 index 00000000..5ab4c0fb --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcC.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace new file mode 100644 index 00000000..605b2480 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcEDA.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace new file mode 100644 index 00000000..16ded94b --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMPC.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace new file mode 100644 index 00000000..bd23cb35 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace new file mode 100644 index 00000000..71d80e38 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcMetric2.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace new file mode 100644 index 00000000..b423786d --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNA.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace new file mode 100644 index 00000000..cce23aec --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDA.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace new file mode 100644 index 00000000..e46f9600 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcNDC.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace new file mode 100644 index 00000000..9ce2edb2 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRCNT.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace new file mode 100644 index 00000000..cdfcef6e --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRNUM.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQROSZ.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQROSZ.java._trace new file mode 100644 index 00000000..787e63c7 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQROSZ.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace new file mode 100644 index 00000000..0c8cc5d0 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculations/.CalcSQRTOT.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin new file mode 100644 index 00000000..e826d04b --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.xtendbin | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CalculationsNA.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CalculationsNA.java._trace new file mode 100644 index 00000000..76aa59b0 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CalculationsNA.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace new file mode 100644 index 00000000..edd88562 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.FixModelURIs.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace new file mode 100644 index 00000000..fc92b1d3 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.MetricsCalculationUsingShapes.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace new file mode 100644 index 00000000..306c1361 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.Util.java._trace | |||
Binary files differ | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore new file mode 100644 index 00000000..b5da4aad --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/bin/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.gitignore | |||
@@ -0,0 +1 @@ | |||
/.CSERposterSample.java._trace | |||
diff --git a/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace new file mode 100644 index 00000000..08d35ce0 --- /dev/null +++ b/Metrics/ca.mcgill.ecse.dslreasoner.realistic.metrics/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/examples/.CSERposterSample.java._trace | |||
Binary files differ | |||