From 3c15ae4abd778a8ca4acdce32a8c44a87d43a036 Mon Sep 17 00:00:00 2001
From: Vojtech Moravec <vojtech.moravec.st@vsb.cz>
Date: Thu, 26 Nov 2020 11:00:02 +0100
Subject: [PATCH] Add commented out smape metric.

---
 .../functions/MeasurePlaneErrorFunction.java  | 13 ++++++++--
 .../it4i/qcmp/cli/functions/PlaneError.java   | 25 -------------------
 2 files changed, 11 insertions(+), 27 deletions(-)
 delete mode 100644 src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java

diff --git a/src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java b/src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java
index 9c6772a..8b66fb9 100644
--- a/src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java
+++ b/src/main/java/cz/it4i/qcmp/cli/functions/MeasurePlaneErrorFunction.java
@@ -123,17 +123,26 @@ public class MeasurePlaneErrorFunction extends CustomFunctionBase {
                                        final OutputStreamWriter reportWriter) throws IOException {
 
         final int[][] testData = loadPlanes(testFile, ReferenceFileDimensions);
-
+        final int pixelCount = ReferenceFileDimensions.getNumberOfElementsInDimension(2);
         reportWriter.write("=========================================\n");
         reportWriter.write(testFile);
         reportWriter.write('\n');
         reportWriter.write("=========================================\n");
-        reportWriter.write("PlaneIndex;ErrorSum;MeanError\n");
+        reportWriter.write("PlaneIndex;ErrorSum;MeanError\n"); //;SMAPE
 
         final int planePixelCount = ReferenceFileDimensions.getNumberOfElementsInDimension(2);
         final int[] diffData = new int[planePixelCount];
 
         for (int plane = 0; plane < ReferenceFileDimensions.getPlaneCount(); plane++) {
+            // NOTE(Moravec): SMAPE metric. https://en.wikipedia.org/wiki/Symmetric_mean_absolute_percentage_error
+            // double numerator = 0;
+            // double denominator = 0;
+            // for (int i = 0; i < pixelCount; i++) {
+            //     numerator += Math.abs((double) testData[plane][i] - (double) referenceData[plane][i]);
+            //     denominator += ((double) referenceData[plane][i] + (double) testData[plane][i]);
+            // }
+            // assert (denominator != 0) : "SMAPE denominator can't be zero.";
+            // final double SMAPE = numerator / denominator;
             Utils.differenceToArray(referenceData[plane], testData[plane], diffData);
             Utils.applyAbsFunction(diffData);
 
diff --git a/src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java b/src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java
deleted file mode 100644
index 45031c9..0000000
--- a/src/main/java/cz/it4i/qcmp/cli/functions/PlaneError.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package cz.it4i.qcmp.cli.functions;
-
-public class PlaneError {
-    private final int planeIndex;
-    private final double absoluteError;
-    private final double meanAbsoluteError;
-
-    public PlaneError(final int planeIndex, final double absoluteError, final double meanAbsoluteError) {
-        this.planeIndex = planeIndex;
-        this.absoluteError = absoluteError;
-        this.meanAbsoluteError = meanAbsoluteError;
-    }
-
-    public int getPlaneIndex() {
-        return planeIndex;
-    }
-
-    public double getAbsoluteError() {
-        return absoluteError;
-    }
-
-    public double getMeanAbsoluteError() {
-        return meanAbsoluteError;
-    }
-}
-- 
GitLab