Changeset 1070


Ignore:
Timestamp:
12/31/15 15:43:37 (4 years ago)
Author:
klaus
Message:

fixed really slow trace_index routine

Location:
SHX/trunk/SeismicHandler
Files:
4 edited

Legend:

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

    r1066 r1070  
    157157        self.spectimer = 0. 
    158158        self.specmark = None 
     159        self.speccnt = 0 
     160        self.speclocked = False 
     161        self.speclockcnt = 0 
    159162    def lock( self, name ): 
    160163        self.locked.append( name ) 
     
    168171            print "TimeStore: could not remove lock '%s'" % name 
    169172    def timer_on( self ): 
     173        if self.speclocked: 
     174            self.speclockcnt += 1 
     175            return 
    170176        self.specmark = time.time() 
     177        self.speccnt += 1 
    171178    def timer_off( self ): 
    172179        if self.specmark != None: 
    173180            self.spectimer += (time.time() - self.specmark) 
    174181        self.specmark = None 
     182        self.speclocked = False 
    175183    def dump( self, sumroot=[] ): 
    176184        for name in sorted(self.timedict.keys()): 
     
    190198                        runsum += self.timedict[name] 
    191199                print "%s : %7.4f" % (root,runsum) 
    192         print "spec timer: %7.4f" % self.spectimer 
     200        print "spec timer: %7.4f (cnt:%d,locked:%d)" \ 
     201            % (self.spectimer,self.speccnt,self.speclockcnt) 
    193202        print "maxlocklength: %d" % self.maxlocklength 
    194203 
  • SHX/trunk/SeismicHandler/modules/traces.py

    r1060 r1070  
    77import numpy as np 
    88from obspy.core.util import AttribDict 
    9 from SeismicHandler.basics import Singleton 
     9from SeismicHandler.basics import Singleton, timeit, timestore 
    1010from SeismicHandler.basics.messages import log_message, subscribe_event 
    1111# disabled: _set_runtime_var 
     
    3636            raise AttributeError(name) 
    3737 
     38    #@timeit 
    3839    def addreplace(self, stream, applyGain=False): 
    3940        """ 
     
    8081                msg = "Applied gain factor of %f to %s" 
    8182                log_message("debug.traces", msg % (gain, t.id)) 
    82  
     83         
    8384        self.traces.visible += stream 
    8485        self.traces.created.clear() 
     
    8687        self.updateCounter() 
    8788 
     89    #@timeit 
    8890    def updateCounter(self): 
    8991        dsptrcs = len(self.traces.visible) 
     
    9799        set_tottrcs( dsptrcs+hidtrcs ) 
    98100 
     101    #@timeit 
    99102    def visible_index(self, trace): 
    100103        """ 
     
    104107 
    105108 
     109#@timeit 
    106110def traces_from_list(selection): 
    107111    """ 
     
    190194 
    191195 
     196#@timeit 
    192197def expandTracelist(selection): 
    193198    """ 
     
    232237 
    233238 
     239#@timeit 
    234240def new_starttime(src, dst, offset): 
    235241    """ 
     
    245251 
    246252 
     253#@timeit 
    247254def new_trace_data(length, zero=False): 
    248255    """ 
     
    264271 
    265272 
     273#@timeit 
    266274def invalidate_all_traces(payload=None): 
    267275    """ 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1069 r1070  
    1414from SeismicHandler.core import Traces 
    1515from SeismicHandler.basics.codes import NAME, VERSION 
    16 from SeismicHandler.basics.tools import AttributeBlock 
     16from SeismicHandler.basics.tools import AttributeBlock, timeit 
    1717from obspy.core import read, UTCDateTime 
    1818from obspy.sh.core import fromUTCDateTime 
     
    4141    functions. 
    4242    """ 
     43    #@timeit 
    4344    def __init__(self, parent, fnames=[]): 
    4445        SP.ScrolledPanel.__init__(self, parent, style=wx.BORDER_SIMPLE) 
     
    362363 
    363364    # helper functions 
     365    #@timeit 
    364366    def ScreenToRelativeTime(self, x, y): 
    365367        """ 
     
    405407        return t 
    406408 
     409    #@timeit 
    407410    def ScreenToTraceAndTime(self, x, y): 
    408411        """ 
     
    476479        return trace, timestamp 
    477480 
     481    #@timeit 
    478482    def TraceAndTimeToScreen(self, trace, time): 
    479483        """ 
     
    521525        return x, y 
    522526 
     527    #@timeit 
    523528    def load(self, fnames=[]): 
    524529        """ 
     
    567572#        msgs.sendMessage('notify.tracecount', count=len(self.traces)) 
    568573 
     574    #@timeit 
    569575    def _setup(self): 
    570576        w, h = self.GetClientSize() 
     
    580586            self.SetScrollRate(20, 0) 
    581587 
     588    #@timeit 
    582589    def _captureMouse(self, evt): 
    583590        self.CaptureMouse() 
     
    591598        self._debug("mouse captured at", self.dragStart) 
    592599 
     600    #@timeit 
    593601    def _releaseMouse(self, evt): 
    594602        self.ReleaseMouse() 
     
    603611        self._debug("mouse released") 
    604612 
     613    #@timeit 
    605614    def _drawPicksAndZoom(self): 
    606615        """ 
     
    666675        #del odc 
    667676 
     677    #@timeit 
    668678    def _drawTraces(self): 
    669679        """ 
     
    978988        canvas.SelectObject(wx.NullBitmap) 
    979989 
     990    #@timeit 
    980991    def save_shot(self, dc): 
    981992        """ 
     
    9941005        log_message("info", "screen dump saved in: %s" % self.do_screenshot) 
    9951006     
     1007    #@timeit 
    9961008    def niceNumbers( self, start, end, pixwidth, parts ): 
    9971009        "2150 surf min" 
     
    10201032        log_message('debug.wx', " ".join([str(i) for i in args])) 
    10211033 
     1034    #@timeit 
    10221035    def _resetTimeRange(self, **kwargs): 
    10231036        """ 
     
    10641077        self.timewindow = get_runtime("timewindow") 
    10651078 
     1079    #@timeit 
    10661080    def __zoombox(self, dc, start, end, midpoint, color="DARKORANGE", size=1): 
    10671081        marginfactor = 0.3 
  • SHX/trunk/SeismicHandler/patches/obspy_.py

    r1069 r1070  
    1414import numpy as np 
    1515import math 
     16import uuid 
    1617from obspy.core import Stream, Trace 
    1718from obspy.core.util import AttribDict 
     
    2223from SeismicHandler.core import Traces, Hidden 
    2324from SeismicHandler.utils import nearest_int 
     25from SeismicHandler.basics import timeit, timestore 
    2426 
    2527__all__ = [] 
    2628 
    2729 
     30#@timeit 
    2831def _stream_auto_merge(self, *args, **kwargs): 
    2932    """ 
     
    4851            log_message("debug.auto_merge", E) 
    4952 
     53#@timeit 
    5054def stream_auto_merge_init(self, *args, **kwargs): 
    5155    self.__shx_init__(*args, **kwargs) 
    5256    _stream_auto_merge(self) 
    5357 
     58#@timeit 
    5459def trace_prepare_image_data(self, width, height, timewindow=None, zoom=1, 
    5560                                           norm="window", norm_amplitude=None): 
     
    196201    self.shx.PlotPixels = pixel_width 
    197202 
     203#@timeit 
    198204def trace_init(self, *args, **kwargs): 
    199205    self.__shx_init__(*args, **kwargs) 
     
    213219    self.establish() 
    214220 
     221#@timeit 
    215222def trace_invalidate_cache(self): 
    216223    """ 
     
    225232 
    226233 
     234#@timeit 
    227235def trace_get_info(self, name, default=None): 
    228236    """ 
     
    279287    if name == "LENGTH_TIME": 
    280288        return self.stats.endtime - self.stats.starttime 
     289     
     290    if name == "INDEX": 
     291        return self.index(True) 
    281292 
    282293    # inside additional headers 
     
    296307        return default 
    297308 
     309#@timeit 
    298310def trace_set_info(self, name, value): 
    299311    """ 
     
    335347            self.stats.sh[name] = value 
    336348 
     349#@timeit 
    337350def trace_is_hidden(self): 
    338351    parent = getattr(self.shx, "_parent", None) 
     
    342355        return 0 
    343356 
     357#@timeit 
    344358def trace_establish(self): 
    345359    """ 
     
    362376    self.stats.sh.USFLG1 = False 
    363377    self.stats.sh.USFLG2 = False 
     378    self.stats.sh.UNIQUE_ID = uuid.uuid4().hex 
    364379 
    365380    # unknown 
     
    387402    self.data = np.require(self.data, "float32") 
    388403 
     404#@timeit 
    389405def trace_index(self, one=False): 
    390406    """ 
    391407    Return trace position within parent's list. If "one" is set to True, 
    392     numbering will start at 1. 
    393     """ 
    394     idx = self.shx._parent.traces.index(self) 
     408    numbering will start at 1 otherwise at 0. 
     409    Functionality unclear, KS. 
     410    """ 
     411    # the following code is incredibly slow 
     412    #idx = self.shx._parent.traces.index(self) 
     413    # much faster is 
     414    for i in range(len(self.shx._parent.traces)): 
     415        #print "dbg:", i, self.shx._parent.traces[i].stats.sh.UNIQUE_ID, self.stats.sh.UNIQUE_ID 
     416        if self.shx._parent.traces[i].stats.sh.UNIQUE_ID == self.stats.sh.UNIQUE_ID: 
     417            idx = i 
     418            break 
     419    else: 
     420        #print "dbg: trace_index: this cannot happen" 
     421        idx = 0 
    395422    if one: 
    396423        idx += 1 
    397424    return idx 
    398425 
     426#@timeit 
    399427def trace_get_datawindow(self, lo, hi): 
    400428    """ 
     
    404432    return t.data 
    405433 
     434#@timeit 
    406435def trace_slice_relative(self, lo, hi): 
    407436    """ 
     
    423452    return self.slice(start, end) 
    424453 
     454#@timeit 
    425455def trace_get_sample_id(self, time, check=True): 
    426456    """ 
     
    442472    return index 
    443473 
     474#@timeit 
    444475def trace_copy(self): 
    445476    """ 
     
    461492        # new.shx.original = None 
    462493    new.shx._parent = parentstore 
     494    new.stats.sh.UNIQUE_ID = uuid.uuid4().hex 
    463495    #new.shx._established = False 
    464496 
Note: See TracChangeset for help on using the changeset viewer.