예제 #1
0
파일: grid.py 프로젝트: badbytes/pymeg
    def coregistercheck(self,widget,filename=None):
        print filename, 'fn'
        if self.builder.get_object("filechooserbutton1").get_filename() == None:
            pass
        else:
            filename = self.filename = self.builder.get_object("filechooserbutton1").get_filename()

        print 'loading and checking coreg', filename
        try: self.mr = nibabel.load(filename); print 'loaded', filename
        except RuntimeError: print 'unsupported MR file'; return

        self.prevdata['MRI'] = filename
        readwrite.writedata(self.prevdata, os.getenv('HOME')+'/.pymegdata')

        try:
            xfm = readwrite.readdata(os.path.splitext(filename)[0]+'.pym')
            print 'file previously coregistered', xfm
            self.builder.get_object("button1").set_sensitive(True)
        except:
            print 'cant find fiducal file', os.path.splitext(filename)[0]+'.pym';
            return

        self.lpa = xfm['lpa']
        self.rpa = xfm['rpa']
        self.nas = xfm['nas']
예제 #2
0
    def __init__(self):
        self.builder = gtk.Builder()
        self.builder.add_from_file(os.path.splitext(__file__)[0]+".glade")
        self.window = self.builder.get_object("window")

        #for j in self.builder.get_objects():
            #n = gtk.Buildable.get_name(j)

        try:
            self.prefs = readwrite.readdata(os.getenv('HOME')+'/.pymeg.pym')
            print 'reading pref file'
            for i in self.prefs.keys():
                try: self.builder.get_object(i).set_state(self.prefs[i])
                except: pass
                pass
                #i.set_state(self.prefs[i])
        except IOError:
            print 'no pref set.'
            self.prefs = {}

        dic = {
            "on_preference_toggled" : self.updateprefs,
            }

        self.builder.connect_signals(dic)
예제 #3
0
    def __init__(self):
        self.builder = gtk.Builder()
        self.builder.add_from_file(os.path.splitext(__file__)[0]+".glade")
        self.window = self.builder.get_object("window")

        dic = {
            "on_toolbutton_refresh_clicked" : self.generate_testdata,
            "on_button1_clicked" : self.generate_testdata,
            "on_vboxMain_button_press_event" : self.button_press_event,
            "on_vboxMain_button_release_event" : self.button_release_event,
            "on_vboxMain_drag" : self.drag_begin,
            "on_vboxMain_motion_notify_event" : self.drag_begin,
            "on_toolbar_clear_clicked" : self.clear_selections,
            "on_toolbar_zoomin_clicked" : self.zoomin_time,
            "on_toolbar_zoomout_clicked" : self.zoomout_time,
            "on_go_back_clicked" : self.page_back,
            "on_go_forward_clicked" : self.page_forward,
            "on_toolbutton_setup_toggled" : self.preferences_open,
            "on_button_channel_apply_clicked" : self.channel_selection_apply,
            "set_channel_groups" : self.set_channel_groups,
            "showpopupmenu" : self.showpopupmenu,
            "on_toolbar_plot_clicked" : self.plot_contour,
            "on_plot_contour_activate" : self.plot_contour,
            "on_button_delete_selection_clicked" : self.event_selection_delete,
            "gtk_widget_hide" : self.hideinsteadofdelete,
            "on_button_display_apply_clicked": self.display_apply,
            "on_go_up_clicked" : self.page_up,
            "on_go_down_clicked" : self.page_down,
            "on_toolbutton_load_clicked" : self.load_data,
            "on_menu_offset_correct_clicked" : self.offset_correct,
            "on_button_epoch_clicked" : self.add_selections_to_event_process,
            "on_store_event_clicked" : self.store_event,
            "on_menu_save_noise_activate" : self.store_noise,
            "on_menu_save_event_activate" : self.store_event,
            "on_key_press_event" : self.key_press_event,

            }

        self.builder.connect_signals(dic)
        try: self.prefs = readwrite.readdata(os.getenv('HOME')+'/.pymeg.pym')
        except IOError: self.prefs = {}; readwrite.writedata(self.prefs, os.getenv('HOME')+'/.pymeg')
        try:
            self.line_r,self.line_g,self.line_b = self.prefs['LineColor'][0],self.prefs['LineColor'][1],self.prefs['LineColor'][2]
            self.back_r,self.back_g,self.back_b = self.prefs['BackColor'][0],self.prefs['BackColor'][1],self.prefs['BackColor'][2]
        except:
            self.line_r,self.line_g,self.line_b = 1.,1.,1.
            self.back_r,self.back_g,self.back_b = .9,.9,.9
        self.color = (self.line_r,self.line_g,self.line_b)
        self.create_draw_frame('none')
        self.create_spec_frame('none')
        self.create_csd_frame('none')
        self.space = 0
        #self.generate_testdata(None)
        self.preferences_open(None)
예제 #4
0
def retrievepythondata(fn):
    from pdf2py import readwrite

    pyd = readwrite.readdata(fn)
    try:
        data = pyd["data"]
        chlabels = pyd["chlabels"]
        samplerate = pyd["samplerate"]
        sp = 1 / np.float32(samplerate)
        timeaxes = np.arange(0, sp * np.size(data, 0), sp)
    except AttributeError:
        print "ae"
    return data, timeaxes, chlabels, samplerate
예제 #5
0
 def create_draw_frame(self,widget):
     #ion()
     self.fig = Figure(figsize=[200,200], dpi=100)
     self.canvas = FigureCanvas(self.fig)
     #self.canvas.connect("scroll_event", self.scroll_event)
     #self.canvas.connect('button_press_event', self.button_press_event)
     self.canvas.show()
     self.figure = self.canvas.figure
     self.axes = self.fig.add_axes([0.045, 0.05, 0.93, 0.925], axisbg='#FFFFCC')
     self.axes.axis('off')
     self.vb = self.builder.get_object("viewport1")
     self.vb.add(self.canvas)
     #self.vb.pack_start(self.canvas, gtk.TRUE, gtk.TRUE)
     self.vb.show()
     from pdf2py import readwrite
     self.data = readwrite.readdata('/home/danc/vault/decrypted/programming/python/chanlocs.pym')
     #self.data = np.arange(300)#np.random.randn(300)
     self.axes.scatter(self.data[1],self.data[0],marker='o',facecolors='none');
예제 #6
0
    def changed_cb(self, combobox):
        model = combobox.get_model()
        index = combobox.get_active()
        if index > -1:
            print model[index][0], 'selected','index',index
            #self.chan_ind = index
            self.color_sel = str(model[index][0])
        #self.im1.axes.clear()
        print 'debug'
        self.im1.set_cmap(self.color_sel)
        self.im1.axes.figure.canvas.draw()
        self.im2.set_cmap(self.color_sel)
        self.im2.axes.figure.canvas.draw()
        self.im3.set_cmap(self.color_sel)
        self.im3.axes.figure.canvas.draw()

        try:
            prefs = readwrite.readdata(os.getenv('HOME')+'/.pymeg.pym')
            prefs['MRI_color'] = index
            readwrite.writedata(prefs, os.getenv('HOME')+'/.pymeg')
        except IOError: pass
        return
예제 #7
0
    def populate_combo(self, colorlabels=None):
        print 'populating channel list'
        #if colorlabels == None:
            #colorlabels = arange(50)
        combobox = self.builder.get_object("combobox1")
        combobox.clear()
        liststore = gtk.ListStore(str)
        cell = gtk.CellRendererText()
        combobox.pack_start(cell)
        combobox.add_attribute(cell, 'text', 0)
        combobox.set_wrap_width(int(ceil(sqrt(len(colorlabels)))))

        for n in colorlabels: #range(50):
            liststore.append([n])
        combobox.set_model(liststore)
        combobox.connect('changed', self.changed_cb)
        try:
            prefs = readwrite.readdata(os.getenv('HOME')+'/.pymeg.pym')
            combobox.set_active(prefs['MRI_color'])
            print 'Setting color scheme to last'
        except:
            combobox.set_active(0)
        return
예제 #8
0
 def __init__(self, filepath):
     print 'reading',filepath
     self.nifti = nibabel.load(filepath)
     dirpath = os.path.dirname(filepath)
     self.data = copy(self.nifti.get_data())#.T
     #self.nifti.data = self.data
     h = self.nifti.get_header()
     self.pixdim = h['pixdim'][1:4]
     self.gettransform(h)
     #self.reorient()
     xfm_fn = os.path.splitext(filepath)[0]+'.pym'
     if os.path.isfile(xfm_fn) == True:
         print('loading index points found in file',xfm_fn)
         self.fiddata = readwrite.readdata(xfm_fn)
         self.getfiducals(h)
     else:
         try: #This is a shitty way in which fiducal point were saved in descrip field in header, as there were no user avail fields to store the 3X3 matrix.
             self.lpa = eval(str(h['descrip']))[0]
             self.rpa = eval(str(h['descrip']))[1]
             self.nas = eval(str(h['descrip']))[2]
             print('got fiducal info from description field in header')
         except NameError:
             print 'no fiducal file or info found. you will not be able to perform any transforms with other data.'
예제 #9
0
파일: grid.py 프로젝트: badbytes/pymeg
    def __init__(self):
        MT = progressbar.MainThread()
        self.datahandler()
        self.builder = gtk.Builder()
        self.builder.add_from_file(os.path.splitext(__file__)[0]+".glade")
        self.window = self.builder.get_object("window1")
        n = self.builder.get_object('notebook1')
        self.statusbar = self.builder.get_object("statusbar1")
        self.statusbar_cid = self.statusbar.get_context_id("")
        #n.set_current_page(0)
        dic = {
            "on_mrigridcompute_clicked" : self.mrigrid,
            "on_filechooserbutton1_file_set": self.coregistercheck,
            "on_filechooserbutton2_file_set": self.pdfcheck,
            "on_coregister_clicked" : self.coregister_handler,
            "on_radiobutton_clicked" : self.gridtypechanged,
            "on_button2_clicked" : self.manualgrid,

            }

        self.builder.connect_signals(dic)

        try:
            self.prevdata = readwrite.readdata(os.getenv('HOME')+'/.pymegdata.pym')
            print 'previous data', self.prevdata
            self.builder.get_object("filechooserbutton1").set_uri('file://'+self.prevdata['MRI'])
            #self.builder.get_object("filechooserbutton1").set_filename(self.prevdata['MRI'])
            #self.mr = img.loadimage(self.prevdata['brain.nii.gz'])
            filename = self.filename = self.prevdata['MRI']
            self.coregistercheck(None, filename)
            self.statusbar.push(self.statusbar_cid, 'Loading Previous MRI.')

        except (IOError, KeyError): #no last file
            print 'no prev data'
            self.prevdata = {}
        except TypeError:
            pass
예제 #10
0
            m.show_all()
            m.popup(None,None,None,3,0)
        if event.button == 1:
            ap = self.axes.get_position()
            x,y = self.canvas.get_width_height()
            posx = (event.x/x-.5)*(1/(ap.x1-ap.x0))*-1
            posy = ((event.y/y-.5)*(1/(ap.y0-ap.y1)))
            #posx = ((event.x/x)-ap.x0)*(1/(ap.x1-ap.x0))
            #posy = ((event.y/y)-(1-ap.y0))*(1/(ap.y0-ap.y1))
            print posx,posy
            from meg import nearest
            nx=nearest.nearest(self.data[0],posy)[0]
            ny=nearest.nearest(self.data[1],posx)[0]
            print nx,ny

    def apply_selection(self, widget):
        print 'Number of channels applied:',size(self.chanchecked,0)
        self.result_handler(self.chanchecked)
        return self.chanchecked

if __name__ == "__main__":
    from pdf2py import readwrite
    chanlocs = readwrite.readdata('/home/danc/python/chlocs.pym')
    chanlabels = []
    for i in arange(size(chanlocs,1)):
        chanlabels = append(chanlabels, 'A'+str(i))
    mainwindow = setup(chanlocs,chanlabels)
    mainwindow.window.show()
    print 'testing'
    gtk.main()
예제 #11
0
 def load_coregister_info(self, widget):
     if os.path.isfile(filepath+'.pym') == True:
         print('loading index points found in file',filepath+'.pym')
         self.fiddata = readwrite.readdata(filepath+'.pym')
         self.getfiducals(h)