Changeset 1136


Ignore:
Timestamp:
21.01.2016 18:03:31 (4 years ago)
Author:
klaus
Message:

save and recover of traces and parameters

Location:
SHX/trunk/SeismicHandler
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/basics/analysispar.py

    r1135 r1136  
    236236        # events 
    237237        'ev_list'         : (100, 'fileN',     'EVENTLIST.STX' ), 
    238         'ev_line'         : (101, 'int',       1), 
     238        'ev_line'         : (101, 'int',       0), 
    239239        'ev_minmagn'      : (102, 'float',     4.5 ), 
    240240        'ev_offset'       : (103, 'float',     60.), 
     
    346346        return ret 
    347347     
    348     def save( self, fname ): 
    349         fp = open( fname, 'w' ) 
     348    def save( self, fname, wopen='w' ): 
     349        fp = open( fname, wopen ) 
    350350        pickle.dump( analysispar.pardict, fp ) 
    351351        pickle.dump( phaselist.phasedict, fp ) 
     352        fp.close() 
     353     
     354    def saveascmd( self, fname, wopen='w' ): 
     355        fp = open( fname, wopen ) 
     356        for pname in self.pardef.keys(): 
     357            val = self.getValueAsString( pname ) 
     358            if val == "": 
     359                val = ';;' 
     360            fp.write( "@PARAM SET %s %s\n" % (pname,val) ) 
     361        for station in phaselist.phasedict.keys(): 
     362            for phase in phaselist.phasedict[station]: 
     363                fp.write( "@PHASE DEFINE %s %s %s %s %s\n" % (station, 
     364                    fromUTCDateTime(phase.picktime),phase.name, 
     365                    phaselist.picktypeName(phase.picktype),phase.comp) ) 
    352366        fp.close() 
    353367     
  • SHX/trunk/SeismicHandler/cmdscripts/SHX_MENU_NEXT_EVENT.SHC

    r1135 r1136  
     1 
     2default 1 1  increment 
    13 
    24sdef evline 
    35sdef evlist 
    46sdef rtime 
     7sdef epilat 
     8sdef epilon 
    59 
    610param get ev_list &evlist 
    711param get ev_line &evline 
     12 
     13calc i &evline = "evline + #1 
    814 
    915if "evline lei %"evlist(0) goto lineok: 
     
    1117    return 
    1218lineok: 
     19if "evline lei 0 return 
     20 
     21param set ev_line "evline 
    1322 
    1423calc s &rtime = %"evlist("evline) parse 1 
    1524param set read_time "rtime 
    16 calc i &evline = "evline + 1 
    17 param set ev_line "evline 
     25 
     26! try to read epicenter 
     27calc s &epilat = %"evlist("evline) parse 2 
     28calc s &epilon = %"evlist("evline) parse 3 
     29if $status gti 0 goto epifailed: 
     30    param set epi_latitude "epilat 
     31    param set epi_longitude "epilon 
     32epifailed: 
    1833 
    1934return 
  • SHX/trunk/SeismicHandler/cmdscripts/UI.SHC

    r1130 r1136  
    33uitrigger openparams 
    44 
     5switch/global history on 
     6 
     7param set epi_latitude -9.6 
     8param set epi_longitude -71.3 
     9param set ev_minmagn 6. 
     10param set ev_agency iris 
     11param set ev_phase p 
     12 
    513return 
  • SHX/trunk/SeismicHandler/commands/fdsnws.py

    r1107 r1136  
    134134                if len(trc.data) < minlth: 
    135135                    empty.append( trc ) 
     136                else: 
     137                    trc.set_info( 'DATASOURCE', "FDSNWS %s" % fdsnadr ) 
    136138            for trc in empty: 
    137139                st.remove( trc ) 
  • SHX/trunk/SeismicHandler/commands/fetch.py

    r1090 r1136  
    110110            msg = "No data found at all for requested stations: %s" 
    111111            log_message("warning.fetch", msg % ", ".join(stations)) 
     112        for trc in final: 
     113            trc.set_info( 'DATASOURCE', 'FETCH' ) 
    112114        add_traces(final, gain=True) 
    113115 
  • SHX/trunk/SeismicHandler/commands/param.py

    r1129 r1136  
    99from SeismicHandler.basics.error import ShxError 
    1010from SeismicHandler.basics.messages import ui_event 
     11from SeismicHandler.modules.traces import traces_from_list 
     12from obspy.sh.core import fromUTCDateTime 
    1113 
    1214provides = {"param": "param"} 
     
    3436    ] 
    3537    known_qualifiers = [ 
     38        "APPEND", 
    3639    ] 
    3740    redraw = False 
    3841     
    3942    legalcmds = { 
    40         'set'  : 3, 
    41         'get'  : 3, 
    42         'dump' : 1, 
    43         'save' : 2, 
    44         'load' : 2, 
    45         'reset': 1, 
     43        'set'        : 3, 
     44        'get'        : 3, 
     45        'dump'       : 1, 
     46        'save'       : 2, 
     47        'saveascmd'  : 2, 
     48        'savetraces' : 2, 
     49        'load'       : 2, 
     50        'reset'      : 1, 
    4651    } 
    4752 
     
    6166        elif len(self.parameters) == 2: 
    6267            subcmd, name = self.parameters 
     68            name = name.replace('\\','/') 
    6369        else: 
    6470            subcmd, name, value = self.parameters 
     
    6672        subcmd = subcmd.lower() 
    6773        analysispar = AnalysisPar() 
     74         
     75        if self.qualifiers["APPEND"]: 
     76            wopen = 'a' 
     77        else: 
     78            wopen = 'w' 
    6879 
    6980        if subcmd == 'set': 
     
    8091            print analysispar.dump() 
    8192        elif subcmd == 'save': 
    82             analysispar.save( name ) 
     93            analysispar.save( name, wopen=wopen ) 
     94        elif subcmd == 'saveascmd': 
     95            analysispar.saveascmd( name, wopen=wopen ) 
    8396        elif subcmd == 'load': 
    8497            analysispar.load( name ) 
     
    88101            analysispar.reset() 
    89102            ui_event( "updateparams" ) 
     103        elif subcmd == 'savetraces': 
     104            saveTraces( name, wopen=wopen ) 
    90105        else: 
    91106            print "This cannot happen, program bug in param.py" 
    92107            return 
     108 
     109 
     110def saveTraces( fname, wopen='w' ): 
     111    savecmd = [] 
     112    for trc in traces_from_list('all'): 
     113        src = trc.get_info('DATASOURCE').split() 
     114        if len(src) == 0: 
     115            continue 
     116        rdcmd = src[0].upper() 
     117        if rdcmd == 'FDSNWS': 
     118            net = trc.stats.network 
     119            if net == "": 
     120                net = ';;' 
     121            loc = trc.stats.location 
     122            if loc == "": 
     123                loc = ';;' 
     124            srv = src[1]  # FDSN server is second word 
     125            tcmd = "fdsnws %s %s %s %s %s %g /addr=%s" % (net,trc.stats.station, 
     126                loc,trc.stats.channel,fromUTCDateTime(trc.stats.starttime), 
     127                (trc.stats.endtime-trc.stats.starttime),srv) 
     128        elif rdcmd == 'FETCH': 
     129            chan = trc.stats.channel[:-1] 
     130            comp = trc.stats.channel[-1] 
     131            tcmd = "fetch %s.%s.%s %s %s %s %g" % (trc.stats.network, 
     132                trc.stats.station,trc.stats.location,chan,comp, 
     133                fromUTCDateTime(trc.stats.starttime), 
     134                (trc.stats.endtime-trc.stats.starttime)) 
     135        elif rdcmd == 'READO': 
     136            tcmd = '@READO %s' % src[1] 
     137        elif rdcmd == 'READ': 
     138            tcmd = '@READ %s' % src[1] 
     139        elif rdcmd == 'READS': 
     140            chan = trc.stats.channel[:-1] 
     141            comp = trc.stats.channel[-1] 
     142            tcmd = 's %s %s %g %s %s %s' % (src[1], 
     143                fromUTCDateTime(trc.stats.starttime), 
     144                (trc.stats.endtime-trc.stats.starttime),trc.stats.station, 
     145                comp,chan) 
     146        else: 
     147            print "unknown data source '%s'" % src 
     148            continue 
     149        if tcmd not in savecmd: 
     150            savecmd.append( tcmd ) 
     151    fp = open( fname, wopen ) 
     152    for cmd in savecmd: 
     153        fp.write( "%s\n" % cmd ) 
     154    fp.close() 
    93155         
    94156 
  • SHX/trunk/SeismicHandler/commands/read.py

    r1063 r1136  
    123123            return final 
    124124        else: 
     125            for trc in final: 
     126                trc.set_info( "DATASOURCE", "READ %s" % filename ) 
    125127            add_traces(final) 
    126128 
  • SHX/trunk/SeismicHandler/commands/reado.py

    r1123 r1136  
    9191        log_message("debug.command.read", "%u new traces" % len(final)) 
    9292 
     93        for trc in final: 
     94            trc.set_info( 'DATASOURCE', 'READO %s' % filename ) 
    9395        add_traces(final) 
    9496 
  • SHX/trunk/SeismicHandler/commands/reads.py

    r1063 r1136  
    160160 
    161161                sel[0].set_info("file", "FROM-SEED-FILE") 
     162                sel[0].set_info( 'DATASOURCE', 'READS %s' % path ) 
    162163                final.extend(sel) 
    163164                #print " -> %s@%s" % (sel.traces[0].stats.channel, s) 
  • SHX/trunk/SeismicHandler/modules/parse.py

    r1101 r1136  
    268268        self.searchpath += Settings.config.paths.scripts 
    269269 
    270         try: 
    271             if hasattr(inputdata, "read"): 
    272                 log_message("info.script", 
    273                     "Reading content from file-like object %s." % str(inputdata) 
    274                 ) 
    275                 stream = inputdata 
    276             elif type(inputdata) == str: 
    277                 # no extension -> add default 
     270        #kstry: 
     271        if hasattr(inputdata, "read"): 
     272            log_message("info.script", 
     273                "Reading content from file-like object %s." % str(inputdata) 
     274            ) 
     275            stream = inputdata 
     276        elif type(inputdata) in (str,unicode): 
     277            # no extension -> add default 
     278            try: 
     279                _ = inputdata.index(".") 
     280            except ValueError: 
     281                inputdata = inputdata + ".SHC" 
     282 
     283            if self.switches.Capcnv: 
     284                inputdata = inputdata.upper() 
     285 
     286            self.filename = inputdata 
     287 
     288            # look for file in search path 
     289            for folder in self.searchpath: 
    278290                try: 
    279                     _ = inputdata.index(".") 
    280                 except ValueError: 
    281                     inputdata = inputdata + ".SHC" 
    282  
    283                 if self.switches.Capcnv: 
    284                     inputdata = inputdata.upper() 
    285  
    286                 self.filename = inputdata 
    287  
    288                 # look for file in search path 
    289                 for folder in self.searchpath: 
    290                     try: 
    291                         stream = open(os.path.join(folder, inputdata), "r") 
    292                         log_message("info.script", 
    293                             "Reading content from file '%s'." % stream.name 
    294                         ) 
    295                     except IOError: 
    296                         pass 
    297                     else: 
    298                         break 
    299  
     291                    stream = open(os.path.join(folder, inputdata), "r") 
     292                    log_message("info.script", 
     293                        "Reading content from file '%s'." % stream.name 
     294                    ) 
     295                except IOError: 
     296                    pass 
     297                else: 
     298                    break 
     299        else: 
     300            print "parse: this cannot happen: type", type(inputdata) 
     301             
     302        try: 
    300303            _ = stream 
    301304        except: 
     
    593596    def __log_command(self): 
    594597        """ 
    595         Produces memory leak. Disabled. Affects command history. KS. 
     598        Produces memory leak. Disabled by default. Affects command history. KS. 
    596599        """ 
    597600        global history_called 
  • SHX/trunk/SeismicHandler/modules/stations.py

    r1127 r1136  
    323323        # reload data base if requested 
    324324        if self.reloadRequested: 
    325             print "dbg: perform requested update on Stations" 
    326325            self.read() 
    327326 
     
    366365        # reload data base if requested 
    367366        if self.reloadRequested: 
    368             print "dbg: perform requested update on Stations" 
    369367            self.read() 
    370368 
     
    486484def triggerDatabaseReload(): 
    487485    "Workaround. To be optimized." 
    488     print "dbg: DB reload triggered" 
    489486    global stations_obj 
    490487    for k in stations_obj.keys(): 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1135 r1136  
    156156        Deletes previous line/rectangle. To only clear old element, pass 
    157157        None-tuples. 
     158        Should also draw into backing store bitmap (self._bitmap). Now, 
     159        a repaint doesn't restore the XOR drawing, resulting in a doubled 
     160        element. 
    158161        """ 
    159162        if mode == 'clear': 
     
    14001403        # array menu 
    14011404        arrayMenu = wx.Menu() 
    1402         self.addEntry( arrayMenu, '&FK\tCtrl+F', 
     1405        self.addEntry( arrayMenu, 'FK', 
    14031406            'Compute FK for all traces on selected time window', self.OnFK ) 
     1407        self.addEntry( arrayMenu, '&FK (Auto Freq)\tCtrl+F', 
     1408            'Compute FK with automatic freq window', self.OnFKAutoFreq ) 
    14041409        self.addEntry( arrayMenu, 'Beam / Del Beam\tB', 
    14051410            'Compute/delete beam for all traces', self.OnBeam ) 
     
    14241429        self.addEntry( eventsMenu, 'Get Eventlist', 
    14251430            'Retrieve event list from FDSN server', self.OnGetEventlist ) 
    1426         self.addEntry( eventsMenu, 'Next Event', 
    1427             'Read next event time from list', self.OnNextEvent ) 
     1431        self.addEntry( eventsMenu, 'Next Event\t1', 
     1432            'Prepare next event time from list', self.OnNextEvent ) 
     1433        self.addEntry( eventsMenu, 'Previous Event\t0', 
     1434            'Prepare previous event time from list', self.OnPrevEvent ) 
    14281435        # control menu 
    14291436        controlMenu = wx.Menu() 
     1437        self.addEntry( controlMenu, 'Save Traces & Params', 
     1438            'Save trace info and parameters into a recovery command file', 
     1439            self.OnSaveTracesAndParams ) 
     1440        self.addEntry( controlMenu, 'Recover Traces & Params', 
     1441            'Recover traces and parameters from a a recovery command file', 
     1442            self.OnRecoverTracesAndParams ) 
     1443        tracesMenu.AppendSeparator() 
    14301444        self.addEntry( controlMenu, 'Open Parameter Window', 
    14311445            'Open parameter dialog', self.OnOpenParams ) 
     
    15511565            ap.getValueAsString( 'readws_server' ), 
    15521566        ) 
     1567        cmd += "\nmeta all complete /addr=%s" \ 
     1568            % ap.getValueAsString('readws_server') 
    15531569        _sendShCommand( cmd )         
    15541570 
     
    15641580            ap.getValueAsString( 'readws_server' ), 
    15651581        ) 
     1582        cmd += "\nmeta all complete /addr=%s" \ 
     1583            % ap.getValueAsString('readws_server') 
    15661584        _sendShCommand( cmd ) 
    15671585     
     
    15941612        _sendShCommand( cmd ) 
    15951613     
     1614    def OnFKAutoFreq( self, e ): 
     1615        if not self._zoomwdw: 
     1616            return 
     1617        timea, timeb = self._zoomwdw 
     1618        if timea == None or timeb == None: 
     1619            return 
     1620        frq = 1./(timeb-timea) 
     1621        ap = AnalysisPar() 
     1622        cmd = "shx_menu_fk %g %g %s %s %s" % (timea,timeb,frq,(10.*frq), 
     1623            ap.getValueAsString('fk_max_slowness')) 
     1624        print "dbg: fkcmd:", cmd 
     1625        _sendShCommand( cmd ) 
    15961626    def OnBeam( self, e ): 
    15971627        if self.flag_beam: 
     
    16301660 
    16311661    def OnNextEvent( self, e ): 
    1632         _sendShCommand( 'shx_menu_next_event' ) 
     1662        _sendShCommand( 'shx_menu_next_event;;' ) 
     1663 
     1664    def OnPrevEvent( self, e ): 
     1665        _sendShCommand( 'shx_menu_next_event -1' ) 
     1666         
     1667    def OnSaveTracesAndParams( self, e ): 
     1668        style = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT 
     1669        dlg = wx.FileDialog( self, "Select Save File", defaultDir=os.getcwd(), 
     1670            style=style, wildcard='*.SHC' ) 
     1671        dlg.ShowModal() 
     1672        outfile = dlg.GetFilename() 
     1673        retcode = dlg.GetReturnCode() 
     1674        dlg.Destroy() 
     1675        if retcode != wx.ID_OK: 
     1676            return 
     1677        sloutfile = outfile.replace("/","\\") 
     1678        cmd = "param savetraces %s\n" % sloutfile\ 
     1679            +"param saveascmd %s /append" % sloutfile 
     1680        print "dbg: cmd:", cmd 
     1681        _sendShCommand( cmd ) 
     1682     
     1683    def OnRecoverTracesAndParams( self, e ): 
     1684        style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST 
     1685        dlg = wx.FileDialog( self, "Select Recovery File", 
     1686            defaultDir=os.getcwd(), style=style, wildcard='*.SHC' ) 
     1687        dlg.ShowModal() 
     1688        recfile = dlg.GetFilename() 
     1689        retcode = dlg.GetReturnCode() 
     1690        dlg.Destroy() 
     1691        if retcode != wx.ID_OK: 
     1692            return 
     1693        slrecfile = recfile.replace('/','\\') 
     1694        if slrecfile.endswith('.SHC'): 
     1695            slrecfile = os.path.splitext(slrecfile)[0] 
     1696        _sendShCommand( slrecfile ) 
    16331697 
    16341698    def redraw(self): 
     
    16431707 
    16441708    def __init__( self, parent ): 
    1645         wx.Dialog.__init__( self, parent, -1, "Parameters", size=(350,650) ) 
     1709        wx.Dialog.__init__( self, parent, -1, "Parameters", size=(350,750) ) 
    16461710        #sizer =  self.CreateTextSizer('Param X') 
    16471711         
  • SHX/trunk/SeismicHandler/patches/obspy_.py

    r1132 r1136  
    411411    self.stats.sh.METASTATUS = 0 
    412412    self.stats.sh.ORIGINAL = isoriginal 
     413    self.stats.sh.DATASOURCE = 'UNKNOWN' 
    413414 
    414415    # unknown 
Note: See TracChangeset for help on using the changeset viewer.