Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)