Changeset 142


Ignore:
Timestamp:
08/19/2009 06:29:41 PM (14 years ago)
Author:
marcus
Message:
  • Trace update
  • test for "sum" issue (resulting trace never has a length greater than 100 seconds)
Location:
SHX/trunk/src/SeismicHandler
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • SHX/trunk/src/SeismicHandler/core/modules/Trace.py

    r139 r142  
    6060 
    6161    def __len__(self): 
    62         return self.delta * self.length  
    63      
     62        """return length of trace in milliseconds""" 
     63         
     64        return self.delta * self.length * 1000 
     65 
    6466    def __getattr__(self, name): 
    6567        """allow access to trace metadata by querying as attribute 
     
    125127            return False 
    126128 
    127         self.logger.info("updating from memory block, trace id %s" % self.id) 
     129        self.logger.info("updating from memory block, trace id %s, address %u" % (self.id, self.address)) 
    128130 
    129131        mb = kwargs.get("memblc") 
     
    180182    traces = [] 
    181183    tracedata = {} 
     184    progress = 0 
    182185 
    183186    def __init__(self): 
     
    188191 
    189192    def __getitem__(self, number): 
    190         return self.tracedata[self.traces[number]] 
     193        return self.tracedata[self.traces[number-1]] 
    191194 
    192195    def update(self, event=None): 
     196        if self.progress: 
     197            self.logger.debug("update already running, skip!") 
     198        else: 
     199            self.progress = 1 
     200 
    193201        # refresh root pointer 
    194202        slib = self.sh 
     
    209217 
    210218        addresses = [] 
    211         old_addresses = self.traces 
     219        # save copy(!) of already known addresses 
     220        old_addresses = self.traces[:] 
    212221 
    213222        p = root.pm[0] 
     
    230239 
    231240        for addr in gone: 
    232             # clean up 
    233             self.tracedata[addr].delete() 
    234             # delete reference 
    235             del self.tracedata[addr] 
     241            # may we get a trigger for a already deleted traces 
     242            try: 
     243                # clean up 
     244                self.tracedata[addr].delete() 
     245                # delete reference 
     246                del self.tracedata[addr] 
     247            except KeyError: 
     248                pass 
     249 
    236250            del self.traces[self.traces.index(addr)] 
     251 
     252        self.progress = 0 
    237253 
    238254        self.logger.debug("new traces: %s" % new) 
     
    250266    # create 2 hours of synthetic data (100 Hz) 
    251267    # position set by counter 
    252     for i in range(2): 
     268    for i in range(5): 
    253269        Run("CREATE SHARP 0.05 100 1. %u .1 .5" % (10+i*6)) 
    254270#        Run("create sharp 0.1 7200 1 %u 0.005 .05" % 5**(i+1)) 
  • SHX/trunk/src/SeismicHandler/tests/test_traces.py

    r139 r142  
    1212        Run("cresharp") 
    1313        self.traces = Traces() 
    14         self.trace = self.traces[0] 
     14        # count starts from one! 
     15        self.trace = self.traces[1] 
    1516 
    1617    def tearDown(self): 
     
    164165 
    165166    def testInfoEntriesPyChars(self): 
    166         # set values via python - only one (e.g. comp missing => defaults to  
     167        # set values via python - only one (e.g. comp missing => defaults to 
    167168        # null byte character 
    168169        self.trace.chan1 = "E" 
     
    190191            self.fail("non existing failure") 
    191192 
     193    def testSumCommand(self): 
     194        # this test fails for some reason 
     195        # the summed trace has *never* a length greater 100 seconds 
     196         
     197        EventManager.block(Event(EventManager.REDRAW)) 
     198         
     199        seconds, delta = 110., 0.01 
     200         
     201        Run("del 1") 
     202        # create 2 identical synthetics with "seconds" length, 1/"delta" Hz  
     203        for i in xrange(2): 
     204            Run("CREATE SHARP %.2f %u 1. 15. .1 .5" % (delta, seconds)) 
     205             
     206        Run("sum all") 
     207         
     208#        Run("fili f BP_2S_10HZ_4") 
     209#        Run("filter f 1") 
     210             
     211        EventManager.unblock(Event(EventManager.REDRAW)) 
     212         
     213        for i in range(len(self.traces)): 
     214            print i 
     215            trc = self.traces[i+1] 
     216            self.assertAlmostEqual(trc.delta, delta, 6) 
     217            self.assertEqual(trc.length, seconds/delta) 
     218            self.assertAlmostEqual(len(trc)/1000., seconds, 1) 
     219              
    192220def suite(): 
    193221    return unittest.makeSuite(eventsTestCase, 'test') 
Note: See TracChangeset for help on using the changeset viewer.