Esempio n. 1
0
 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
Esempio n. 2
0
 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()
Esempio n. 3
0
 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()
Esempio n. 4
0
 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
Esempio n. 5
0
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))