def save_metadata(self): trial_name = 'trial_{0:04d}'.format(self.trial_counter) file_list = [f for f in os.listdir(self.data_dir) if f.startswith(trial_name)] """ create a document """ doc = odml.Document() """ create dataset section """ ds = odml.Section('datasets', 'dataset') p = odml.Property('files', None) ds.append(p) for f in file_list: p.append('{0:s}/{1:s}'.format(self.data_dir, f)) doc.append(ds) for t in list(self.metadata_tabs.values()): m = t.metadata() if m.type == 'recording': v = odml.Value(self.record_timestamp, dtype='datetime') m.append(odml.Property('StartTime', v)) doc.append(m) for cam_name, cam in list(self.cameras.items()): s = odml.Section(cam_name,'hardware/camera') if not cam.is_raspicam(): v = odml.Value(frames_per_second, unit="Hz") s.append(odml.Property('Framerate', v)) for p, v in list(cam.get_properties().items()): prop = odml.Property(p, v) s.append(prop) doc.append(s) doc.append(self.event_list) print(self.event_list) from odml.tools.xmlparser import XMLWriter writer = XMLWriter(doc) writer.write_file('{0}/{1}.xml'.format(self.data_dir, trial_name))
def save_metadata(self): trial_name = 'trial_{0:04d}'.format(self.trial_counter) file_list = [f for f in os.listdir(self.data_dir) if f.startswith(trial_name)] # create a document doc = odml.Document() # create dataset section ds = odml.Section('datasets', 'dataset') p = odml.Property('files', None) ds.append(p) for f in file_list: p.append('{0:s}/{1:s}'.format(self.data_dir, f)) doc.append(ds) for t in self.metadata_tabs.values(): m = t.metadata() if m.type == 'recording': m.append(odml.Property('StartTime', self.record_timestamp)) doc.append(m) for cam_name, cam in self.cameras.items(): s = odml.Section(cam_name,'hardware/camera') s.append(odml.Property('Framerate', frames_per_second, dtype='int', unit='Hz')) for p, v in cam.get_properties().items(): prop = odml.Property(p, v) s.append(prop) doc.append(s) doc.append(self.event_list) from odml.tools.xmlparser import XMLWriter writer = XMLWriter(doc) writer.write_file('{0}/{1}.xml'.format(self.data_dir, trial_name))
def test_read_write(self): doc = Document("author") sec = Section("name", "type") doc.append(sec) sec.append(Property("strprop", "somestring")) sec.append(Property("txtprop", "some\ntext")) sec.append(Property("intprop", 200)) sec.append(Property("floatprop", 2.00)) sec.append(Property("datetimeprop", dt.now())) sec.append(Property("dateprop", dt.now().date())) sec.append(Property("timeprop", dt.now().time())) sec.append(Property("boolprop", True)) if sys.version_info < (3, 0): str_doc = unicode(XMLWriter(doc)) else: str_doc = str(XMLWriter(doc)) new_doc = XMLReader().fromString(str_doc) new_sec = new_doc.sections[0] p = new_sec.properties["strprop"] assert (p.dtype == "string") if sys.version_info < (3, 0): assert (type(p.value[0]) == unicode) else: assert (type(p.value[0]) == str) p = new_sec.properties["txtprop"] assert (p.dtype == "text") if sys.version_info < (3, 0): assert (type(p.value[0]) == unicode) else: assert (type(p.value[0]) == str) p = new_sec.properties["intprop"] assert (p.dtype == "int") assert (type(p.value[0]) == int) p = new_sec.properties["floatprop"] assert (p.dtype == "float") assert (type(p.value[0]) == float) p = new_sec.properties["datetimeprop"] assert (p.dtype == "datetime") assert (type(p.value[0]) == dt) p = new_sec.properties["dateprop"] assert (p.dtype == "date") assert (type(p.value[0]) == date) p = new_sec.properties["timeprop"] assert (p.dtype == "time") assert (type(p.value[0]) == time) p = new_sec.properties["boolprop"] assert (p.dtype == "boolean") assert (type(p.value[0]) == bool)
def save(self, uri): self.document.clean() doc = XMLWriter(self.document) gf = gio.File(uri) try: data = unicode(doc) except Exception, e: self._info_bar.show_info("Save failed: %s" % e.message) return
def test_read_write(self): doc = Document("author") sec = Section("name", "type", parent=doc) sec.append(Property("strprop", "somestring")) sec.append(Property("txtprop", "some\ntext")) sec.append(Property("intprop", 200)) sec.append(Property("floatprop", 2.00)) sec.append(Property("datetimeprop", dt.now())) sec.append(Property("dateprop", dt.now().date())) sec.append(Property("timeprop", dt.now().time())) sec.append(Property("boolprop", True)) str_doc = str(XMLWriter(doc)) new_doc = XMLReader().from_string(str_doc) new_sec = new_doc.sections[0] prop = new_sec.properties["strprop"] self.assertEqual(prop.dtype, "string") self.assertIsInstance(prop.values[0], str) prop = new_sec.properties["txtprop"] self.assertEqual(prop.dtype, "text") self.assertIsInstance(prop.values[0], str) prop = new_sec.properties["intprop"] self.assertEqual(prop.dtype, "int") self.assertIsInstance(prop.values[0], int) prop = new_sec.properties["floatprop"] self.assertEqual(prop.dtype, "float") self.assertIsInstance(prop.values[0], float) prop = new_sec.properties["datetimeprop"] self.assertEqual(prop.dtype, "datetime") self.assertIsInstance(prop.values[0], dt) prop = new_sec.properties["dateprop"] self.assertEqual(prop.dtype, "date") self.assertIsInstance(prop.values[0], date) prop = new_sec.properties["timeprop"] self.assertEqual(prop.dtype, "time") self.assertIsInstance(prop.values[0], time) prop = new_sec.properties["boolprop"] self.assertEqual(prop.dtype, "boolean") self.assertIsInstance(prop.values[0], bool)
def test_read_write(self): doc = Document("author") sec = Section("name", "type") doc.append(sec) sec.append(Property("strprop", "somestring")) sec.append(Property("txtprop", "some\ntext")) sec.append(Property("intprop", 200)) sec.append(Property("floatprop", 2.00)) sec.append(Property("datetimeprop", dt.now())) sec.append(Property("dateprop", dt.now().date())) sec.append(Property("timeprop", dt.now().time())) sec.append(Property("boolprop", True)) str_doc = unicode(XMLWriter(doc)) new_doc = XMLReader().fromString(str_doc) new_sec = new_doc.sections[0] v = new_sec.properties["strprop"].value assert (v.dtype == "string") assert (type(v.data) == unicode) v = new_sec.properties["txtprop"].value assert (v.dtype == "text") assert (type(v.data) == unicode) v = new_sec.properties["intprop"].value assert (v.dtype == "int") assert (type(v.data) == int) v = new_sec.properties["floatprop"].value assert (v.dtype == "float") assert (type(v.data) == float) v = new_sec.properties["datetimeprop"].value assert (v.dtype == "datetime") assert (type(v.data) == dt) v = new_sec.properties["dateprop"].value assert (v.dtype == "date") assert (type(v.data) == date) v = new_sec.properties["timeprop"].value assert (v.dtype == "time") assert (type(v.data) == time) v = new_sec.properties["boolprop"].value assert (v.dtype == "boolean") assert (type(v.data) == bool)