From 661ab81d7e35d64406f795bef18d06072f914eae Mon Sep 17 00:00:00 2001 From: Dominik Demuth Date: Tue, 31 Oct 2023 19:12:02 +0100 Subject: [PATCH] fix edit dialog for spectra --- src/gui_qt/data/container.py | 1 - src/gui_qt/data/signaledit/phase_dialog.py | 39 +++++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/gui_qt/data/container.py b/src/gui_qt/data/container.py index ec78c6e..3a38aba 100644 --- a/src/gui_qt/data/container.py +++ b/src/gui_qt/data/container.py @@ -778,7 +778,6 @@ class SignalContainer(ExperimentContainer): self._data.apod(*apod) if fourier[0] is not None: - print(fourier) if fourier[0]: if phase[0] is not None: self._data.manual_phase(*phase) diff --git a/src/gui_qt/data/signaledit/phase_dialog.py b/src/gui_qt/data/signaledit/phase_dialog.py index 69a4d16..3494a45 100644 --- a/src/gui_qt/data/signaledit/phase_dialog.py +++ b/src/gui_qt/data/signaledit/phase_dialog.py @@ -96,7 +96,7 @@ class QPreviewDialog(QtWidgets.QDialog, Ui_ApodEdit): self._all_freq = True fid = data.copy() - spec = self._temp_fft(fid.x, fid.y) + spec = self._temp_fft_time(fid.x, fid.y, self.baseline_box.isChecked()) x_len = data.x.size self.zf_spinbox.setMaximum(min(2**17//x_len, 3)) @@ -128,7 +128,7 @@ class QPreviewDialog(QtWidgets.QDialog, Ui_ApodEdit): def _update_bl(self): if self.baseline_box.isChecked(): for y in self._tmp_data_bl: - y -= y[int(-0.12*y.size):].mean() + self._temp_baseline(y) else: for i, d in enumerate(self.data): self._tmp_data_bl[i] = d.y.copy() @@ -200,7 +200,7 @@ class QPreviewDialog(QtWidgets.QDialog, Ui_ApodEdit): ph1 = self.ph1_spinbox.value() for i, (x, y) in enumerate(self._tmp_data_ap): - x_fft, y_fft = self._temp_fft(x, y) + x_fft, y_fft = self._temp_fft_time(x, y, self.baseline_box.isChecked()) if ph0 != 0: y = self._temp_phase(x, y, ph0, 0, 0) @@ -213,7 +213,7 @@ class QPreviewDialog(QtWidgets.QDialog, Ui_ApodEdit): else: self.pvt_line.hide() for i, (x, y) in enumerate(self._tmp_data_ap): - self._tmp_data_ph[i] = x, y, *self._temp_fft(x, y) + self._tmp_data_ph[i] = x, y, *self._temp_fft_time(x, y, self.baseline_box.isChecked()) self._update_plots() @@ -225,6 +225,15 @@ class QPreviewDialog(QtWidgets.QDialog, Ui_ApodEdit): self.graphs[i][2].setData(x=xf, y=yf.real) self.graphs[i][3].setData(x=xf, y=yf.imag) + @staticmethod + def _temp_baseline_time(y): + y -= y[int(-0.12 * y.size):].mean() + + @staticmethod + def _temp_baseline_freq(y): + region = int(0.12 * y.size) + y -= np.mean([y[-region:], y[:region]]) + @staticmethod def _temp_phase(x: np.ndarray, y: np.ndarray, ph0: float, ph1: float, pvt: float) -> np.ndarray: phase_correction = np.exp(-1j * (ph0 + ph1 * (x - pvt) / x.max()) * pi / 180.) @@ -254,12 +263,19 @@ class QPreviewDialog(QtWidgets.QDialog, Ui_ApodEdit): return _y @staticmethod - def _temp_fft(x: np.ndarray, y: np.ndarray) -> tuple[np.ndarray, np.ndarray]: + def _temp_fft_time(x: np.ndarray, y: np.ndarray, baseline: bool = False) -> tuple[np.ndarray, np.ndarray]: y_fft = fftshift(fft(y)) x_fft = fftshift(fftfreq(len(x), d=x[1]-x[0])) + if baseline: + QPreviewDialog._temp_baseline_freq(y_fft) + return x_fft, y_fft + @staticmethod + def _temp_fft_freq(x: np.ndarray, y: np.ndarray, _=None): + return x, y + def move_line(self, evt): self.pivot_lineedit.setText(f'{evt.value():.5g}') @@ -329,6 +345,8 @@ class QPreviewDialog(QtWidgets.QDialog, Ui_ApodEdit): self.data = [] self.graphs = [] + self.freq_graph.removeItem(self.pvt_line) + self.time_graph.removeItem(self.pvt_line) self.blockSignals(False) @@ -374,3 +392,14 @@ class QPreviewDialog(QtWidgets.QDialog, Ui_ApodEdit): self.zerofill_box.setVisible(self._all_time) self.apod_box.setVisible(self._all_time) self.shift_box.setVisible(self._all_time) + + self._temp_baseline = self._temp_baseline_time if self._all_time else self._temp_baseline_freq + self._temp_fft = self._temp_fft_time if self._all_time else self._temp_fft_freq + + self.freq_graph.setVisible(self._all_time) + if self._all_freq: + self.time_graph.addItem(self.pvt_line) + else: + self.freq_graph.addItem(self.pvt_line) + +