Skip to content
Snippets Groups Projects
Verified Commit bf6197a6 authored by Tobias Hangleiter's avatar Tobias Hangleiter
Browse files

Fix complex_data for readonly daq

parent 2110ae5d
Branches
Tags
1 merge request!56Add live view tool
Pipeline #1633575 passed
......@@ -32,7 +32,7 @@ class PlotManager:
plot_cumulative_normalized: bool = False, plot_style: _styleT = 'fast',
plot_update_mode: str = 'never', plot_dB_scale: bool = False, prop_cycle=None,
raw_unit: str = 'V', processed_unit: Optional[str] = None,
uses_windowed_estimator: bool = True, complex_data: bool = False,
uses_windowed_estimator: bool = True, complex_data: Optional[bool] = False,
figure_kw: Optional[Mapping] = None, subplot_kw: Optional[Mapping] = None,
gridspec_kw: Optional[Mapping] = None, legend_kw: Optional[Mapping] = None):
"""A helper class that manages plotting spectrometer data."""
......@@ -58,7 +58,7 @@ class PlotManager:
self.prop_cycle = prop_cycle or plt.rcParams['axes.prop_cycle']
self.raw_unit = raw_unit
self.uses_windowed_estimator = uses_windowed_estimator
self.complex_data = complex_data
self._complex_data = complex_data
self._leg = None
self.axes = {key: dict.fromkeys(self.LINE_TYPES) for key in self.PLOT_TYPES}
......@@ -323,6 +323,20 @@ class PlotManager:
if 'fig' in self.__dict__:
self.setup_figure()
@property
def complex_data(self) -> bool:
"""Is there complex data resulting in negative frequencies in the FFT?"""
if self._complex_data is not None:
return self._complex_data
complex_raw_data = any(np.iscomplexobj(d['timetrace_raw'])
for d in self._data.values()
if 'timetrace_raw' in d)
complex_processed_data = any(np.iscomplexobj(d['timetrace_processed'])
for d in self._data.values()
if 'timetrace_processed' in d)
return complex_raw_data or complex_processed_data
def main_plot(self, key, line_type):
x, y = self.get_freq_data(key, line_type, self.plot_dB_scale)
......
......@@ -411,8 +411,13 @@ class Spectrometer:
self.psd_estimator = partial(welch, **psd_estimator)
else:
raise TypeError('psd_estimator should be callable or kwarg dict for welch().')
uses_windowed_estimator = 'window' in inspect.signature(self.psd_estimator).parameters
if self.daq is not None:
complex_data = np.issubdtype(self.daq.DTYPE, np.complexfloating)
else:
complex_data = None
self._plot_manager = PlotManager(self._data, plot_raw, plot_timetrace,
plot_cumulative, plot_negative_frequencies,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment