aboutsummaryrefslogtreecommitdiffstats
path: root/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.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/JSDistance.xtend')
-rw-r--r--Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.xtend18
1 files changed, 11 insertions, 7 deletions
diff --git a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.xtend b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.xtend
index df65b81f..4a0a0dc3 100644
--- a/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.xtend
+++ b/Metrics/Metrics-Calculation/ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator/src/ca/mcgill/ecse/dslreasoner/realistic/metrics/calculator/distance/JSDistance.xtend
@@ -1,7 +1,6 @@
1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance 1package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance
2 2
3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain 3import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup
4import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.RepMetricsReader
5import com.google.common.collect.Sets 4import com.google.common.collect.Sets
6import java.text.DecimalFormat 5import java.text.DecimalFormat
7import java.util.HashMap 6import java.util.HashMap
@@ -11,13 +10,13 @@ class JSDistance extends CostDistance {
11 var HashMap<String, Double> mpcPMF; 10 var HashMap<String, Double> mpcPMF;
12 var HashMap<String, Double> naPMF; 11 var HashMap<String, Double> naPMF;
13 var HashMap<String, Double> outDegreePMF; 12 var HashMap<String, Double> outDegreePMF;
13 var HashMap<String, Double> nodeTypesPMF;
14 var DecimalFormat formatter; 14 var DecimalFormat formatter;
15 15
16 new(Domain d){ 16 new(MetricSampleGroup g){
17 var metrics = RepMetricsReader.read(d); 17 var mpcSamples = g.mpcSamples;
18 var mpcSamples = metrics.mpcSamples; 18 var naSamples = g.naSamples.stream.mapToDouble([it]).toArray();
19 var naSamples = metrics.naSamples.stream.mapToDouble([it]).toArray(); 19 var outDegreeSamples = g.outDegreeSamples.stream.mapToDouble([it]).toArray();
20 var outDegreeSamples = metrics.outDegreeSamples.stream.mapToDouble([it]).toArray();
21 20
22 //needs to format the number to string avoid precision issue 21 //needs to format the number to string avoid precision issue
23 formatter = new DecimalFormat("#0.00000"); 22 formatter = new DecimalFormat("#0.00000");
@@ -25,6 +24,7 @@ class JSDistance extends CostDistance {
25 mpcPMF = pmfFromSamples(mpcSamples, formatter); 24 mpcPMF = pmfFromSamples(mpcSamples, formatter);
26 naPMF = pmfFromSamples(naSamples, formatter); 25 naPMF = pmfFromSamples(naSamples, formatter);
27 outDegreePMF = pmfFromSamples(outDegreeSamples, formatter); 26 outDegreePMF = pmfFromSamples(outDegreeSamples, formatter);
27 nodeTypesPMF = g.nodeTypeSamples;
28 } 28 }
29 29
30 def private combinePMF(HashMap<String, Double> pmf1, HashMap<String, Double> pmf2){ 30 def private combinePMF(HashMap<String, Double> pmf1, HashMap<String, Double> pmf2){
@@ -81,4 +81,8 @@ class JSDistance extends CostDistance {
81 if(map.size < 2) return 1; 81 if(map.size < 2) return 1;
82 return jsDivergence(map, outDegreePMF); 82 return jsDivergence(map, outDegreePMF);
83 } 83 }
84
85 def nodeTypeDistance(HashMap<String, Double> samples){
86 return klDivergence(samples, nodeTypesPMF);
87 }
84} \ No newline at end of file 88} \ No newline at end of file