예제 #1
0
 def test_pop(self):
     """
     Tests pop method of AttribDict class.
     """
     ad = AttribDict()
     ad.test = 1
     ad['test2'] = 'test'
     # removing via pop
     temp = ad.pop('test')
     self.assertEquals(temp, 1)
     self.assertFalse('test' in ad)
     self.assertTrue('test2' in ad)
     self.assertFalse('test' in ad.__dict__)
     self.assertTrue('test2' in ad.__dict__)
     self.assertFalse(hasattr(ad, 'test'))
     self.assertTrue(hasattr(ad, 'test2'))
     # using pop() for not existing element raises a KeyError
     self.assertRaises(KeyError, ad.pop, 'test')
예제 #2
0
def dataset2trace(dataset, headonly=False):
    """Load trace from dataset."""
    stats = AttribDict(dataset.attrs)
    for key, val in stats.items():
        # decode bytes to utf-8 string for py3
        if isinstance(val, bytes):
            stats[key] = val = val.decode('utf-8')
        if _is_utc(val):
            stats[key] = UTC(val)
        elif key == 'processing':
            # this block is only necessary for files written with old obspyh5
            # versions (< 0.5.0)
            stats[key] = json.loads(val)
    jsondata = stats.pop('_json', None)
    if jsondata is not None:
        for k, v in json.loads(jsondata).items():
            stats[k] = v
    if headonly:
        stats['npts'] = len(dataset)
        trace = Trace(header=stats)
    else:
        trace = Trace(data=dataset[...], header=stats)
    return trace