custom start & end + small math fixes
parent
8f4f868c85
commit
22b7fe7333
48
app.py
48
app.py
|
@ -17,8 +17,6 @@ class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||||
super(AppWindow, self).__init__()
|
super(AppWindow, self).__init__()
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
|
|
||||||
# Signals
|
|
||||||
|
|
||||||
# Graphing actions
|
# Graphing actions
|
||||||
|
|
||||||
self.csv_selected.connect(self.raw_data_graph.plot)
|
self.csv_selected.connect(self.raw_data_graph.plot)
|
||||||
|
@ -58,6 +56,10 @@ class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||||
mem['v_data'] = data.transpose()[2]
|
mem['v_data'] = data.transpose()[2]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
display_warning('No voltage column detected. VThreshold algo will not work.')
|
display_warning('No voltage column detected. VThreshold algo will not work.')
|
||||||
|
|
||||||
|
self.groups_graph.clear()
|
||||||
|
self.tau_graph.clear()
|
||||||
|
self.graph_tabs.setCurrentIndex(0)
|
||||||
self.csv_selected.emit()
|
self.csv_selected.emit()
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,6 +70,26 @@ class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||||
|
|
||||||
# Inputs
|
# Inputs
|
||||||
|
|
||||||
|
def switch_grouping_algo():
|
||||||
|
algo = self.combo_grouping_algo.currentIndex()
|
||||||
|
self.grouping_config_area.setCurrentIndex(algo)
|
||||||
|
self.combo_grouping_algo.currentIndexChanged.connect(switch_grouping_algo)
|
||||||
|
|
||||||
|
def set_start_time():
|
||||||
|
if self.check_custom_start.isChecked():
|
||||||
|
self.spin_start_time.setDisabled(False)
|
||||||
|
else:
|
||||||
|
self.spin_start_time.setDisabled(True)
|
||||||
|
self.check_custom_start.stateChanged.connect(set_start_time)
|
||||||
|
|
||||||
|
def set_end_time():
|
||||||
|
if self.check_custom_end.isChecked():
|
||||||
|
self.spin_end_time.setDisabled(False)
|
||||||
|
else:
|
||||||
|
# mem['end_time'] = self.spin_end_time.value()
|
||||||
|
self.spin_end_time.setDisabled(True)
|
||||||
|
self.check_custom_end.stateChanged.connect(set_end_time)
|
||||||
|
|
||||||
def init_correlate():
|
def init_correlate():
|
||||||
groups_raw = None
|
groups_raw = None
|
||||||
algo = self.combo_grouping_algo.currentIndex()
|
algo = self.combo_grouping_algo.currentIndex()
|
||||||
|
@ -76,14 +98,20 @@ class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
||||||
display_error('VThreshold not yet implemented.')
|
display_error('VThreshold not yet implemented.')
|
||||||
return
|
return
|
||||||
elif algo == 1:
|
elif algo == 1:
|
||||||
groups_raw = crds_calc.spaced_groups(
|
try:
|
||||||
mem['x_data'],
|
groups_raw = crds_calc.spaced_groups(
|
||||||
mem['y_data'],
|
mem['x_data'],
|
||||||
self.spin_group_len.value(),
|
mem['y_data'],
|
||||||
self.spin_min_peakheight.value(),
|
self.spin_group_len.value(),
|
||||||
self.spin_min_peakprominence.value(),
|
self.spin_min_peakheight.value(),
|
||||||
self.spin_moving_average_denom.value()
|
self.spin_min_peakprominence.value(),
|
||||||
)
|
self.spin_moving_average_denom.value(),
|
||||||
|
mirrored=False if self.check_skip_groups.checkState() == 0 else True,
|
||||||
|
start=self.spin_start_time.value() if self.check_custom_start.isChecked() else None,
|
||||||
|
end=self.spin_end_time.value() if self.check_custom_end.isChecked() else None
|
||||||
|
)
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
display_error('Failed to correlate. This could be because no groups are being detected.')
|
||||||
|
|
||||||
mem['groups_correlated'] = crds_calc.correlate_groups(groups_raw)
|
mem['groups_correlated'] = crds_calc.correlate_groups(groups_raw)
|
||||||
self.correlation_complete.emit()
|
self.correlation_complete.emit()
|
||||||
|
|
45
crds_calc.py
45
crds_calc.py
|
@ -8,7 +8,10 @@ def spaced_groups(
|
||||||
group_len: float,
|
group_len: float,
|
||||||
peak_minheight: float,
|
peak_minheight: float,
|
||||||
peak_prominence: float,
|
peak_prominence: float,
|
||||||
sma_denom: int
|
sma_denom: int,
|
||||||
|
mirrored: bool=True,
|
||||||
|
start=None,
|
||||||
|
end=None
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Use SpacedGroups algo to separate groups
|
Use SpacedGroups algo to separate groups
|
||||||
|
@ -32,8 +35,22 @@ def spaced_groups(
|
||||||
def isolate_group(i):
|
def isolate_group(i):
|
||||||
i_min = i - t2i_range(group_len)
|
i_min = i - t2i_range(group_len)
|
||||||
i_max = i + t2i_range(group_len)
|
i_max = i + t2i_range(group_len)
|
||||||
return y_data.tolist()[i_min:i_max]
|
# NOTE: Groups that are too short just get left out. Too bad!
|
||||||
|
group = y_data.tolist()[i_min:i_max]
|
||||||
|
return group
|
||||||
|
|
||||||
|
# Check if custom start & end values are set
|
||||||
|
|
||||||
|
if not end == None:
|
||||||
|
stop_ind = t2i(end)
|
||||||
|
x_data = x_data[:stop_ind]
|
||||||
|
y_data = y_data[:stop_ind]
|
||||||
|
|
||||||
|
if not start == None:
|
||||||
|
start_ind = t2i(start)
|
||||||
|
x_data = x_data[start_ind:]
|
||||||
|
y_data = y_data[start_ind:]
|
||||||
|
|
||||||
# Detect peaks w/ averaged data
|
# Detect peaks w/ averaged data
|
||||||
x_data_av = np.delete(x_data, [range(int(sma_denom / 2))])
|
x_data_av = np.delete(x_data, [range(int(sma_denom / 2))])
|
||||||
x_data_av = np.delete(x_data_av, [range(len(x_data)-int((sma_denom / 2) - 1), len(x_data_av))])
|
x_data_av = np.delete(x_data_av, [range(len(x_data)-int((sma_denom / 2) - 1), len(x_data_av))])
|
||||||
|
@ -51,10 +68,8 @@ def spaced_groups(
|
||||||
for i in range(len(peaks)):
|
for i in range(len(peaks)):
|
||||||
item = peaks[i]
|
item = peaks[i]
|
||||||
next_item = 0
|
next_item = 0
|
||||||
prev_item = item-10
|
|
||||||
try:
|
try:
|
||||||
next_item = peaks[i+1]
|
next_item = peaks[i+1]
|
||||||
prev_item = peaks[i-1]
|
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -75,15 +90,23 @@ def spaced_groups(
|
||||||
|
|
||||||
# Isolate group data
|
# Isolate group data
|
||||||
|
|
||||||
groups_raw = [] # NOTE: Only contains every other group
|
groups_raw = []
|
||||||
for p in peaks_init:
|
for p in peaks_init:
|
||||||
if peaks_init.index(p) % 2 == 0:
|
if mirrored:
|
||||||
groups_raw.append(isolate_group(t2i(p)))
|
if peaks_init.index(p) % 2 == 0:
|
||||||
|
groups_raw.append(isolate_group(t2i(p)))
|
||||||
|
else:
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
pass
|
groups_raw.append(isolate_group(t2i(p)))
|
||||||
|
|
||||||
|
for i in groups_raw:
|
||||||
|
if len(i) == 0:
|
||||||
|
groups_raw.remove(i)
|
||||||
|
|
||||||
return groups_raw
|
return groups_raw
|
||||||
|
|
||||||
|
|
||||||
def correlate_groups(groups_raw):
|
def correlate_groups(groups_raw):
|
||||||
"""
|
"""
|
||||||
Overlay groups using `scipy.correlate`.
|
Overlay groups using `scipy.correlate`.
|
||||||
|
@ -95,7 +118,7 @@ def correlate_groups(groups_raw):
|
||||||
|
|
||||||
group_base = np.array(groups_raw[0])
|
group_base = np.array(groups_raw[0])
|
||||||
groups_adjusted = [group_base]
|
groups_adjusted = [group_base]
|
||||||
for x in groups_raw[1:len(groups_raw)-1]:
|
for x in groups_raw[1:]:
|
||||||
# calculate how much to shift
|
# calculate how much to shift
|
||||||
corr = correlate(group_base, np.array(x))
|
corr = correlate(group_base, np.array(x))
|
||||||
shift = corr.tolist().index(max(corr))
|
shift = corr.tolist().index(max(corr))
|
||||||
|
|
242
ui/mainwin.ui
242
ui/mainwin.ui
|
@ -58,7 +58,7 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>651</width>
|
<width>811</width>
|
||||||
<height>531</height>
|
<height>531</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
|
@ -73,20 +73,50 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>651</width>
|
<width>601</width>
|
||||||
<height>531</height>
|
<height>531</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QGroupBox" name="groupBox_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>600</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>211</width>
|
||||||
|
<height>161</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Time constant output</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QTextBrowser" name="tau_output">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>191</width>
|
||||||
|
<height>131</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="html">
|
||||||
|
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||||
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
|
p, li { white-space: pre-wrap; }
|
||||||
|
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;">
|
||||||
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>120</y>
|
<y>10</y>
|
||||||
<width>241</width>
|
<width>241</width>
|
||||||
<height>111</height>
|
<height>231</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="font">
|
<property name="font">
|
||||||
|
@ -99,13 +129,13 @@
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Grouping Config</string>
|
<string>Grouping Config</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QStackedWidget" name="stackedWidget">
|
<widget class="QStackedWidget" name="grouping_config_area">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>50</y>
|
<y>50</y>
|
||||||
<width>221</width>
|
<width>221</width>
|
||||||
<height>31</height>
|
<height>91</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
|
@ -118,7 +148,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>221</width>
|
<width>221</width>
|
||||||
<height>22</height>
|
<height>91</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout_4">
|
<layout class="QFormLayout" name="formLayout_4">
|
||||||
|
@ -148,8 +178,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>211</width>
|
<width>221</width>
|
||||||
<height>22</height>
|
<height>103</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
@ -170,6 +200,54 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Min peak height</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="spin_min_peakheight">
|
||||||
|
<property name="decimals">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>0.000400000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>Min peak prominence</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="spin_min_peakprominence">
|
||||||
|
<property name="decimals">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<double>0.001200000000000</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="text">
|
||||||
|
<string>Moving average size</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QSpinBox" name="spin_moving_average_denom">
|
||||||
|
<property name="value">
|
||||||
|
<number>20</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
@ -198,7 +276,7 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>80</y>
|
<y>200</y>
|
||||||
<width>221</width>
|
<width>221</width>
|
||||||
<height>20</height>
|
<height>20</height>
|
||||||
</rect>
|
</rect>
|
||||||
|
@ -210,12 +288,64 @@
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QWidget" name="formLayoutWidget_5">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>150</y>
|
||||||
|
<width>233</width>
|
||||||
|
<height>51</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout_5">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QCheckBox" name="check_custom_start">
|
||||||
|
<property name="text">
|
||||||
|
<string>Custom Start Time</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="spin_start_time">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="decimals">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<double>-99.989999999999995</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="check_custom_end">
|
||||||
|
<property name="text">
|
||||||
|
<string>Custom End Time</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QDoubleSpinBox" name="spin_end_time">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="decimals">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<double>-99.989999999999995</double>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QPushButton" name="correlate_button">
|
<widget class="QPushButton" name="correlate_button">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>60</x>
|
<x>50</x>
|
||||||
<y>240</y>
|
<y>250</y>
|
||||||
<width>151</width>
|
<width>151</width>
|
||||||
<height>28</height>
|
<height>28</height>
|
||||||
</rect>
|
</rect>
|
||||||
|
@ -236,7 +366,7 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>340</y>
|
<y>350</y>
|
||||||
<width>241</width>
|
<width>241</width>
|
||||||
<height>181</height>
|
<height>181</height>
|
||||||
</rect>
|
</rect>
|
||||||
|
@ -320,7 +450,7 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>60</x>
|
<x>60</x>
|
||||||
<y>530</y>
|
<y>540</y>
|
||||||
<width>151</width>
|
<width>151</width>
|
||||||
<height>28</height>
|
<height>28</height>
|
||||||
</rect>
|
</rect>
|
||||||
|
@ -341,7 +471,7 @@
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>280</y>
|
<y>290</y>
|
||||||
<width>241</width>
|
<width>241</width>
|
||||||
<height>51</height>
|
<height>51</height>
|
||||||
</rect>
|
</rect>
|
||||||
|
@ -392,86 +522,6 @@
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QGroupBox" name="groupBox_5">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>10</y>
|
|
||||||
<width>241</width>
|
|
||||||
<height>101</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<pointsize>8</pointsize>
|
|
||||||
<weight>75</weight>
|
|
||||||
<bold>true</bold>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="title">
|
|
||||||
<string>Peak Detection Config</string>
|
|
||||||
</property>
|
|
||||||
<widget class="QWidget" name="formLayoutWidget_5">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>20</y>
|
|
||||||
<width>221</width>
|
|
||||||
<height>76</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<layout class="QFormLayout" name="formLayout_5">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label_4">
|
|
||||||
<property name="text">
|
|
||||||
<string>Min peak height</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QDoubleSpinBox" name="spin_min_peakheight">
|
|
||||||
<property name="decimals">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>0.000400000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_6">
|
|
||||||
<property name="text">
|
|
||||||
<string>Min peak prominence</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QDoubleSpinBox" name="spin_min_peakprominence">
|
|
||||||
<property name="decimals">
|
|
||||||
<number>6</number>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>0.001200000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_5">
|
|
||||||
<property name="text">
|
|
||||||
<string>Moving average size</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QSpinBox" name="spin_moving_average_denom">
|
|
||||||
<property name="value">
|
|
||||||
<number>20</number>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QMenuBar" name="menubar">
|
<widget class="QMenuBar" name="menubar">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
|
@ -479,7 +529,7 @@
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>1091</width>
|
<width>1091</width>
|
||||||
<height>26</height>
|
<height>21</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QMenu" name="menuFile">
|
<widget class="QMenu" name="menuFile">
|
||||||
|
|
|
@ -41,6 +41,10 @@ class BaseGraph(QtWidgets.QWidget):
|
||||||
self.canv.draw()
|
self.canv.draw()
|
||||||
print("attempted plot")
|
print("attempted plot")
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self.canv.axes.clear()
|
||||||
|
self.canv.draw()
|
||||||
|
|
||||||
class RawDataGraph(BaseGraph):
|
class RawDataGraph(BaseGraph):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue