fix edit dialog for spectra

This commit is contained in:
Dominik Demuth 2023-10-31 19:12:02 +01:00
parent 185dd160f1
commit 661ab81d7e
2 changed files with 34 additions and 6 deletions

View File

@ -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)

View File

@ -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)