From d5bb62ce7e2cb84603618a3a4241355b875ef770 Mon Sep 17 00:00:00 2001
From: Giovanni La Mura <giovanni.lamura@inaf.it>
Date: Tue, 24 Sep 2024 15:30:14 +0200
Subject: [PATCH] Use noise hiding as default in reports

---
 src/scripts/pycompare.py | 28 +++++++++++++++++-----------
 1 file changed, 17 insertions(+), 11 deletions(-)

diff --git a/src/scripts/pycompare.py b/src/scripts/pycompare.py
index ec8a5bec..72d52960 100755
--- a/src/scripts/pycompare.py
+++ b/src/scripts/pycompare.py
@@ -343,9 +343,9 @@ def compare_lines(f_line, c_line, config, line_num=0, num_len=4, log_file=None):
                                 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]
                             )
-                if ((not config['hide_noise']) or warnings > 0 or errors > 0):
-                    log_file.write(log_line + "</code></pre></div>\n")
-                    log_file.write(ref_line)
+                    if ((not config['hide_noise'] and noisy > 0) or warnings > 0 or errors > 0):
+                        log_file.write(log_line + "</code></pre></div>\n")
+                        log_file.write(ref_line)
         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
@@ -429,7 +429,10 @@ def mismatch_severities(str_f_values, str_c_values, config):
                         fractional = scale * (f_values[i] - c_values[i]) / f_values[i]
                         if (fractional < 0.0): fractional *= -1.0
                         if (fractional <= config['warning_threshold']):
-                            result[i] = 2
+                            if (log_f_value > config['data_order']):
+                                result[i] = 2
+                            else:
+                                result[i] = 1
                         else:
                             if (log_f_value > config['data_order']):
                                 result[i] = 3
@@ -445,7 +448,10 @@ def mismatch_severities(str_f_values, str_c_values, config):
                         fractional = scale * (c_values[i] - f_values[i]) / c_values[i]
                         if (fractional < 0.0): fractional *= -1.0
                         if (fractional <= config['warning_threshold']):
-                            result[i] = 2
+                            if (log_c_value > config['data_order']):
+                                result[i] = 2
+                            else:
+                                result[i] = 1
                         else:
                             if (log_c_value > config['data_order']):
                                 result[i] = 3
@@ -473,7 +479,7 @@ def parse_arguments():
         'fortran_file_name': '',
         'full_log': False,
         'help_mode': False,
-        'hide_noise': False,
+        'hide_noise': True,
         'html_output': 'pycompare.html',
         'linewise': True,
         'log_html': False,
@@ -499,14 +505,10 @@ def parse_arguments():
             config['data_order'] = float(split_arg[1])
         elif (arg.startswith("--full")):
             config['full_log'] = True
-        elif (arg.startswith("--hide-noise")):
-            config['hide_noise'] = True
         elif (arg.startswith("--html")):
             config['log_html'] = True
             if (len(split_arg) == 2):
                 config['html_output'] = split_arg[1]
-        elif (arg.startswith("--warn")):
-            config['warning_threshold'] = float(split_arg[1])
         elif (arg.startswith("--help")):
             config['help_mode'] = True
         elif (arg.startswith("--linewise")):
@@ -515,6 +517,10 @@ def parse_arguments():
             config['say_progress'] = False
         elif (arg.startswith("--quick")):
             config['check_all'] = False
+        elif (arg.startswith("--show-noise")):
+            config['hide_noise'] = False
+        elif (arg.startswith("--warn")):
+            config['warning_threshold'] = float(split_arg[1])
         else:
             raise Exception("Unrecognized argument \'{0:s}\'".format(arg))
         arg_index += 1
@@ -535,11 +541,11 @@ def print_help():
     print("--data-order=ORDER        Consider data only down to specified order (default order is -99).")
     print("--full                    Print all lines to log file (default prints only mismatches).")
     print("--help                    Print this help and exit.")
-    print("--hide-noise              Hide noise in reports (default is to show it).")
     print("--html[=OPT_OUTPUT_NAME]  Enable logging to HTML file (default logs to \"pycompare.html\").")
     print("--linewise                Load only one line at a time. Useful to compare big files (True by default).")
     print("--no-progress             Disable progress logging.")
     print("--quick                   Stop on first mismatch (default is to perform a full check).")
+    print("--show-noise              Show noise in reports (default is to hide it).")
     print("--warn                    Set a fractional threshold for numeric warning (default = 0.005).")
     print("                                            ")
 
-- 
GitLab