From 0b64a496e42e56c4dc60855f6b93dfc079272ffd Mon Sep 17 00:00:00 2001
From: Lan Dam <ldam@passcal.nmt.edu>
Date: Fri, 18 Aug 2023 15:26:27 -0600
Subject: [PATCH] fixing displayed extreme values for channels

---
 sohstationviewer/database/soh.db              | Bin 61440 -> 61440 bytes
 sohstationviewer/model/reftek/log_info.py     |  10 +++++-----
 sohstationviewer/view/main_window.py          |   1 +
 .../view/plotting/plotting_widget/plotting.py |   2 +-
 .../plotting/plotting_widget/plotting_axes.py |  16 ++++++++++++----
 tests/test_database/test_extract_data.py      |   5 +++--
 6 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/sohstationviewer/database/soh.db b/sohstationviewer/database/soh.db
index c3c01eeeb559a14690a70d0fce1428347a54c664..520d7456237a43f37b1bbc4502ad632c09a6e6d4 100755
GIT binary patch
delta 730
zcmXX@O=uHA7@gfslby85q^2pgu}Ochq19w#WB+on37e2M+5UvsVxdsiWG%r>1KEu=
zpwOFw78<4(57yE{JruNd5j}W_snB{8Jr*J0K?;hBx1OBUz`&dDoA<u=K4!JXtk#%y
zC$(KZ$2V*PU!wdn^JJ`}X$|zTJ7)L|eMXPb3YtZJWMFr!AFUgfBzA?`X>+?449To%
zgf)iUPA3j=EqLq5g#8>uLNInW5{%V>)@tJ;6l_}aoi%!O>X^6PDg@^VWxfu0BK{EX
zC7|{tzDF6XVbG1sLWMowXdHF}K;hqq4zrwHmXt_dRcL%?@&j#M!Ti)^*18Wm0068`
z!5dR9BYFc|Zh(LK+Drq`IH>#m^0^#BkSBh89q4`&Ne%EA*Ngqr4|>Q1CozJ&oKN5C
zOcq5stCs#7UZ9O0GK9jF=~fKmwnlUaXcPb_fE2BZlm^mRD2LlZS11GUis@pZAT6tr
zY(Yw^`9g`CRiuK#-ONgIhKuCW#T<E6xY)#1E;$p8CKfZIDsss{z>k$hq3MP=n!A)P
z4U<Hp<?`VEb%Wo`SWW?YWwlvOiQ#ukYYWrha5|tWDXPFnFA988mut4oU5aAy+o$7Z
z2Gs!igHBLQYu@^VAj>!?oz7?{FWPKIdKyepC2XpsXlfTPR0eG9d*%_tGc0{fKc`Cc
zJ-k^thW<FTd-?!u#`mk8XL8{gX-QOy%1}SFJHvXra?}fRVV*1`77O_6JK4Zwfe)vu
z{g6vQdzV)yU8}n3qJp1Qs|NNp=)t)Icef`B?RF1<4&a;<!h)#Arc$X+SyZ!XF(Z+)
vq&+`?4MS)hSad7$J#$e{1lk>X9K8^tvUK~ON+K5`%rB>N^?=%sBfIA>JGRvr

delta 558
zcmXX>O=#0#0R8gQG}&yvN-a(^*Uni>BW<#7I_YIAX`!qAakeWv2(@%MRI_Fz4c$O=
zM-h~TZx;{F-aH7CEr=cjYbUH8#G457P}o6wP!aE9WWBxj;Qej%h>aex$ze<8sN`4z
zkutZt{B-u*&<F_8JqPn0zJX6*6D~p#lI&M@kKJOMXl(8*e&Uf8n^S1B6|;J&tC-W3
z1JO_zpuhYjlukdSB{6p6?qp1|zNL3D(tm~uBQw(``A`6$``HP!mi>ssFG$Kw)7&sM
z0|21W?*lK|%8gMM80xYQpkEO`#nV*WhO>efwYp9u3PTj{97q?Dn12u$#i^hV07g>O
z>K*@rQBi7*b){C9^@Q5c?Ofi+0rYeJyo+$z42L>^2T-@h-7ZMNcc5sR0c_QbbC_br
zPa(aWiL2GgW^?U|F@upHT&NnFCf6H@nkH8ps<tkaRK-}4bzw1AoG)gQ389crm1=Uc
zyj*EigoUXoaqku>(m3k|@D=N}n@HAjZ@<7W2EBcjqH)*<@DJ=;CtIJPd7ZWTFGt)I
z+yq(d2szsYoPLdNwxe$1F;OEVg2oT=9sC}iN89Z~vvnICy;sQaHO7Mq9iG=CX~q)_
z0R{lBl#CYSx~^){@#JIT9~?l>I~{T&Y5P|8eZz(xNH8Ane<S+TJ#FpmGY)o|XFObd
VkR_qj593bBzFsjj>qplU{0Gi-sBZuO

diff --git a/sohstationviewer/model/reftek/log_info.py b/sohstationviewer/model/reftek/log_info.py
index 2ce79fef5..54756cdfe 100644
--- a/sohstationviewer/model/reftek/log_info.py
+++ b/sohstationviewer/model/reftek/log_info.py
@@ -205,10 +205,10 @@ class LogInfo():
             return False
         return epoch, disk, val
 
-    def read_dsp_clock_diff(self, line: str
+    def read_dps_clock_diff(self, line: str
                             ) -> Union[bool, Tuple[float, float]]:
         """
-        Read DSP clock difference
+        Read DPS clock difference
         :param line: str - a line of evt message
         :return epoch: float - time when info is recorded
         :return total: float - total difference time in milliseconds
@@ -416,11 +416,11 @@ class LogInfo():
                 if epoch:
                     self.add_chan_info('Jerks/DSP Sets', epoch, 0, idx)
 
-            elif "DSP CLOCK DIFFERENCE" in line:
-                ret = self.read_dsp_clock_diff(line)
+            elif "DPS clock diff" in line:
+                ret = self.read_dps_clock_diff()
                 if ret:
                     epoch, total = ret
-                    self.add_chan_info('DSP Clock Diff', epoch, total, idx)
+                    self.add_chan_info('DPS Clock Diff', epoch, total, idx)
 
             elif "ACQUISITION STARTED" in line:
                 epoch = self.simple_read(line)[1]
diff --git a/sohstationviewer/view/main_window.py b/sohstationviewer/view/main_window.py
index c957bb2e0..2e47c78a8 100755
--- a/sohstationviewer/view/main_window.py
+++ b/sohstationviewer/view/main_window.py
@@ -772,6 +772,7 @@ class MainWindow(QtWidgets.QMainWindow, UIMainWindow):
         Plot using data from self.data_object with the current options set
             from GUI
         """
+        self.clear_plots()
         if self.has_problem:
             return
         self.is_plotting_soh = True
diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting.py b/sohstationviewer/view/plotting/plotting_widget/plotting.py
index 9e28f8d14..1a9268988 100644
--- a/sohstationviewer/view/plotting/plotting_widget/plotting.py
+++ b/sohstationviewer/view/plotting/plotting_widget/plotting.py
@@ -100,7 +100,7 @@ class Plotting:
                 x += points
 
             ax.plot(points, len(points) * [0], linestyle="",
-                    marker='s', markersize=0.5,
+                    marker='s', markersize=2,
                     zorder=constants.Z_ORDER['DOT'],
                     color=clr[c], picker=True, pickradius=3)
             prev_val = val
diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting_axes.py b/sohstationviewer/view/plotting/plotting_widget/plotting_axes.py
index 50d8f93fe..9becc2273 100644
--- a/sohstationviewer/view/plotting/plotting_widget/plotting_axes.py
+++ b/sohstationviewer/view/plotting/plotting_widget/plotting_axes.py
@@ -292,9 +292,9 @@ class PlottingAxes:
             ax.unit_bw = get_unit_bitweight(
                 chan_db_info, self.main_window.bit_weight_opt
             )
-            self.set_axes_ylim(ax, min_y, max_y)
+            self.set_axes_ylim(ax, min_y, max_y, chan_db_info)
 
-    def set_axes_ylim(self, ax, min_y, max_y):
+    def set_axes_ylim(self, ax, org_min_y, org_max_y, chan_db_info):
         """
         Limit y range in min_y, max_y.
         Set y tick labels at min_y, max_y
@@ -302,8 +302,16 @@ class PlottingAxes:
         :param min_y: float - minimum of y values
         :param max_y: float - maximum of y values
         """
-        min_y = round(min_y, 2)
-        max_y = round(max_y, 2)
+        min_y = round(org_min_y, 7)
+        max_y = round(org_max_y, 7)
+        if chan_db_info['fixPoint'] == 0 and org_max_y > org_min_y:
+            # if fixPoint=0, the format uses the save value created
+            # => try to round to to the point that user can see the differences
+            for dec in range(2, 8, 1):
+                min_y = round(org_min_y, dec)
+                max_y = round(org_max_y, dec)
+                if max_y > min_y:
+                    break
         if max_y > min_y:
             # There are different values for y => show yticks for min, max
             # separately
diff --git a/tests/test_database/test_extract_data.py b/tests/test_database/test_extract_data.py
index 6f8abbb0f..a8906f35a 100644
--- a/tests/test_database/test_extract_data.py
+++ b/tests/test_database/test_extract_data.py
@@ -109,8 +109,9 @@ class TestExtractData(unittest.TestCase):
                            'label': 'LCE-PhaseError',
                            'fixPoint': 0,
                            'valueColors': 'L:W|D:Y'}
-        self.assertDictEqual(get_chan_plot_info('LCE', 'Unknown'),
-                             expected_result)
+        self.assertDictEqual(
+            get_chan_plot_info('LCE', 'Unknown'),
+            expected_result)
 
     def test_get_chan_plot_info_bad_channel_or_data_type(self):
         """
-- 
GitLab