def draw_coi(self): """ Draws the COI on the spectrum. Also redraws the ridge! """ ax_spec = self.wCanvas.fig.axes[1] # the spectrum axis # COI desired? if bool(self.cb_coi.checkState()): # draw on the spectrum pl.draw_COI(ax_spec, self.tvec) else: ax_spec.lines = [] # remove coi, and ridge?! if self._has_ridge: self.draw_ridge() # re-draw ridge # refresh the canvas self.wCanvas.draw()
def draw_coi(self): ''' Draws the COI on the spectrum. Also redraws the ridge! ''' ax_spec = self.wCanvas.fig.axes[1] # the spectrum axis # COI desired? if bool(self.cb_coi.checkState()): # compute slope of COI coi_m = core.Morlet_COI() # draw on the spectrum pl.draw_COI(ax_spec, self.tvec, coi_m) else: ax_spec.lines = [] # remove coi, and ridge?! if self._has_ridge: self.draw_ridge() # re-draw ridge # refresh the canvas self.wCanvas.draw()
def compute_spectrum(self, raw_signal, sinc_detrend=True, norm_amplitude=False, do_plot=True, draw_coi=False): """ Computes the Wavelet spectrum for a given *signal* for the given *periods* signal : a sequence, the time-series to be analyzed sinc_detrend : boolean, if True sinc-filter detrending will be done with the set T_cut_off parameter norm_amplitude : boolean, if True sliding window amplitude envelope estimation is performed, and normalisation with 1/envelope do_plot : boolean, set to False if no plot is desired, good for for batch processing draw_coi: boolean, set to True if cone of influence shall be drawn on the wavelet power spectrum After a successful analysis, the analyser instance updates self.wlet self.modulus with the results. """ if sinc_detrend: detrended = self.sinc_detrend(raw_signal) ana_signal = detrended else: ana_signal = raw_signal # only after potential detrending! if norm_amplitude: ana_signal = self.normalize_amplitude(ana_signal) self.ana_signal = ana_signal modulus, wlet = core.compute_spectrum(ana_signal, self.dt, self.periods) if do_plot: tvec = np.arange(len(ana_signal)) * self.dt axs = pl.mk_signal_modulus_ax(self.time_unit_label) pl.plot_signal_modulus( axs, time_vector=tvec, signal=ana_signal, modulus=modulus, periods=self.periods, p_max=self.p_max, ) fig = ppl.gcf() fig.tight_layout() self.ax_spec = axs[1] if draw_coi: coi_m = core.Morlet_COI() pl.draw_COI(axs[1], time_vector=tvec) self.wlet = wlet self.modulus = modulus self._has_spec = True
def compute_spectrum(self, raw_signal, T_c=None, window_size=None, do_plot=True, draw_coi=False): """ Computes the Wavelet spectrum for a given *raw_signal*. Parameters ---------- signal : a sequence, the time-series to be analyzed T_c : float, optional Cut off period for the sinc-filter detrending, all periods larger than that one are removed from the signal. If not given, no sinc-detending will be done. window_size : float, optional Length of the sliding window for amplitude envelope estimation in real time units, e.g. 17 minutes. If not given no amplitude normalization will be done. do_plot : boolean, set to False if no plot is desired, good for batch processing draw_coi: boolean, set to True if cone of influence shall be drawn on the wavelet power spectrum Returns ------- modulus : 2d ndarray the real Wavelet power spectrum normalized by signal variance, has shape len(periods) x len(signal). Is set to None before any analysis is done. transform : 2d ndarray the complex results of the Wavelet transform with shape len(periods) x len(signal). Is set to None before any analysis is done. After a successful analysis, the analyzer instance updates self.transform self.modulus with the results. If do_plot was set to True, the attributes self.ax_spec_signal self.ax_spec allow to access the created subplots directly. """ if T_c: detrended = self.sinc_detrend(raw_signal, T_c) ana_signal = detrended else: ana_signal = raw_signal # only after potential detrending! if window_size: ana_signal = self.normalize_amplitude(ana_signal, window_size) self.ana_signal = ana_signal modulus, transform = core.compute_spectrum(ana_signal, self.dt, self.periods) if do_plot: tvec = np.arange(len(ana_signal)) * self.dt axs = pl.mk_signal_modulus_ax(self.time_unit_label) pl.plot_signal_modulus( axs, time_vector=tvec, signal=ana_signal, modulus=modulus, periods=self.periods, p_max=self.p_max, ) fig = ppl.gcf() fig.tight_layout() # some space for a title fig.subplots_adjust(top=0.95) self.ax_spec_signal = axs[0] self.ax_spec = axs[1] if draw_coi: pl.draw_COI(axs[1], time_vector=tvec) self.transform = transform self.modulus = modulus # return also directly return modulus, transform