diff options
Diffstat (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/xtend-gen/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/metrics/MultiplexParticipationCoefficientMetric.java')
1 files changed, 59 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/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 | } | ||