From 97de02c2e8b1c91e8c818adcc090deaf4de041ae Mon Sep 17 00:00:00 2001
From: Giovanni La Mura <giovanni.lamura@inaf.it>
Date: Fri, 15 Dec 2023 12:06:57 +0100
Subject: [PATCH] Implement noise detection logic on ratios

---
 src/scripts/pycompare.py | 32 ++++++++++++++++++++------------
 1 file changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/scripts/pycompare.py b/src/scripts/pycompare.py
index bc22a698..d919a82a 100755
--- a/src/scripts/pycompare.py
+++ b/src/scripts/pycompare.py
@@ -118,7 +118,7 @@ def compare_files(config):
             )
             l_file.write("  </header>\n")
             l_file.write("  <body>\n")
-            l_file.write("    <div>Numeric noise is marked <span style=\"font-weight: bold; color: rgb(0,255,0)\">"
+            l_file.write("    <div>Numeric noise is marked <span style=\"font-weight: bold; color: rgb(0,185,0)\">"
                          + "GREEN</span>, warnings are marked <span style=\"font-weight: bold; color: rgb(0,0,255)\">"
                          + "BLUE</span> and errors are marked <span style=\"font-weight: bold; color: rgb(255,0,0)\">"
                          + "RED</span>.</div>\n")
@@ -183,7 +183,6 @@ def compare_lines(f_line, c_line, config, line_num=0, num_len=1, log_file=None):
             c_groups.append(ci.group())
 
         if (len(f_groups) == len(c_groups)):
-            #INDENT    
             severities = mismatch_severities(f_groups, c_groups, config)
             if log_file is not None:
                 num_format = "    <div><pre><code>{0:0%dd}"%num_len
@@ -198,7 +197,7 @@ def compare_lines(f_line, c_line, config, line_num=0, num_len=1, log_file=None):
                         log_line = log_line + c_groups[si] + c_line[c_ends[si]:c_starts[si + 1]]
                     elif (severities[si] == 1):
                         log_line = (
-                            log_line + "</code><span style=\"font-weight: bold; color: rgb(0,255,0)\"><code>"
+                            log_line + "</code><span style=\"font-weight: bold; color: rgb(0,185,0)\"><code>"
                             + c_groups[si] + "</code></span><code>" + c_line[c_ends[si]:c_starts[si + 1]]
                         )
                     elif (severities[si] == 2):
@@ -211,10 +210,13 @@ def compare_lines(f_line, c_line, config, line_num=0, num_len=1, log_file=None):
                             log_line + "</code><span style=\"font-weight: bold; color: rgb(255,0,0)\"><code>"
                             + c_groups[si] + "</code></span><code>" + c_line[c_ends[si]:c_starts[si + 1]]
                         )
-            if (len(severities) > 1):
+            if (len(severities) > 0):
+                # Single errror test modification
                 if (severities[-1] == 1): noisy += 1
                 elif (severities[-1] == 2): warnings += 1
-                elif (severities[-1] == 3): errors += 1
+                elif (severities[-1] == 3):
+                    split_c_line = c_line.split('/')
+                    if (len(split_c_line) != 2): errors += 1
             if log_file is not None:
                 if (len(severities) > 0):
                     if (severities[-1] == 0):
@@ -223,7 +225,7 @@ def compare_lines(f_line, c_line, config, line_num=0, num_len=1, log_file=None):
                         )
                     elif (severities[-1] == 1):
                         log_line = (
-                            log_line + "</code><span style=\"font-weight: bold; color: rgb(0,255,0)\"><code>"
+                            log_line + "</code><span style=\"font-weight: bold; color: rgb(0,185,0)\"><code>"
                             + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
                         )
                     elif (severities[-1] == 2):
@@ -232,13 +234,19 @@ def compare_lines(f_line, c_line, config, line_num=0, num_len=1, log_file=None):
                             + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
                         )
                     elif (severities[-1] == 3):
-                        log_line = (
-                            log_line + "</code><span style=\"font-weight: bold; color: rgb(255,0,0)\"><code>"
-                            + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
-                        )
+                        split_c_line = c_line.split('/')
+                        if (len(split_c_line) == 2):
+                            log_line = (
+                                log_line + "</code><span style=\"font-weight: bold; color: rgb(0,185,0)\"><code>"
+                                + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
+                            )
+                        else:
+                            log_line = (
+                                log_line + "</code><span style=\"font-weight: bold; color: rgb(255,0,0)\"><code>"
+                                + c_groups[-1] + "</code></span><code>" + c_line[c_ends[-1]:len(c_line) - 2]
+                            )
                 log_file.write(log_line + "</code></pre></div>\n")
-            #END INDENT
-        else:
+        else: # The two lines contain a different number of numeric values
             if (log_file is not None):
                 num_format = "    <div><pre><code>{0:0%dd}"%num_len
                 log_line = (num_format + ": ").format(line_num)
-- 
GitLab