From d8b0b6d0fdd22b8cff5332c721a030fa5704d711 Mon Sep 17 00:00:00 2001 From: turtlebasket Date: Thu, 5 Aug 2021 15:47:55 -0700 Subject: [PATCH] Break out each comb tooth's fit data into its own tab --- app.py | 2 +- ui/mainwin.ui | 26 ++++++++------- widgets.py | 89 ++++++++++++++++++++++++++++++++++----------------- 3 files changed, 76 insertions(+), 41 deletions(-) diff --git a/app.py b/app.py index 3170e6d..38ba1d2 100644 --- a/app.py +++ b/app.py @@ -203,7 +203,7 @@ class AppWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.check_advanced_peak_detection.isChecked() ) # print(mem['fit_equations']) - self.peak_fits_graph.plot() + self.peak_fit_viewer.plot() self.graph_tabs.setCurrentIndex(4) self.fit_button.pressed.connect(init_fit) diff --git a/ui/mainwin.ui b/ui/mainwin.ui index 410683d..a09ff75 100644 --- a/ui/mainwin.ui +++ b/ui/mainwin.ui @@ -7,7 +7,7 @@ 0 0 1343 - 907 + 746 @@ -40,8 +40,8 @@ 0 0 - 278 - 846 + 261 + 812 @@ -794,7 +794,11 @@ - + + + -1 + + @@ -829,7 +833,7 @@ 0 0 279 - 802 + 641 @@ -1021,12 +1025,6 @@ p, li { white-space: pre-wrap; }
widgets
1 - - FitsGraph - QWidget -
widgets
- 1 -
AddedPeaksGraph QWidget @@ -1039,6 +1037,12 @@ p, li { white-space: pre-wrap; }
widgets
1
+ + FitsGraphViewer + QTabWidget +
widgets
+ 1 +
diff --git a/widgets.py b/widgets.py index 5491500..77fdf35 100644 --- a/widgets.py +++ b/widgets.py @@ -91,42 +91,73 @@ class AddedPeaksGraph(BaseGraph): if not self.params['peak_width'] == None: # plot peak indices for i in mem['peak_indices']: self.canv.axes.axvspan(int(i-self.params['peak_width']/2+self.params['shift_over']), int(i+self.params['peak_width']/2+self.params['shift_over']), color='red', alpha=0.4) - -class FitsGraph(BaseGraph): - + +class FitGraph(BaseGraph): def __init__(self, x): - super(FitsGraph, self).__init__(x) + super().__init__(x) + + def set_peak_index(self, i): + self.peak_index = i def plot_data(self): - for g_i in range(len(mem['isolated_peaks'])): - for p_i in range(len(mem['isolated_peaks'][g_i])): - peak = mem['isolated_peaks'][g_i][p_i] - x_data = np.arange(len(peak)) - popt = mem['fit_equations'][g_i][p_i]['popt'] - self.canv.axes.plot(peak) - self.canv.axes.plot(x_data, exp_func(x_data, *popt), color='red') + peak = mem['isolated_peaks'][g_i][self.peak_index] + x_data = np.arange(len(peak)) + popt = mem['fit_equations'][g_i][self.peak_index]['popt'] + self.canv.axes.plot(peak) + self.canv.axes.plot(x_data, exp_func(x_data, *popt), color='red') + +class FitsGraphViewer(QtWidgets.QTabWidget): + def __init__(self, x): + super(FitsGraphViewer, self).__init__(x) + layout = QtWidgets.QGridLayout() + self.setLayout(layout) + + def plot(self): # Create tabs & plot ALL data (each individual graph) + self.clear() + + for p_i in range(len(mem['isolated_peaks'][0])): + tab_name = str(p_i+1) + fit_graph = FitGraph(self) + fit_graph.set_peak_index(p_i) + self.addTab(fit_graph, tab_name) + fit_graph.plot() + +# class FitsGraph(BaseGraph): - # def plot_data(self): - - # try: - # self.canv.axes.remove() - # except AttributeError: - # pass - - # subplots_stacked = len(mem['isolated_peaks'][0]) # should all be same length - # axes = self.canv.figure.subplots(subplots_stacked, 1, sharex=True) +# def __init__(self, x): +# super(FitsGraph, self).__init__(x) - # for g_i in range(len(mem['isolated_peaks'])): - # for p_i in range(subplots_stacked): - # peak = mem['isolated_peaks'][g_i][p_i] - # axes[p_i].plot(peak) - # x_data = np.arange(len(peak)) - # popt = mem['fit_equations'][g_i][p_i]['popt'] - # axes[p_i].plot(x_data, exp_func(x_data, *popt), color='red') +# # def plot_data(self): + +# # for g_i in range(len(mem['isolated_peaks'])): +# # for p_i in range(len(mem['isolated_peaks'][g_i])): +# # peak = mem['isolated_peaks'][g_i][p_i] +# # x_data = np.arange(len(peak)) +# # popt = mem['fit_equations'][g_i][p_i]['popt'] +# # self.canv.axes.plot(peak) +# # self.canv.axes.plot(x_data, exp_func(x_data, *popt), color='red') + +# def plot_data(self): - # for ax in axs.flat: - # ax.set(xlabel='x-label', ylabel='y-label') +# try: +# self.canv.axes.remove() +# except AttributeError: +# pass + +# subplots_stacked = len(mem['isolated_peaks'][0]) # should all be same length +# axes = self.canv.figure.subplots(subplots_stacked, 1, sharex=True) + +# for g_i in range(len(mem['isolated_peaks'])): +# for p_i in range(subplots_stacked): +# peak = mem['isolated_peaks'][g_i][p_i] +# axes[p_i].plot(peak) +# # x_data = np.arange(len(peak)) +# # popt = mem['fit_equations'][g_i][p_i]['popt'] +# # axes[p_i].plot(x_data, exp_func(x_data, *popt), color='red') + +# # for ax in axs.flat: +# # ax.set(xlabel='x-label', ylabel='y-label') class TimeConstantGraph(BaseGraph): pass \ No newline at end of file