def object_fn_changed(self,info): print "fn has changed,", info.object.fn #print self.controler if os.path.exists(info.object.fn): if os.path.splitext(info.object.fn)[1] in [".f32",".dat"]: if len(info.object.eeg_filename1)==0: info.object.eeg_filename1 = os.path.split(info.object.fn)[1] info.object.long_eeg_filename1 = info.object.fn elif len(info.object.eeg_filename2)==0: info.object.eeg_filename2 = os.path.split(info.object.fn)[1] info.object.long_eeg_filename2 = info.object.fn else: dialog = Message(message="Maximum number of eeg-files reached.") dialog.edit_traits() return False info.object.fn = os.path.split(os.path.abspath(info.object.fn))[0] elif os.path.splitext(info.object.fn)[1] in [".evt",".vmrk"]: #info.object.evt_filenames.append(os.path.split(info.object.fn)[1]) #info.object.long_evt_filenames.append(info.object.fn) info.object.etm.append(info.object.fn) elif os.path.isdir(info.object.fn): pass else: dialog = Message(message="Unknown file extension!") dialog.edit_traits() return False #info.object.controler.update() else: dialog = Message(message="File not found!") print "fn:", info.object.fn dialog.edit_traits() return False
def _select_good_fired(self): try: gc = schlaf_ged.get_good_channels(self.patient_name) print "Got", gc, "from database" self.channels = gc except ValueError, ve: #Zeige Fehlermeldung print ve print self.patient_name try: short_patient_name = self.patient_name.split("_")[0] gc = schlaf_ged.get_good_channels(short_patient_name) print "Got", gc, "from database" self.channels = gc except ValueError,ve: print ve print short_patient_name message = Message(message="Cannot find good channels for subject %s" % self.patient_name) message.edit_traits()
def update(self): #Create readers that do not exist #reader_exists = N.zeros((len(self.file_selection.long_eeg_filenames)),N.bool) print "update", self.file_selection.long_eeg_filename1 if len(self.file_selection.long_eeg_filename1) > 0: if self.reader1 == None or (self.reader1 != None and self.reader1.fn != self.file_selection.long_eeg_filename1): self.reader1 = eegpy.F32(self.file_selection.long_eeg_filename1,"r") #self.channels = [] #for ch in self.reader1.channel_names: self.controltab.ch_editor.values = [(i,cn) for i,cn in enumerate(self.reader1.channel_names)] self.controltab.channels = range(self.reader1.num_channels) self.controltab.num_channels = self.reader1.num_channels self.controltab.patient_name = self.file_selection.eeg_filename1[:-4] self.inputs.start=0 self.formulas=[] else: self.reader1=None self.subplots = "" self.lines = {} self.figure.clf() wx.CallAfter(self.figure.canvas.draw) if len(self.file_selection.long_eeg_filename2) > 0: if self.reader2 == None or (self.reader1 != None and self.reader2.fn != self.file_selection.long_eeg_filename2): self.reader2 = eegpy.F32(self.file_selection.long_eeg_filename2,"r") #Check if dimesions are equal if self.reader2 != None: if not self.reader2.shape==self.reader1.shape: self.reader2 = None self.file_selection.long_eeg_filename2 = "" self.file_selection.eeg_filename2 = "" dialog = Message(message="The selected file doesn't have the same dimensions") dialog.edit_traits() else: self.reader2=None if not self.mpl_connected: self.figure.canvas.mpl_connect('button_press_event', self.canvas_cb) self.mpl_connected = True self._do_plot_fired()
def object_fn_changed(self, info): print "fn has changed,", info.object.fn #print self.controler if os.path.exists(info.object.fn): if os.path.splitext(info.object.fn)[1] in [".f32", ".dat"]: if len(info.object.eeg_filename1) == 0: info.object.eeg_filename1 = os.path.split( info.object.fn)[1] info.object.long_eeg_filename1 = info.object.fn elif len(info.object.eeg_filename2) == 0: info.object.eeg_filename2 = os.path.split( info.object.fn)[1] info.object.long_eeg_filename2 = info.object.fn else: dialog = Message( message="Maximum number of eeg-files reached.") dialog.edit_traits() return False info.object.fn = os.path.split(os.path.abspath( info.object.fn))[0] elif os.path.splitext(info.object.fn)[1] in [".evt", ".vmrk"]: #info.object.evt_filenames.append(os.path.split(info.object.fn)[1]) #info.object.long_evt_filenames.append(info.object.fn) info.object.etm.append(info.object.fn) elif os.path.isdir(info.object.fn): pass else: dialog = Message(message="Unknown file extension!") dialog.edit_traits() return False #info.object.controler.update() else: dialog = Message(message="File not found!") print "fn:", info.object.fn dialog.edit_traits() return False
class MarkerTab(HasTraits): """ Object used to display the results. """ record_mark = Bool(False) name_new = Str("Mark") markers = List(Marker) update_marks = Int(0) active_row = Int(0) remove_f2 = Button("Remove") load_evt = Action(name="Load", action="_load", toolip="Load markers from EventTable", image=ImageResource("images/load_32.png")) save_evt = Action(name="EventTable", action="_save_to", toolip="Save markers as EventTable", image=ImageResource("images/save_32.png")) save_ascii = Action(name="ASCII", action="_save_to_ascii", toolip="Save markers as ASCII-file", image=ImageResource("images/save_32.png")) toolbar = ToolBar(load_evt, save_evt, save_ascii) def __init__(self): HasTraits.__init__(self) #self.markers.append(Marker(t=10,name="Test10")) #self.markers.append(Marker(t=100,name="Test100")) #x = Float(50, label="X", desc="X position of the center") #y = Float(50, label="Y", desc="Y position of the center") def cmp_markers(self, x, y): return x.t - y.t def append(self, t, name=None, notify=True, do_sort=True): if name == None: name = str(self.name_new) self.markers.append(Marker(t=t, name=name)) if do_sort: self.markers.sort(cmp=self.cmp_markers) if notify: self.update_marks += 1 #self.goto_marker = self.markers[-1] def get_marks(self, start, stop): rv = [] for m in self.markers: if m.t >= start and m.t <= stop: rv.append(m) return rv def _load(self): print "Load from EventTable" extension = "evt" wildcard = "EventTable|*.evt|VA MarkerFile|*.vmrk" fileDialog = FileDialog(action='open', title='Load EventTable', wildcard=wildcard) fileDialog.open() if fileDialog.path == '' or fileDialog.return_code == CANCEL: return False else: print "Opening", fileDialog.path #et = eegpy.load(str(fileDialog.path)) et = eegpy.EventTable(str(fileDialog.path)) for k in et.keys(): for t in et[k]: #print k,t self.append(t, k, False, False) self.markers.sort(cmp=self.cmp_markers) def _save_to(self): print "Save to EventTable" extension = "evt" wildcard = "*.evt" fileDialog = FileDialog(action='save as', title='Save As', wildcard=wildcard) fileDialog.open() if fileDialog.path == '' or fileDialog.return_code == CANCEL: return False else: extLen = len(extension) if extLen and fileDialog.path[-extLen - 1:] != '.' + extension: fileDialog.path += '.' + extension #print "fc.fn:", fileDialog.path #TODO: Check if file exists and join EventTables et = EventTable() for m in self.markers: try: et.add_trigger(m.name, m.t) except ValueError, e: et.add_trigger_type(m.name, [m.t]) try: et.save(fileDialog.path) except Exception, e: mb = Message( message="Error while writing EventTable to file.\n%s" % str(e))