예제 #1
0
    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
예제 #2
0
파일: trpl.py 프로젝트: zia-lab/zialab
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
예제 #3
0
def parse_file(file):
    parser = untangle.make_parser()
    sax_handler = untangle.Handler()
    parser.setContentHandler(sax_handler)
    parser.parse(file)
    return sax_handler.root
예제 #4
0
파일: tests.py 프로젝트: ukrutt/untangle
 def test_cdata(self):
     h = untangle.Handler()
     h.startElement('foo', {})
     h.characters('baz')
     self.assertEquals('baz', h.root.children[0].cdata)
예제 #5
0
파일: tests.py 프로젝트: ukrutt/untangle
 def test_handler(self):
     h = untangle.Handler()
     h.startElement('foo', {})
     h.endElement('foo')
     self.assertEquals('foo', h.root.children[0]._name)
예제 #6
0
파일: tests.py 프로젝트: ukrutt/untangle
 def test_empty_handler(self):
     h = untangle.Handler()
     self.assertRaises(IndexError, h.endElement, 'foo')
     self.assertRaises(IndexError, h.characters, 'bar')
예제 #7
0
 def test_cdata(self):
     h = untangle.Handler()
     h.startElement("foo", {})
     h.characters("baz")
     self.assertEqual("baz", h.root.children[0].cdata)