Changeset 1071


Ignore:
Timestamp:
12/31/15 18:49:25 (4 years ago)
Author:
klaus
Message:

overlay command (still problems with indices)

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

Legend:

Unmodified
Added
Removed
  • SHX/trunk/SeismicHandler/config/runtime.py

    r1069 r1071  
    7676        # SHX: add new traces or discard old ones, to be altered only globally! 
    7777        "Keeptraces": True, 
     78        # persistent command history (produces memory leak) 
     79        "History": False, 
    7880    }) 
    7981 
  • SHX/trunk/SeismicHandler/core/__init__.py

    r932 r1071  
    3434Created.__doc__ = """ 
    3535Stream of newly created traces. 
     36""" 
     37 
     38Overlays = sh_traces().overlays 
     39Overlays.__doc__ = """ 
     40Overlay lists for traces. 
    3641""" 
    3742 
  • SHX/trunk/SeismicHandler/modules/parse.py

    r1067 r1071  
    594594        Produces memory leak. Disabled. Affects command history. KS. 
    595595        """ 
    596         #cmd = self.__command 
    597         #msgs.sendMessage( 
    598         #    "command.run", 
    599         #    cmd=cmd['shx_input'], 
    600         #    parsed=cmd["shx_input_conv"], 
    601         #    translated=self.switches.Verify and self.__recent or \ 
    602         #                                               "= verify is off =", 
    603         #    args=cmd["shx_parameter"], 
    604         #    kwargs=cmd["shx_qualifiers"] 
    605         #) 
    606         pass 
     596        global history_called 
     597        if self.switches.History: 
     598            if not history_called: 
     599                print 
     600                print "History is enabled. The current code for this leaks memory!" 
     601                print 
     602                history_called = True 
     603            cmd = self.__command 
     604            msgs.sendMessage( 
     605                "command.run", 
     606                cmd=cmd['shx_input'], 
     607                parsed=cmd["shx_input_conv"], 
     608                translated=self.switches.Verify and self.__recent or \ 
     609                                                           "= verify is off =", 
     610                args=cmd["shx_parameter"], 
     611                kwargs=cmd["shx_qualifiers"] 
     612            ) 
    607613 
    608614 
     
    11171123 
    11181124 
     1125history_called = False 
     1126 
    11191127if __name__ == "__main__": 
    11201128    import doctest 
  • SHX/trunk/SeismicHandler/modules/traces.py

    r1070 r1071  
    2929        self.traces.hidden = Stream() 
    3030        self.traces.created = Stream() 
     31        self.traces.overlays = OverlayTraces() 
    3132 
    3233    def __getattr__(self, name): 
     
    107108 
    108109 
     110class OverlayTraces: 
     111    """ 
     112    Store info about traces drawn above others. 
     113    Example: 
     114        overlaydict = {'A':[1,2],'B':[3,4]} 
     115        allidx = [1,2,3,4] 
     116    """ 
     117     
     118    def __init__( self ): 
     119        self.clearOverlays() 
     120         
     121    def numberOfOverlays( self ): 
     122        return (len(self.allidx) - len(self.overlaydict)) 
     123     
     124    def addOverlay( self, idxlist ): 
     125        if len(idxlist) < 2: 
     126            print "should not happen: short overlay list" 
     127            return 
     128        # Check for already specified indices, no index may occur twice. 
     129        for i in idxlist: 
     130            if i in self.allidx: 
     131                print "trace '%s' already in overlay" % i 
     132                return 
     133        self.overlaydict[self.nextname] = idxlist 
     134        self.nextname = chr(ord(self.nextname)+1) 
     135        self.allidx += idxlist 
     136        self.dump() 
     137     
     138    def clearOverlays( self ): 
     139        self.overlaydict = {} 
     140        self.allidx = [] 
     141        self.nextname = 'A' 
     142        self.initPlot() 
     143     
     144    def initPlot( self ): 
     145        self.posdict = {} 
     146        self.posstore = [] 
     147        self.posidx = -1 
     148     
     149    def plotPos( self, trcidx, ypos ): 
     150        if len(self.overlaydict.keys()) == 0: 
     151            return ypos 
     152        self.posstore.append( ypos ) 
     153        for ovk in self.overlaydict.keys(): 
     154            if trcidx in self.overlaydict[ovk]: 
     155                if ovk in self.posdict.keys(): 
     156                    return self.posdict[ovk] 
     157                else: 
     158                    self.posdict[ovk] = ypos 
     159                    self.posidx += 1 
     160                    return self.posstore[self.posidx] 
     161        self.posidx += 1 
     162        return self.posstore[self.posidx] 
     163     
     164    def dump( self ): 
     165        print 'overlay dict', self.overlaydict 
     166        print 'overlay allidx', self.allidx 
     167        print 'overlay pos', self.posdict 
     168         
     169 
     170 
    109171#@timeit 
    110172def traces_from_list(selection): 
  • SHX/trunk/SeismicHandler/modules/wx_.py

    r1070 r1071  
    1212                                            log_message, get_style#, get_runtime 
    1313from SeismicHandler.config import get_runtime 
    14 from SeismicHandler.core import Traces 
     14from SeismicHandler.core import Traces, Overlays 
    1515from SeismicHandler.basics.codes import NAME, VERSION 
    1616from SeismicHandler.basics.tools import AttributeBlock, timeit 
     
    687687            timewindow = self._timewindow 
    688688        width, height = self.GetVirtualSize() 
    689         numTraces = len(self.traces) 
     689        numTraces = len(self.traces) - Overlays.numberOfOverlays() 
    690690        globalnorm = self._normtype.startswith("A") 
    691691 
     
    728728        # should traces overlap or stay within their y-ranges 
    729729        overlapping_traces = get_runtime( "overlapping_traces", True ) 
     730 
     731        # init overlays positions 
     732        Overlays.initPlot() 
    730733 
    731734        # plot every trace 
     
    838841                else: 
    839842                    fac = i 
     843                plotpos = Overlays.plotPos( i+1, fac * theight + MARGINS[0]) 
    840844                canvas.Blit( 
    841845                    plotoffset + STATION_INFO + MARGINS[3],  
    842                     fac * theight + MARGINS[0],  
     846                    plotpos,  
    843847                    pltwidth, 
    844848                    zheight, 
Note: See TracChangeset for help on using the changeset viewer.