13
13
14
14
class ComparatorWidget (QWidget ):
15
15
"""Comparator Widget"""
16
- def __init__ (self , parent = None , bg_gradient = 'red-white-blue' ):
16
+ def __init__ (self , parent = None , bg_gradient = 'red-white-blue' , rtol = 0 , atol = 0 , nans_equal = True , ** kwargs ):
17
17
QWidget .__init__ (self , parent )
18
18
19
19
layout = QVBoxLayout ()
@@ -62,6 +62,17 @@ def __init__(self, parent=None, bg_gradient='red-white-blue'):
62
62
63
63
self .arraywidget .btn_layout .addLayout (tolerance_layout )
64
64
65
+ if rtol > 0 and atol > 0 :
66
+ raise ValueError ("Arguments 'rtol' and 'atol' cannot be used together." )
67
+ if rtol > 0 :
68
+ self .tolerance_combobox .setCurrentText ("relative" )
69
+ self .tolerance_line_edit .setText (str (rtol ))
70
+ if atol > 0 :
71
+ self .tolerance_combobox .setCurrentText ("absolute" )
72
+ self .tolerance_line_edit .setText (str (atol ))
73
+
74
+ self .nans_equal = nans_equal
75
+
65
76
# add local arraywidget to layout
66
77
self .arraywidget .btn_layout .addStretch ()
67
78
layout .addWidget (self .arraywidget )
@@ -104,7 +115,7 @@ def update_isequal(self):
104
115
tol_str = self .tolerance_line_edit .text ()
105
116
tol = ast .literal_eval (tol_str ) if tol_str else 0
106
117
atol , rtol = (tol , 0 ) if self .tolerance_combobox .currentText () == "absolute" else (0 , tol )
107
- self .isequal = self .array .eq (self .array0 , rtol = rtol , atol = atol , nans_equal = True )
118
+ self .isequal = self .array .eq (self .array0 , rtol = rtol , atol = atol , nans_equal = self . nans_equal )
108
119
except TypeError :
109
120
self .isequal = self .array == self .array0
110
121
@@ -171,16 +182,19 @@ def _setup_and_check(self, widget, data, title, readonly, **kwargs):
171
182
readonly: bool
172
183
kwargs:
173
184
185
+ * rtol: int or float
186
+ * atol: int or float
187
+ * nans_equal: bool
188
+ * bg_gradient: str
174
189
* names: list of str
175
190
"""
176
191
arrays = [aslarray (array ) for array in data if isinstance (array , DISPLAY_IN_GRID )]
177
192
names = kwargs .get ('names' , ["Array{}" .format (i ) for i in range (len (arrays ))])
178
- bg_gradient = kwargs .get ('bg_gradient' , 'red-white-blue' )
179
193
180
194
layout = QVBoxLayout ()
181
195
widget .setLayout (layout )
182
196
183
- comparator_widget = ComparatorWidget (self , bg_gradient = bg_gradient )
197
+ comparator_widget = ComparatorWidget (self , ** kwargs )
184
198
comparator_widget .set_data (arrays , Axis (names , 'array' ))
185
199
layout .addWidget (comparator_widget )
186
200
@@ -213,12 +227,15 @@ def _setup_and_check(self, widget, data, title, readonly, **kwargs):
213
227
readonly: bool
214
228
kwargs:
215
229
230
+ * rtol: int or float
231
+ * atol: int or float
232
+ * nans_equal: bool
233
+ * bg_gradient: str
216
234
* names: list of str
217
235
* colors: str
218
236
"""
219
237
sessions = data
220
238
names = kwargs .get ('names' , ["Session{}" .format (i ) for i in range (len (sessions ))])
221
- bg_gradient = kwargs .get ('bg_gradient' , 'red-white-blue' )
222
239
223
240
assert all (isinstance (s , Session ) for s in sessions )
224
241
self .sessions = sessions
@@ -238,7 +255,7 @@ def _setup_and_check(self, widget, data, title, readonly, **kwargs):
238
255
listwidget .item (i ).setForeground (Qt .red )
239
256
self .listwidget = listwidget
240
257
241
- comparatorwidget = ComparatorWidget (self , bg_gradient = bg_gradient )
258
+ comparatorwidget = ComparatorWidget (self , ** kwargs )
242
259
self .arraywidget = comparatorwidget
243
260
244
261
main_splitter = QSplitter (Qt .Horizontal )
0 commit comments