def _read_footer(file): """ Loads and parses the source file's xml footer metadata to an 'untangle' object. """ footer_pos = read_at(file, 678, 8, np.uint64)[0] file.seek(footer_pos) xmltext = file.read() parser = untangle.make_parser() sax_handler = untangle.Handler() parser.setContentHandler(sax_handler) parser.parse(StringIO(xmltext)) loaded_footer = sax_handler.root return loaded_footer
def quick_loader_with_stats(snippet, spec): '''snippet is either bkg or counts''' spe = spec[snippet]['spe'] frames = spec['frames_to_save'] reps = spec['reps'] sensor_width = spec['sensor_width'] frames_per_rep = spec['frames_per_rep'] with open(os.path.join(spe['dir'], spe['fname'])) as file: # load frames, and compute statistics file.seek(4100) dtype = [('', np.uint16) for i in range(sensor_width)] + [('', np.uint64), ('', np.uint64), ('', np.uint64)] data = np.fromfile(file, dtype, count=frames) counts = np.array([ np.mean((data['f%d' % i]).reshape(reps, frames_per_rep), axis=0) for i in range(sensor_width) ]).T counts_std = np.array([ np.std((data['f%d' % i]).reshape(reps, frames_per_rep), axis=0) for i in range(sensor_width) ]).T / np.sqrt(spec['reps']) timetags = np.array( [data['f%d' % i] for i in range(sensor_width, sensor_width + 2)]).T # fullframes = np.array([(data['f%d'%i]).reshape(reps,frames_per_rep) for i in range(sensor_width)]).T # load wavelength info from footer file.seek(678) footer_pos = np.fromfile(file, np.uint64, 8)[0] #read_at(file, 678, 8, np.uint64)[0] file.seek(footer_pos) xmltext = file.read() parser = untangle.make_parser() sax_handler = untangle.Handler() parser.setContentHandler(sax_handler) parser.parse(StringIO(xmltext)) loaded_footer = sax_handler.root wavelength_string = StringIO(loaded_footer.SpeFormat.Calibrations. WavelengthMapping.Wavelength.cdata) wavelength = np.loadtxt(wavelength_string, delimiter=',') return counts, timetags, wavelength, counts_std
def parse_file(file): parser = untangle.make_parser() sax_handler = untangle.Handler() parser.setContentHandler(sax_handler) parser.parse(file) return sax_handler.root
def test_cdata(self): h = untangle.Handler() h.startElement('foo', {}) h.characters('baz') self.assertEquals('baz', h.root.children[0].cdata)
def test_handler(self): h = untangle.Handler() h.startElement('foo', {}) h.endElement('foo') self.assertEquals('foo', h.root.children[0]._name)
def test_empty_handler(self): h = untangle.Handler() self.assertRaises(IndexError, h.endElement, 'foo') self.assertRaises(IndexError, h.characters, 'bar')
def test_cdata(self): h = untangle.Handler() h.startElement("foo", {}) h.characters("baz") self.assertEqual("baz", h.root.children[0].cdata)