Changeset 529


Ignore:
Timestamp:
02/02/2012 03:50:14 PM (12 years ago)
Author:
marcus
Message:
  • accept tailing comment within command line
  • access to trace info entries
Location:
SHX/trunk/SeismicHandler
Files:
1 added
5 edited

Legend:

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

    r469 r529  
    2222"""module for SHX exceptions""" 
    2323 
    24 from SeismicHandler.basics.messages import MessageSystem as msgs 
     24from SeismicHandler.basics.messages import MessageSystem as msgs, setStatus 
    2525 
    2626__all__ = ['ShxError'] 
     
    4848    def __init__(self, value): 
    4949        self.value = value 
     50        setStatus(1) 
    5051        Error.__init__(self) 
    5152 
  • SHX/trunk/SeismicHandler/bin/SH

    r496 r529  
    22 
    33""" 
    4 Helper script for executing SH scripts. In future this will also offer an 
    5 interactive command line interface. 
     4Helper script for executing SH scripts and interactive usage. 
    65""" 
    76 
  • SHX/trunk/SeismicHandler/config/runtime.py

    r490 r529  
    3333import warnings 
    3434from SeismicHandler.basics import Property, Singleton, AttribDict 
    35 from SeismicHandler.basics.messages import msgs 
     35from SeismicHandler.basics.messages import msgs, logMessage 
    3636 
    3737 
     
    243243 
    244244    def _setRuntimeVar(self, name, value): 
     245        logMessage( 
     246            "debug.runtime", 
     247            "Received internal update for '%s' (%s)" % (name, str(value)) 
     248        ) 
    245249        self.Runtime[name] = value 
    246250 
  • SHX/trunk/SeismicHandler/modules/parse.py

    r491 r529  
    116116    re_file = " (/\w+)+ ?" 
    117117 
    118     def __init__(self, input, switches=None): 
     118    def __init__(self, input_string, switches=None): 
    119119        if switches is None: 
    120120            switches = Switches() 
    121121 
    122122        self.switches = switches 
    123         self.input = input 
     123        # treat everything after ! as comment 
     124        input_string = input_string.split("!")[0] 
     125        self.input = input_string 
    124126 
    125127        converted = False 
     
    127129            # If a command starts with @, no conversion to upper case is 
    128130            # performed but the indicator char is removed. 
    129             if input.startswith("@"): 
    130                 input = input[1:] 
     131            if input_string.startswith("@"): 
     132                input_string = input_string[1:] 
    131133            else: 
    132                 input = input.upper() 
     134                input_string = input_string.upper() 
    133135                converted = True 
    134136 
     
    137139        f = re.compile(self.re_file) 
    138140 
    139         cmd = c.search(input).group(0) 
    140         qual = q.findall(input) 
     141        cmd = c.search(input_string).group(0) 
     142        qual = q.findall(input_string) 
    141143 
    142144        # guess file 
    143145        try: 
    144             sfile = f.search(input).group(0).strip() 
     146            sfile = f.search(input_string).group(0).strip() 
    145147        except: 
    146148            sfile = None 
     
    148150        qualifiers = {} 
    149151        # remove cmd and qualifiers from string 
    150         cmd_par = input.replace(cmd, "") 
     152        cmd_par = input_string.replace(cmd, "") 
    151153        for qq in qual: 
    152154            cmd_par = cmd_par.replace(qq, "") 
     
    179181        self._parsed = { 
    180182            "shx_input": self.input, 
    181             "shx_input_conv": input, 
     183            "shx_input_conv": input_string, 
    182184            "shx_command": cmd.lower(), # command always in lower case 
    183185            "shx_converted": converted, # indicates cap conversion 
     
    498500 
    499501    def commandQuit(self, *args): 
     502        if not args: 
     503            yesno = raw_input("  Leave program [yN]? ") 
     504        else: 
     505            yesno = args[0] 
     506 
    500507        msgs.sendMessage("command.run", cmd="quit") 
    501         quit() 
     508        if yesno.lower() == "y": 
     509            quit() 
    502510 
    503511    def commandIf(self, cmd): 
     
    720728 
    721729    def __handleTrace(self, name): 
    722         raise NotImplementedError 
     730        try: 
     731            name, traceno = name.split("(") 
     732            traceno = int(traceno.split(")")[0]) 
     733        except: 
     734            traceno = 1 
     735 
     736        try: 
     737            # internal counting starts from zero 
     738            trace = Traces[traceno - 1] 
     739        except: 
     740            logMessage("error.parse", "Trace number %u not present" % traceno) 
     741 
     742        try: 
     743            res = trace._shxInfo(name) 
     744            return res 
     745        except NameError: 
     746            logMessage("error.trace", "undefined info entry name '%s'" % name) 
    723747 
    724748    def __handleOption(self, name): 
  • SHX/trunk/SeismicHandler/patches/ObsPy.py

    r469 r529  
    3131from obspy.core import Stream, Trace 
    3232from obspy.core.util import AttribDict 
    33 from SeismicHandler.basics.messages import logMessage 
     33from obspy.sh.core import fromUTCDateTime 
     34from SeismicHandler.basics.messages import logMessage, setStatus 
    3435 
    3536__all__ = [] 
     
    211212    self.shx = AttribDict() 
    212213 
     214def traceGetStatusInfo(self, name): 
     215    """ 
     216    Mapping of Seismic Handler trace information entries to ObsPy status info. 
     217    """ 
     218    name = name.lower() 
     219 
     220    # identical name 
     221    if name in self.stats: 
     222        return self.stats[name] 
     223 
     224    # mapping 
     225    if name == "length": 
     226        return self.stats.npts 
     227 
     228    if name == "chan1": 
     229        return self.stats.channel[0] 
     230 
     231    if name == "chan2": 
     232        return self.stats.channel[1] 
     233 
     234    if name == "comp": 
     235        return self.stats.channel[2] 
     236 
     237    if name == "start": 
     238        return fromUTCDateTime(self.stats.starttime) 
     239 
     240    # finally look into self defined entries 
     241    if name in self.shx: 
     242        return self.shx[name] 
     243 
     244    raise NameError 
     245 
    213246# monkey patching obspy stream class: traces are merge automatically if stream 
    214247# get's altered. 
     
    223256Trace.__shx_init__, Trace.__init__ = Trace.__init__, traceAddShxInit 
    224257Trace._shxPrepareImageData = tracePrepareDataForImage 
     258Trace._shxInfo = traceGetStatusInfo 
Note: See TracChangeset for help on using the changeset viewer.