diff options
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.xtend | 18 |
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 @@ | |||
1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance | 1 | package ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.distance |
2 | 2 | ||
3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.app.Domain | 3 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.metrics.MetricSampleGroup |
4 | import ca.mcgill.ecse.dslreasoner.realistic.metrics.calculator.io.RepMetricsReader | ||
5 | import com.google.common.collect.Sets | 4 | import com.google.common.collect.Sets |
6 | import java.text.DecimalFormat | 5 | import java.text.DecimalFormat |
7 | import java.util.HashMap | 6 | import 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 |