Module pyspecan.controller.WEB.plots.base
WEB base plots: compute plot data, the browser only draws it
Classes
class FreqPlot (parent, **kwargs)-
Expand source code
class FreqPlot(_Plot): def __init__(self, parent, **kwargs): super().__init__(parent) self.window = kwargs.get("window", "blackman") self.vbw = kwargs.get("vbw", 10.0) self.scale = kwargs.get("scale_div", 10.0) self.ref_level = kwargs.get("ref_level", "auto") def calc_psd(self, samps): vbw = self.vbw if self.vbw > 0 else None return psd(samps, self.parent.model.get_fs().raw, vbw, self.window) @property def y_top(self): """Plot maximum amplitude""" return self.ref_level @property def y_btm(self): """Plot minimum amplitude""" return self.ref_level - (10*self.scale) def set_scale(self, scale): scale = float(scale) if scale <= 0: raise ValueError("scale must be positive") self.scale = scale def set_ref_level(self, ref): self.ref_level = "auto" if ref == "auto" else float(ref) def set_vbw(self, vbw): self.vbw = max(float(vbw), 0.0) def set_window(self, window): from ....utils.window import WindowLUT if window not in WindowLUT: raise ValueError(f"unknown window {window}") self.window = window def _calc_ref_level(self, _psd, mul=0.1): pmax = np.max(_psd) return int(pmax * (1-mul)) if pmax < 0 else int(pmax * (1+mul)) def settings(self): return { **super().settings(), "window": self.window, "vbw": self.vbw, "scale_div": self.scale, "ref_level": self.ref_level, }base plot
Ancestors
- pyspecan.controller.WEB.plots.base._Plot
Subclasses
Instance variables
prop y_btm-
Expand source code
@property def y_btm(self): """Plot minimum amplitude""" return self.ref_level - (10*self.scale)Plot minimum amplitude
prop y_top-
Expand source code
@property def y_top(self): """Plot maximum amplitude""" return self.ref_levelPlot maximum amplitude
Methods
def calc_psd(self, samps)-
Expand source code
def calc_psd(self, samps): vbw = self.vbw if self.vbw > 0 else None return psd(samps, self.parent.model.get_fs().raw, vbw, self.window) def set_ref_level(self, ref)-
Expand source code
def set_ref_level(self, ref): self.ref_level = "auto" if ref == "auto" else float(ref) def set_scale(self, scale)-
Expand source code
def set_scale(self, scale): scale = float(scale) if scale <= 0: raise ValueError("scale must be positive") self.scale = scale def set_vbw(self, vbw)-
Expand source code
def set_vbw(self, vbw): self.vbw = max(float(vbw), 0.0) def set_window(self, window)-
Expand source code
def set_window(self, window): from ....utils.window import WindowLUT if window not in WindowLUT: raise ValueError(f"unknown window {window}") self.window = window def settings(self)-
Expand source code
def settings(self): return { **super().settings(), "window": self.window, "vbw": self.vbw, "scale_div": self.scale, "ref_level": self.ref_level, }Return the current settings