Changeset 926


Ignore:
Timestamp:
03/27/13 18:27:20 (6 years ago)
Author:
marcus
Message:
  • working on caching
Location:
SHX/trunk/SeismicHandler
Files:
3 edited

Legend:

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

    r922 r926  
    55#    http://www.seismic-handler.org/portal/wiki/Shx/LicenseTerms 
    66 
     7import os 
    78from SeismicHandler.basics.command import BaseCommand 
    89from SeismicHandler.modules.traces import add_traces 
     10from SeismicHandler.modules.miniseed import miniseed 
    911from SeismicHandler.basics.messages import log_message 
    1012from SeismicHandler.basics.error import ShxError 
     
    3941    known_qualifiers = [ 
    4042        "HOST", 
    41         "NOCACHE", 
     43        "USECACHE", 
    4244        "SAVE", 
    4345        "USER", 
    4446        "PASSWORD", 
     47        "STOREMETA", 
    4548    ] 
    4649 
     
    8588            raise ShxError("Malformed waveform length parameter!") 
    8689 
     90        # read from own cache / no support for wildcards 
     91        if self.qualifiers["USECACHE"]: 
     92            k = ["network", "station", "location", "channel", "start"] 
     93            param2 = dict(zip(k, param[:5])) 
     94            param2["sds"] = Settings.config.paths.cache[0] 
     95            st = miniseed(**param2) 
     96 
    8797        # format, compression, metadata, routing 
    8898        param.extend(['MSEED', True, True, False]) 
     
    93103            if Settings.swChatty: 
    94104                print msg 
    95         except: 
     105        except Exception as E: 
     106            print E 
    96107            raise ShxError("Data could not be fetched remotely.") 
     108 
     109        # save into cache 
     110        if self.qualifiers["SAVE"]: 
     111            # <SDSdir>/<YEAR>/<NET>/<STA>/<CHAN.TYPE>/NET.STA.LOC.CHAN.TYPE.YEAR.DAY 
     112            for t in st: 
     113                elems = [ 
     114                    Settings.config.paths.cache[0], 
     115                    "%u" % t.stats.starttime.year, 
     116                    t.stats.network, 
     117                    t.stats.station, 
     118                    ".".join([t.stats.channel, "D"]), 
     119                ] 
     120                folder = os.path.join(*elems) 
     121                fname = "%s.D.%u.%03u" % ( 
     122                    t.id, 
     123                    t.stats.starttime.year, 
     124                    t.stats.starttime.julday 
     125                ) 
     126 
     127                # don't overwrite existing files -> add index 
     128                i = 1 
     129                fname2 = fname 
     130                while os.path.exists(os.path.join(folder, fname2)): 
     131                    fname2 = "%s_%u" % (fname, i) 
     132                    i += 1 
     133 
     134                if not os.path.exists(folder): 
     135                    os.makedirs(folder) 
     136 
     137                t.write(os.path.join(folder, fname2), format="MSEED", 
     138                                                            encoding="FLOAT32") 
    97139         
    98         add_traces(st) 
     140        if self.qualifiers["STOREMETA"]: 
     141            pass 
     142 
     143        add_traces(st, True) 
    99144 
    100145 
  • SHX/trunk/SeismicHandler/modules/miniseed.py

    r650 r926  
    3030 
    3131        if kwargs.get("sds", None): 
    32             return super(cls, sdsStruture).__new__(sdsStruture) 
     32            return super(cls, sdsStructure).__new__(sdsStructure) 
    3333 
    3434        return super(cls, sfdDatabase).__new__(sfdDatabase) 
     
    245245    def __init__(self, *args, **kwargs): 
    246246        print "sds", kwargs["sds"] 
     247        request = AttribDict(kwargs) 
     248        flist = [] 
     249 
     250        # this doesn't support wildcards! 
     251        folder = os.path.join( 
     252            request.sds, 
     253            "%s" % request.start.year, 
     254            request.network, 
     255            request.station, 
     256            "%s.D" % request.channel, 
     257        ) 
     258 
     259        print folder 
     260 
     261        fname = "%s.%s.%s.%s.D.%u.%03u" % ( 
     262            request.network, 
     263            request.station, 
     264            request.location, 
     265            request.channel, 
     266            request.start.year, 
     267            request.start.julday 
     268        ) 
     269        print fname 
     270        import pdb; pdb.set_trace() 
     271 
    247272 
    248273 
  • SHX/trunk/SeismicHandler/shx.conf

    r923 r926  
    3131# global input data 
    3232globals = [SHX]/_compat/globals/ 
     33# private 
     34private = [PRIVATE] 
     35# cache for fetch command 
     36cache = [PRIVATE]/sds/ 
    3337 
    3438[inventory] 
     
    8286 
    8387[arclink] 
    84 user = walther@szgrf.bgr.de 
     88user = "SHX walther@szgrf.bgr.de" 
    8589host = webdc.eu:18002 
    8690#login = password 
Note: See TracChangeset for help on using the changeset viewer.