aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend')
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend47
1 files changed, 47 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
new file mode 100644
index 00000000..1fb21529
--- /dev/null
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend
@@ -0,0 +1,47 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance
2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain
4import java.util.List
5import org.apache.commons.math3.stat.inference.KolmogorovSmirnovTest
6import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.RepMetricsReader
7
8class KSDistance {
9 var static ksTester = new KolmogorovSmirnovTest();
10 var double[] mpcSamples;
11 var double[] naSamples;
12 var double[] outDegreeSamples;
13
14 new(Domain d){
15 var metrics = RepMetricsReader.read(d);
16 mpcSamples = metrics.mpcSamples;
17 naSamples = metrics.naSamples.stream.mapToDouble([it]).toArray();
18 outDegreeSamples = metrics.outDegreeSamples.stream.mapToDouble([it]).toArray();
19 }
20
21 def double mpcDistance(List<Double> samples){
22 // map list to array
23 var arr = samples.stream.mapToDouble([it]).toArray();
24
25 //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1
26 if(arr.size < 2) return 1;
27 return ksTester.kolmogorovSmirnovStatistic(mpcSamples, arr);
28 }
29
30 def double naDistance(List<Double> samples){
31 // map list to array
32 var arr = samples.stream.mapToDouble([it]).toArray();
33
34 //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1
35 if(arr.size < 2) return 1;
36 return ksTester.kolmogorovSmirnovStatistic(naSamples as double[], arr);
37 }
38
39 def double outDegreeDistance(List<Double> samples){
40 // map list to array
41 var arr = samples.stream.mapToDouble([it]).toArray();
42
43 //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1
44 if(arr.size < 2) return 1;
45 return ksTester.kolmogorovSmirnovStatistic(outDegreeSamples, arr);
46 }
47} \ No newline at end of file