def inject(self, trace): logger.debug('Received a trace: %s' % trace) buf = self.get(trace) if buf is None: trbuf = trace.copy() buf = MemTracesFile(None, [trbuf]) self._pile.add_file(buf) self.set(trace, buf) else: self._pile.remove_file(buf) trbuf = buf.get_traces()[0] buf.remove(trbuf) trbuf.append(trace.ydata) buf.add(trbuf) self._pile.add_file(buf) self.set(trace, buf) trbuf = buf.get_traces()[0] if self._fixation_length is not None: if trbuf.tmax - trbuf.tmin > self._fixation_length: self._fixate(buf, complete=False)
def inject(self, trace): logger.debug('Received a trace: %s' % trace) buf = self.get(trace) if buf is None: trbuf = trace.copy() buf = MemTracesFile(None,[trbuf]) self._pile.add_file(buf) self.set(trace, buf) else: self._pile.remove_file(buf) trbuf = buf.get_traces()[0] buf.remove(trbuf) trbuf.append(trace.ydata) buf.add(trbuf) self._pile.add_file(buf) self.set(trace, buf) trbuf = buf.get_traces()[0] if self._fixation_length is not None: if trbuf.tmax - trbuf.tmin > self._fixation_length: self._fixate(buf, complete=False)
def call(self): '''Main work routine of the snuffling.''' self.cleanup() swin, ratio = self.swin, self.ratio lwin = swin * ratio tpad = lwin/2. pile = self.get_pile() tmin, tmax = pile.get_tmin() + tpad, pile.get_tmax() - tpad if not self.apply_to_all: vtmin, vtmax = self.get_viewer().get_time_range() tmin = max(vtmin, tmin) tmax = min(vtmax, tmax) tinc = min(lwin * self.block_factor, tmax-tmin) show_level_traces = self.show_level_traces # if show_level_traces and tmax-tmin > lwin * 150: # self.error('Processing time window is longer than 50 x LTA window. Turning off display of level traces.') # show_level_traces = False markers = [] for traces in pile.chopper(tmin=tmin, tmax=tmax, tinc=tinc, tpad=tpad, want_incomplete=False): sumtrace = None isum = 0 for trace in traces: if self.lowpass is not None: trace.lowpass(4, self.lowpass, nyquist_exception=True) if self.highpass is not None: trace.highpass(4, self.highpass, nyquist_exception=True) trace.sta_lta_centered(swin, lwin, scalingmethod=scalingmethod_map[self.scalingmethod]) trace.chop(trace.wmin, min(trace.wmax,tmax)) trace.set_codes(location='cg') trace.meta = { 'tabu': True } #print trace.ydata.max() if sumtrace is None: sumtrace = trace.copy() sumtrace.set_codes(network='', station='SUM', location='cg', channel='') else: sumtrace.add(trace) isum += 1 if show_level_traces: self.add_traces(traces) if sumtrace is not None: tpeaks, apeaks = sumtrace.peaks(self.level*isum, swin) for t, a in zip(tpeaks, apeaks): mark = Marker([ ], t, t) print mark, a #'%s.%s.%s.%s' % ('', trace.station, '', trace.channel) markers.append(mark) if show_level_traces: self.add_trace(sumtrace) self.add_markers(markers)