Ignore:
Timestamp:
10.04.2013 12:33:07 (6 years ago)
Author:
marcus
Message:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/commands/simulate.py

    r911 r931  
    7474        msg = "applied filter to trace no %u" 
    7575        for t in traces: 
    76             newtraces.append(self.simulate(t, instrument)) 
     76            try: 
     77                newtraces.append(self.simulate(t, instrument)) 
     78            except Exception: 
     79                continue 
    7780            log_message("debug.filter", msg % t.index(True)) 
    7881        add_traces(newtraces) 
     
    9497        LRSM-SP:       band-pass between 0.01 and 1000 Hz 
    9598        LRSM-LP:       band-pass between 0.0005 and 10 Hz 
     99 
     100        In any case the Nyquist freqency of the recording is used if it's 
     101        lower than the upper corner frequency. 
    96102        """ 
    97103 
     
    106112            remove = meta[(tf.id, tf.stats.starttime)] 
    107113        except: 
    108             msg = "no meta data found for time starting at %s" 
    109             raise ShxError(msg % tf.stats.starttime) 
     114            msg = "no meta data found for %s at start time %s" 
     115            raise ShxError(msg % (tf.id, tf.stats.starttime)) 
    110116 
    111117        try: 
     
    118124 
    119125        # pre-filter data 
     126        nyquist = 1. / tf.stats.delta * .5 
    120127        if instrument == "wood-anderson": 
    121             tf.filter('bandpass', freqmin=0.1, freqmax=10, corners=4, 
     128            freqmax = nyquist > 10 and 10. or nyquist 
     129            tf.filter('bandpass', freqmin=0.1, freqmax=freqmax, corners=4, 
    122130                                                                zerophase=True) 
    123131        elif instrument == "wwssn-sp": 
    124             tf.filter('bandpass', freqmin=0.01, freqmax=100, corners=4, 
     132            freqmax = nyquist > 100 and 100. or nyquist 
     133            tf.filter('bandpass', freqmin=0.01, freqmax=freqmax, corners=4, 
    125134                                                                zerophase=True) 
    126135        elif instrument == "wwssn-lp": 
    127             tf.filter('bandpass', freqmin=0.001, freqmax=1, corners=4, 
     136            freqmax = nyquist > 1 and 1. or nyquist 
     137            tf.filter('bandpass', freqmin=0.001, freqmax=freqmax, corners=4, 
    128138                                                                zerophase=True) 
    129139        elif instrument == "kirnos": 
    130             tf.filter('bandpass', freqmin=0.001, freqmax=100, corners=4, 
     140            freqmax = nyquist > 100 and 100. or nyquist 
     141            tf.filter('bandpass', freqmin=0.001, freqmax=freqmax, corners=4, 
    131142                                                                zerophase=True) 
    132143        elif instrument == "sro-lp": 
    133             tf.filter('bandpass', freqmin=0.001, freqmax=1, corners=4, 
     144            freqmax = nyquist > 1 and 1. or nyquist 
     145            tf.filter('bandpass', freqmin=0.001, freqmax=freqmax, corners=4, 
    134146                                                                zerophase=True) 
    135147        elif instrument == "lrsm-lp": 
    136             tf.filter('bandpass', freqmin=0.0005, freqmax=10, corners=4, 
     148            freqmax = nyquist > 10 and 10. or nyquist 
     149            tf.filter('bandpass', freqmin=0.0005, freqmax=freqmax, corners=4, 
    137150                                                                zerophase=True) 
    138151        elif instrument == "lrsm-sp": 
    139             tf.filter('bandpass', freqmin=0.01, freqmax=1000, corners=4, 
     152            freqmax = nyquist > 1000 and 1000. or nyquist 
     153            tf.filter('bandpass', freqmin=0.01, freqmax=freqmax, corners=4, 
    140154                                                                zerophase=True) 
     155        else: 
     156            msg = "Requested filter not found!" 
     157            raise ShxError(msg) 
    141158 
    142159        simul = simul.parse()[0] 
     
    168185        # retain SH data standard 
    169186        tf.data = np.require(tf.data, "float32") 
     187        tf.invalidate_cache() 
    170188 
    171189        return tf 
Note: See TracChangeset for help on using the changeset viewer.