Changeset 1186 for SHX


Ignore:
Timestamp:
27.02.2016 11:40:34 (4 years ago)
Author:
klaus
Message:

magnitude ml(Z); command trigger; bugfixes

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

Legend:

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

    r1185 r1186  
    279279            for sname in reslist.keys(): 
    280280                if reslist[sname] != None: 
    281                     maglist.addStationMagnitude( sname, magtype, 
     281                    if magtype == 'mlz': 
     282                        lmagtype = 'ml' 
     283                    else: 
     284                        lmagtype = magtype 
     285                    maglist.addStationMagnitude( sname, lmagtype, 
    282286                        reslist[sname] ) 
    283287                    magcnt += 1 
     
    298302        if mtl == 'ml': 
    299303            return 'ml' 
     304        elif mtl == 'mlz': 
     305            return 'mlz' 
    300306        elif mtl == 'mb': 
    301307            return 'mb' 
     
    310316        pl = PhaseList() 
    311317        manual = pl.translatePicktype( 'manual' ) 
     318        auto = pl.translatePicktype( 'auto' ) 
    312319        theo = pl.translatePicktype( 'theo' ) 
    313320        sname = "%s.%s" % (trc.stats.network,trc.stats.station) 
    314321        # first search manual picks 
    315322        plist = pl.getPhaseList( sname, manual ) 
     323        if len(plist) == 0: 
     324            plist = pl.getPhaseList( sname, auto ) 
    316325        for lphase in plist: 
    317326            if lphase.name == phase: 
     
    336345        if magtype == 'ml': 
    337346            return self.determineMagnitudeMl( trc, stime, etime, degdist ) 
     347        elif magtype == 'mlz': 
     348            return self.determineMagnitudeMlZ( trc, stime, etime, degdist ) 
    338349        else: 
    339350            raise ShxError( "magnitude determination for '%s' not implmented" 
     
    367378        ampl = math.sqrt( ampl[0]*ampl[0] + ampl[1]*ampl[1] ) 
    368379        return magn_ml_analytic( ampl, degdist*DEG_TO_KM ) 
     380     
     381    def determineMagnitudeMlZ( self, trc, stime, etime, degdist ): 
     382        "Determine magnitude on Z component." 
     383        if trc.get_info('SIMUL') != "WOOD-ANDERSON": 
     384            print "No Wood-Anderson simulation" 
     385            return None 
     386        wdw = trc.slice_relative(stime,etime) 
     387        mean = wdw.data.mean() 
     388        wa_ampl_mean = max(wdw.data.max()-mean, mean-wdw.data.min()) 
     389        h_dist = degdist * DEG_TO_KM 
     390        magnitude = math.log10(wa_ampl_mean) + math.log10(h_dist / 100.0) + \ 
     391            0.00301 * (h_dist - 100.0) + 3.0 
     392        return magnitude 
    369393     
    370394    def getMagnitudePlotData( self, magtype ): 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1185 r1186  
    235235            '3': plotter.OnShowAllInMagnify, 
    236236            '8': plotter.OnFilterBP_1_8, 
     237            '.': plotter.OnMoveTimeWindowRight, 
     238            ',': plotter.OnMoveTimeWindowLeft, 
    237239            '-^': self.keyZoomUp, 
    238240            '-v': self.keyZoomDown, 
     
    21192121        self.addEntry( windowMenu, '&Del Time Window\tD', 
    21202122            'Delete time window.', self.OnDelTimeWindow ) 
     2123        self.addEntry( windowMenu, 'Move Time Window Right\t.', 
     2124            'Move time window 50% to the right', self.OnMoveTimeWindowRight ) 
     2125        self.addEntry( windowMenu, 'Move Time Window Left\t,', 
     2126            'Move time window 50% to the left', self.OnMoveTimeWindowLeft ) 
    21212127        windowMenu.AppendSeparator() 
    21222128        self.addEntry( windowMenu, '&Move Zoom Right\t>', 
     
    22872293            'Computes magnitude ml around picked phases at all traces up to selected', 
    22882294            self.OnMagnMlAnalytic ) 
     2295        self.addEntry( magnMenu, 'ml(Z) on all Trc. (analytic)', 
     2296            'Computes magnitude ml on verticals around picked phases at all traces up to selected', 
     2297            self.OnMagnMlZAnalytic ) 
    22892298        self.addEntry( magnMenu, '&ml on single Trc. (analytic)\tM', 
    22902299            'Computes magnitude ml within selection window', 
    22912300            self.OnMagnMlAnalyticSingle ) 
     2301        self.addEntry( magnMenu, 'ml(Z) on single Trc. (analytic)\tM', 
     2302            'Computes magnitude ml within selection window on vertical comp', 
     2303            self.OnMagnMlZAnalyticSingle ) 
    22922304        self.addEntry( magnMenu, 'ml Delete all', 
    22932305            'Deletes all ml magnitudes', self.OnMagnMlDeleteAll ) 
     
    23152327            'Deletes traces, phase, magnitudes and resets parameters.', 
    23162328            self.OnClearAllParameters ) 
     2329        self.addEntry( controlMenu, 'Obspy Trace History', 
     2330            'Show obspy history of trace.', self.OnTraceHistory ) 
    23172331        controlMenu.AppendSeparator() 
    23182332        self.addEntry( controlMenu, 'Open Parameter Window', 
     
    24492463        _sendShCommand( 'stw %g %g' % self._zoomwdw ) 
    24502464 
     2465    def OnMoveTimeWindowRight( self, e ): 
     2466        "plotterWindow: display menu entry." 
     2467        timewindow = get_runtime("timewindow") 
     2468        if timewindow == None: 
     2469            return 
     2470        diff = timewindow[1] - timewindow[0] 
     2471        timewindow[0] += diff/2. 
     2472        timewindow[1] += diff/2. 
     2473        _sendShCommand( 'stw %g %g' % (timewindow[0],timewindow[1]) ) 
     2474 
     2475    def OnMoveTimeWindowLeft( self, e ): 
     2476        "plotterWindow: display menu entry." 
     2477        timewindow = get_runtime("timewindow") 
     2478        if timewindow == None: 
     2479            return 
     2480        diff = timewindow[1] - timewindow[0] 
     2481        timewindow[0] -= diff/2. 
     2482        timewindow[1] -= diff/2. 
     2483        _sendShCommand( 'stw %g %g' % (timewindow[0],timewindow[1]) ) 
     2484 
    24512485    def OnDelTimeWindow( self, e ): 
    24522486        "plotterWindow: display menu entry." 
     
    25112545    def OnReadDataFile( self, e ): 
    25122546        "plotterWindow: file menu entry,  read one or more data files." 
    2513         style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST 
     2547        #style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST 
     2548        style = wx.FD_OPEN 
    25142549        dlg = wx.FileDialog( self, "Select Data File", defaultDir=os.getcwd(), 
    25152550            style=style ) 
     
    28972932    def OnClearAllParameters( self, e ): 
    28982933        _sendShCommand( 'shx_menu_reset_all' ) 
     2934     
     2935    def OnTraceHistory( self, e ): 
     2936        "plotterWindow: control menu entry." 
     2937        if not self._seltrace: 
     2938            self.showMessage( "No trace selected", error=True ) 
     2939            return 
     2940        trc = traces_from_list("%d" % self._seltrace) 
     2941        for pstep in trc[0].stats.processing: 
     2942            print pstep 
     2943            print 
    28992944         
    29002945    def OnRecoverTracesAndParams( self, e ): 
     
    30013046        _sendShCommand( cmd ) 
    30023047     
     3048    def OnMagnMlZAnalytic( self, e ): 
     3049        "plotterWindow: magnitude menu entry." 
     3050        if self._seltrace: 
     3051            cmd = "@MAGNITUDE determine mlz 1-%d Pg,Sg,Pn,Sn 8" % self._seltrace 
     3052        else: 
     3053            cmd = "@MAGNITUDE determine mlz all Pg,Sg,Pn,Sn 8" 
     3054        _sendShCommand( cmd ) 
     3055     
    30033056    def OnMagnMlAnalyticSingle( self, e ): 
    30043057        "plotterWindow: magnitude menu entry." 
     
    30113064            return 
    30123065        cmd = "magnitude determine ml %d %g %g" % (self._seltrace,timea,timeb) 
     3066        _sendShCommand( cmd ) 
     3067     
     3068    def OnMagnMlZAnalyticSingle( self, e ): 
     3069        "plotterWindow: magnitude menu entry." 
     3070        try: 
     3071            timea, timeb = self._zoomwdw 
     3072        except: 
     3073            timea = timeb = None 
     3074        if timea == None or not self._seltrace: 
     3075            self.showMessage( "No trace selected", error=True ) 
     3076            return 
     3077        cmd = "magnitude determine mlz %d %g %g" % (self._seltrace,timea,timeb) 
    30133078        _sendShCommand( cmd ) 
    30143079     
     
    31553220            except: 
    31563221                return False 
    3157         elif ptype == 'datetime': 
     3222        elif ptype in ('datetime','datetimeN'): 
    31583223            try: 
    31593224                r = toUTCDateTime( result ) 
  • SHX/trunk/SeismicHandler/modules/wxdialog.py

    r1185 r1186  
    113113        self.circlattext_ctrl = wx.TextCtrl(self,value='0.0',size=(60,eh)) 
    114114        self.circlatspin_btn = wx.SpinButton(self,wx.SP_VERTICAL,size=(10,eh)) 
     115        ival = self.ap.getValue('epi_latitude') 
     116        if ival == None: 
     117            ival = 0. 
    115118        self.circlat_fs = FloatSpinner( self.circlattext_ctrl, 
    116             self.circlatspin_btn, -90., 90., 0.1, 
    117             initval=self.ap.getValue('epi_latitude') ) 
     119            self.circlatspin_btn, -90., 90., 0.1, initval=ival ) 
    118120        hbox.Add( self.circlattext_ctrl, 0, wx.ALL, 0 ) 
    119121        hbox.Add( self.circlatspin_btn, 0, wx.ALL, 0 ) 
     
    127129        self.circlontext_ctrl = wx.TextCtrl(self,value='0.0',size=(60,eh)) 
    128130        self.circlonspin_btn = wx.SpinButton(self,wx.SP_VERTICAL,size=(10,eh)) 
     131        ival = self.ap.getValue('epi_longitude') 
     132        if ival == None: 
     133            ival = 0. 
    129134        self.circlon_fs = FloatSpinner( self.circlontext_ctrl, 
    130             self.circlonspin_btn, -180., 180., 0.1, 
    131             initval=self.ap.getValue('epi_longitude') ) 
     135            self.circlonspin_btn, -180., 180., 0.1, initval=ival ) 
    132136        hbox.Add( self.circlontext_ctrl, 0, wx.ALL, 0 ) 
    133137        hbox.Add( self.circlonspin_btn, 0, wx.ALL, 0 ) 
     
    141145        self.circradtext_ctrl = wx.TextCtrl(self,value='0.0',size=(60,eh)) 
    142146        self.circradspin_btn = wx.SpinButton(self,wx.SP_VERTICAL,size=(10,eh)) 
     147        ival = self.ap.getValue('sta_radius') 
     148        if ival == None: 
     149            ival = 0. 
    143150        self.circrad_fs = FloatSpinner( self.circradtext_ctrl, 
    144151            self.circradspin_btn, 0., 90., 0.1, 
    145             initval=self.ap.getValue('sta_radius') ) 
     152            initval=ival ) 
    146153        hbox.Add( self.circradtext_ctrl, 0, wx.ALL, 0 ) 
    147154        hbox.Add( self.circradspin_btn, 0, wx.ALL, 0 ) 
Note: See TracChangeset for help on using the changeset viewer.