Changeset 1064


Ignore:
Timestamp:
29.12.2015 19:02:48 (4 years ago)
Author:
klaus
Message:

simulate frq qualifiers; new command reado (obspy read)

Location:
SHX/trunk/SeismicHandler/commands
Files:
1 added
1 edited

Legend:

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

    r1063 r1064  
    3737        "LIST", 
    3838        "RESTORE", 
     39        "LOFRQ", 
     40        "HIFRQ", 
    3941    ] 
    4042 
     
    7274 
    7375        instrument = self.parameters[1] 
     76         
     77        lofrq = hifrq = None 
     78        if self.qualifiers["LOFRQ"]: 
     79            lofrq = float( self.qualifiers["LOFRQ"] ) 
     80        if self.qualifiers["HIFRQ"]: 
     81            hifrq = float( self.qualifiers["HIFRQ"] ) 
    7482 
    7583        newtraces = [] 
     
    7785        for t in traces: 
    7886            try: 
    79                 newtraces.append(self.simulate(t, instrument)) 
     87                newtraces.append(self.simulate(t, instrument, lofrq, hifrq)) 
    8088            except Exception: 
    8189                continue 
     
    8492 
    8593    @staticmethod 
    86     def simulate(trace, instrument): 
     94    def simulate(trace, instrument, lofreq=None, hifreq=None ): 
    8795        """ 
    8896        Simulate historical instrument. Removes simultaneously instrument 
     
    94102        Wood-Anderson: band-pass between 0.1 and 10 Hz 
    95103        WWSSN-SP:      band-pass between 0.01 and 100 Hz 
    96         WWSSN-LP:      band-pass between 0.001 and 1 Hz 
    97         KIRNOS:        band-pass between 0.001 and 100 Hz 
    98         SRO-LP:        band-pass between 0.001 and 1 Hz 
     104        WWSSN-LP:      band-pass between 0.004 and 1 Hz 
     105        KIRNOS:        band-pass between 0.004 and 100 Hz 
     106        SRO-LP:        band-pass between 0.004 and 1 Hz 
    99107        LRSM-SP:       band-pass between 0.01 and 1000 Hz 
    100         LRSM-LP:       band-pass between 0.0005 and 10 Hz 
     108        LRSM-LP:       band-pass between 0.004 and 10 Hz 
    101109 
    102110        In any case the Nyquist freqency of the recording is used if it's 
    103111        lower than the upper corner frequency. 
    104112        """ 
     113         
     114        freqwdw = { 
     115            "wood-anderson" :  (0.1,    10.), 
     116            "wwssn-sp"      :  (0.01,  100.), 
     117            "wwssn-lp"      :  (0.004,   1.), 
     118            "kirnos"        :  (0.004, 100.), 
     119            "sro-lp"        :  (0.004,   1.), 
     120            "lrsm-lp"       :  (0.004,  10.), 
     121            "lrsm-sp"       :  (0.01, 1000.), 
     122        } 
    105123 
    106124        instrument = instrument.lower() 
     
    137155        # pre-filter data 
    138156        nyquist = 1. / tf.stats.delta * .5 
    139         if instrument == "wood-anderson": 
    140             freqmax = nyquist > 10 and 10. or nyquist 
    141             tf.filter('bandpass', freqmin=0.1, freqmax=freqmax, corners=4, 
    142                                                                 zerophase=True) 
    143         elif instrument == "wwssn-sp": 
    144             freqmax = nyquist > 100 and 100. or nyquist 
    145             tf.filter('bandpass', freqmin=0.01, freqmax=freqmax, corners=4, 
    146                                                                 zerophase=True) 
    147         elif instrument == "wwssn-lp": 
    148             freqmax = nyquist > 1 and 1. or nyquist 
    149             tf.filter('bandpass', freqmin=0.001, freqmax=freqmax, corners=4, 
    150                                                                 zerophase=True) 
    151         elif instrument == "kirnos": 
    152             freqmax = nyquist > 100 and 100. or nyquist 
    153             tf.filter('bandpass', freqmin=0.001, freqmax=freqmax, corners=4, 
    154                                                                 zerophase=True) 
    155         elif instrument == "sro-lp": 
    156             freqmax = nyquist > 1 and 1. or nyquist 
    157             tf.filter('bandpass', freqmin=0.001, freqmax=freqmax, corners=4, 
    158                                                                 zerophase=True) 
    159         elif instrument == "lrsm-lp": 
    160             freqmax = nyquist > 10 and 10. or nyquist 
    161             tf.filter('bandpass', freqmin=0.0005, freqmax=freqmax, corners=4, 
    162                                                                 zerophase=True) 
    163         elif instrument == "lrsm-sp": 
    164             freqmax = nyquist > 1000 and 1000. or nyquist 
    165             tf.filter('bandpass', freqmin=0.01, freqmax=freqmax, corners=4, 
    166                                                                 zerophase=True) 
     157        if instrument in freqwdw.keys(): 
     158            lofrq, hifrq = freqwdw[instrument] 
     159            if lofreq: 
     160                lofrq = lofreq 
     161            if hifreq: 
     162                hifrq = hifreq 
     163            freqmax = nyquist > hifrq and hifrq or nyquist 
     164            tf.filter('bandpass', freqmin=lofrq, freqmax=freqmax, 
     165                corners=4, zerophase=True) 
    167166        else: 
    168167            msg = "Requested filter not found!" 
Note: See TracChangeset for help on using the changeset viewer.