Skip to content

Commit f2106e6

Browse files
dappham-CODRAThomasMalletCodra
authored andcommitted
Arch update
1 parent 0fe8a02 commit f2106e6

1 file changed

Lines changed: 20 additions & 61 deletions

File tree

datalab/gui/docks.py

Lines changed: 20 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
from typing import TYPE_CHECKING
2525

2626
import numpy as np
27-
import scipy.integrate as spt
2827
from guidata.configtools import get_icon, get_image_file_path
2928
from guidata.qthelpers import create_action, is_dark_theme
3029
from guidata.widgets.dockable import DockableWidget
@@ -68,69 +67,29 @@ class CurveStatsToolFunctions:
6867
"""Statistical functions for `CurveStatsTool` and `YRangeCursorTool`"""
6968

7069
@classmethod
71-
def set_labelfuncs(cls, statstool: CurveStatsTool) -> None:
70+
def set_labelfuncs(cls, statstool: CurveStatsTool | YRangeCursorTool) -> None:
7271
"""Set label functions for the statistics tool"""
7372
if isinstance(statstool, CurveStatsTool):
74-
labelfuncs = (
75-
("%g < x < %g", lambda *args: cls.nan_min_max(args[0])),
76-
("%g < y < %g", lambda *args: cls.nan_min_max(args[1])),
77-
("∆x=%g", lambda *args: cls.nan_delta(args[0])),
78-
("∆y=%g", lambda *args: cls.nan_delta(args[1])),
79-
("<y>=%g", lambda *args: cls.nan_mean(args[1])),
80-
("σ(y)=%g", lambda *args: cls.nan_std(args[1])),
81-
("∑(y)=%g", lambda *args: spt.trapezoid(args[1])),
82-
("∫ydx=%g<br>", lambda *args: spt.trapezoid(args[1], args[0])),
83-
("FWHM=%s", cls.fwhm_info),
84-
("∆x<sub>RISE 10-90</sub>=%s", cls.rise_time_info),
85-
(
86-
"∆x<sub>RISE 20-80</sub>=%s",
87-
lambda x, y: cls.rise_time_info(x, y, 0.2, 0.8),
88-
),
89-
("∆x<sub>FALL 90-10</sub>=%s", cls.fall_time_info),
90-
(
91-
"∆x<sub>FALL 80-20</sub>=%s",
92-
lambda x, y: cls.fall_time_info(x, y, 0.8, 0.2),
93-
),
73+
labelfuncs = list(CurveStatsTool.LABELFUNCS)
74+
labelfuncs[-1] = (labelfuncs[-1][0] + "<br>", labelfuncs[-1][1])
75+
labelfuncs.extend(
76+
[
77+
("FWHM=%s", cls.fwhm_info),
78+
("∆x<sub>RISE 10-90</sub>=%s", cls.rise_time_info),
79+
(
80+
"∆x<sub>RISE 20-80</sub>=%s",
81+
lambda x, y: cls.rise_time_info(x, y, 0.2, 0.8),
82+
),
83+
("∆x<sub>FALL 90-10</sub>=%s", cls.fall_time_info),
84+
(
85+
"∆x<sub>FALL 80-20</sub>=%s",
86+
lambda x, y: cls.fall_time_info(x, y, 0.8, 0.2),
87+
),
88+
]
9489
)
95-
else: # YRangeCursorTool
96-
labelfuncs = (
97-
("%g &lt; y &lt; %g", lambda ymin, ymax: (ymin, ymax)),
98-
("∆y=%g", lambda ymin, ymax: ymax - ymin),
99-
)
100-
statstool.set_labelfuncs(labelfuncs)
101-
102-
@staticmethod
103-
def nan_min_max(arr: np.ndarray) -> tuple[float, float]:
104-
"""Return min/max tuple"""
105-
with warnings.catch_warnings():
106-
warnings.simplefilter("ignore", RuntimeWarning)
107-
min_val = np.nanmin(arr)
108-
max_val = np.nanmax(arr)
109-
return (min_val, max_val)
110-
111-
@staticmethod
112-
def nan_delta(arr: np.ndarray) -> float:
113-
"""Return delta value, ignoring NaNs"""
114-
with warnings.catch_warnings():
115-
warnings.simplefilter("ignore", RuntimeWarning)
116-
delta_val = np.nanmax(arr) - np.nanmin(arr)
117-
return delta_val
118-
119-
@staticmethod
120-
def nan_mean(arr: np.ndarray) -> float:
121-
"""Return mean value, ignoring NaNs"""
122-
with warnings.catch_warnings():
123-
warnings.simplefilter("ignore", RuntimeWarning)
124-
mean_val = np.nanmean(arr)
125-
return mean_val
126-
127-
@staticmethod
128-
def nan_std(arr: np.ndarray) -> float:
129-
"""Return standard deviation, ignoring NaNs"""
130-
with warnings.catch_warnings():
131-
warnings.simplefilter("ignore", RuntimeWarning)
132-
std_val = np.nanstd(arr)
133-
return std_val
90+
statstool.set_labelfuncs(tuple(labelfuncs))
91+
else: # YRangeCursorTool - use PlotPy's defaults as-is
92+
statstool.set_labelfuncs(YRangeCursorTool.LABELFUNCS)
13493

13594
@staticmethod
13695
def fwhm_info(x, y):

0 commit comments

Comments
 (0)