From 98e0479f26ce0bc54016c4fba8e74e3223203b9a Mon Sep 17 00:00:00 2001 From: 20001LastOrder Date: Wed, 5 Jun 2019 11:38:23 -0400 Subject: plotting for metrics during generation --- .../metrics/calculator/distance/KSDistance.xtend | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend (limited to 'Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/KSDistance.xtend') 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 @@ +package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance + +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain +import java.util.List +import org.apache.commons.math3.stat.inference.KolmogorovSmirnovTest +import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.RepMetricsReader + +class KSDistance { + var static ksTester = new KolmogorovSmirnovTest(); + var double[] mpcSamples; + var double[] naSamples; + var double[] outDegreeSamples; + + new(Domain d){ + var metrics = RepMetricsReader.read(d); + mpcSamples = metrics.mpcSamples; + naSamples = metrics.naSamples.stream.mapToDouble([it]).toArray(); + outDegreeSamples = metrics.outDegreeSamples.stream.mapToDouble([it]).toArray(); + } + + def double mpcDistance(List samples){ + // map list to array + var arr = samples.stream.mapToDouble([it]).toArray(); + + //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1 + if(arr.size < 2) return 1; + return ksTester.kolmogorovSmirnovStatistic(mpcSamples, arr); + } + + def double naDistance(List samples){ + // map list to array + var arr = samples.stream.mapToDouble([it]).toArray(); + + //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1 + if(arr.size < 2) return 1; + return ksTester.kolmogorovSmirnovStatistic(naSamples as double[], arr); + } + + def double outDegreeDistance(List samples){ + // map list to array + var arr = samples.stream.mapToDouble([it]).toArray(); + + //if the size of array is smaller than 2, ks distance cannot be performed, simply return 1 + if(arr.size < 2) return 1; + return ksTester.kolmogorovSmirnovStatistic(outDegreeSamples, arr); + } +} \ No newline at end of file -- cgit v1.2.3-54-g00ecf