コード例 #1
0
        def fill_it(button):
            print "fill_it()"
            gname = entryGname.get_text()
            print "gname is '%s'" % gname
            cstart = str2int_or_err(entryStart.get_text(), labelStart, parent=self)
            print "cstart is '%s'" % cstart
            
            if cstart is None: return
            cend = str2int_or_err(entryEnd.get_text(), labelEnd, parent=self)
            if cend is None: return

            cnt = 1

            print "entries is ", entries
            print "cend is '%s', len(entries)=%d"  % (cend, len(entries))
            if cend>len(entries):
                #TODO: i not defined
                error_msg('Channel #%d out of range' % i, parent=self)
                return


            for i in range(cstart, cend+1):
                print "trying to set_text(", gname, ") for slot i=", i
                label, ename, enum = entries[i-1]
                ename.set_text(gname)
                enum.set_text('%d'%cnt)
                cnt += 1
コード例 #2
0
        def fill_it(button):
            print "fill_it()"
            gname = entryGname.get_text()
            print "gname is '%s'" % gname
            cstart = str2int_or_err(entryStart.get_text(),
                                    labelStart,
                                    parent=self)
            print "cstart is '%s'" % cstart

            if cstart is None: return
            cend = str2int_or_err(entryEnd.get_text(), labelEnd, parent=self)
            if cend is None: return

            cnt = 1

            print "entries is ", entries
            print "cend is '%s', len(entries)=%d" % (cend, len(entries))
            if cend > len(entries):
                #TODO: i not defined
                error_msg('Channel #%d out of range' % i, parent=self)
                return

            for i in range(cstart, cend + 1):
                print "trying to set_text(", gname, ") for slot i=", i
                label, ename, enum = entries[i - 1]
                ename.set_text(gname)
                enum.set_text('%d' % cnt)
                cnt += 1
コード例 #3
0
ファイル: wavelet_runner.py プロジェクト: falcondai/pbrain
 def choose_file(self):
     chooser = gtk.FileChooserDialog(
         title="please create dump file",
         action=gtk.FILE_CHOOSER_ACTION_SAVE,
         buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE,
                  gtk.RESPONSE_OK))
     response = chooser.run()
     if response == gtk.RESPONSE_OK:
         filename = chooser.get_filename()
     else:
         chooser.destroy()
         return
     # try and write a dummy file to fname to make sure the dir
     # is writable
     tmpfile = filename + 'tmp'
     try:
         file(tmpfile, 'wb').write('123')
     except IOError:
         error_msg('Basepath %s does not appear to be writable' % filename,
                   parent=self)
         return
     else:
         os.remove(tmpfile)
     chooser.destroy()
     self.save_file = filename
     return
コード例 #4
0
    def get_amp(self):

        while 1:
            response = self.run()

            if response == gtk.RESPONSE_OK:
                trodes = []
                for i, tup in enumerate(self.entries):
                    label, ename, enum = tup
                    gname = ename.get_text()
                    if not len(gname):
                        error_msg('Empty grid name on channel %d' % i + 1,
                                  parent=self)
                        break
                    gnum = str2int_or_err(enum.get_text(), label, parent=self)
                    if gnum is None: break
                    trodes.append((i + 1, gname, gnum))
                else:
                    self.hide()
                    amp = Amp()
                    amp.extend(trodes)
                    return amp
            else:
                self.hide()
                return
コード例 #5
0
 def ok_callback(dialog):
     fname = dialog.get_filename()
     print "from_amp_file.ok_callback: filename is " , fname
     try: fh = file(fname)
     except IOError, msg:
         msg = exception_to_str('Could not open %s' % filename)
         error_msg(msg)
         return None
コード例 #6
0
    def load_image(self, *args):
        print "loc3djr_maintoolbar.load_image()"
        debug = False
        reader = None

        pars = None

        if debug:
            reader = vtk.vtkImageReader2()
            reader.SetDataScalarTypeToUnsignedShort()
            reader.SetDataByteOrderToLittleEndian()
            reader.SetFileNameSliceOffset(120)
            reader.SetDataExtent(0, 511, 0, 511, 0, 106)
            reader.SetFilePrefix(
                '/home/jdhunter/seizure/data/ThompsonK/CT/raw/1.2.840.113619.2.55.1.1762864819.1957.1074338393.'
            )
            reader.SetFilePattern('%s%d.raw')
            reader.SetDataSpacing(25.0 / 512, 25.0 / 512, 0.125)

            reader.Update()
        else:

            dlg = widgets['dlgReader']

            response = dlg.run()

            if response == gtk.RESPONSE_OK:
                try:
                    reader = widgets.reader
                except AttributeError:
                    pars = widgets.get_params()
                    pars = widgets.validate(pars)
                    if pars is None:
                        error_msg('Could not validate the parameters', dlg)
                        return
                    reader = widgets.get_reader(pars)
                pars = widgets.get_params()
                pars = widgets.validate(pars)

            dlg.hide()

        print "reader=", reader
        if not reader:
            print "hit cancel, see if we can survive"
        else:
            imageData = reader.GetOutput()
            print "pars=", pars
            print "loc3djr_maintoolbar.load_image(): reader.GetOutput() is ", imageData
            print "load_image(): imageData.SetSpacing(", reader.GetDataSpacing(
            ), " )"
            imageData.SetSpacing(reader.GetDataSpacing())
            print "calling EventHandler().notify('set image data', imageData)"
            EventHandler().notify('set image data', imageData)
            if type(reader) == vtkNiftiImageReader:
                print "calling EventHandler().setNifti()"
                #XXX EventHandler().setNifti(reader.GetFilename())
                EventHandler().setNifti(reader.GetQForm())
コード例 #7
0
 def ok_callback(dialog):
     fname = dialog.get_filename()
     print "from_amp_file.ok_callback: filename is ", fname
     try:
         fh = file(fname)
     except IOError, msg:
         msg = exception_to_str('Could not open %s' % filename)
         error_msg(msg)
         return None
コード例 #8
0
 def ok_clicked(w):
     fname = dialog.get_filename()
     shared.set_file_selection(fname)
     try: EventHandler().save_registration_as(fname)
     except IOError:
         error_msg('Could not save data to %s' % fname,
                   )
     else:
         self.fileName = fname
         dialog.destroy()
コード例 #9
0
    def load_image(self, *args):
        print "loc3djr_maintoolbar.load_image()"
        debug = False
        reader = None

        pars = None
        
        if debug:
            reader = vtk.vtkImageReader2()
            reader.SetDataScalarTypeToUnsignedShort()
            reader.SetDataByteOrderToLittleEndian()
            reader.SetFileNameSliceOffset(120)
            reader.SetDataExtent(0, 511, 0, 511, 0, 106)
            reader.SetFilePrefix('/home/jdhunter/seizure/data/ThompsonK/CT/raw/1.2.840.113619.2.55.1.1762864819.1957.1074338393.')
            reader.SetFilePattern( '%s%d.raw')
            reader.SetDataSpacing(25.0/512, 25.0/512, 0.125 )

            reader.Update()
        else:
    
            dlg = widgets['dlgReader']

            response = dlg.run()

            if response == gtk.RESPONSE_OK:
                try: reader = widgets.reader
                except AttributeError: 
                    pars = widgets.get_params()
                    pars = widgets.validate(pars)
                    if pars is None:
                        error_msg('Could not validate the parameters', dlg)
                        return
                    reader = widgets.get_reader(pars)
                pars = widgets.get_params()
                pars = widgets.validate(pars)
                
            dlg.hide()


        print "reader=", reader
        if not reader:
            print "hit cancel, see if we can survive"
        else:
            imageData = reader.GetOutput()
            print "pars=", pars
            print "loc3djr_maintoolbar.load_image(): reader.GetOutput() is " , imageData
            print "load_image(): imageData.SetSpacing(", reader.GetDataSpacing(), " )"
            imageData.SetSpacing(reader.GetDataSpacing())
            print "calling EventHandler().notify('set image data', imageData)"
            EventHandler().notify('set image data', imageData)
            if type(reader) == vtkNiftiImageReader:
                print "calling EventHandler().setNifti()"
                #XXX EventHandler().setNifti(reader.GetFilename())
                EventHandler().setNifti(reader.GetQForm())
コード例 #10
0
ファイル: image_reader.py プロジェクト: thorstenkranz/pbrain
    def load_params_from_file(self, fname):
       dialog = self['dlgReader']
       try: s = file(fname, 'r').read()
       except IOError:
          error_msg('Could not open %s for reading' % fname, dialog)
          return 0

       p = Params()
       p.from_string(s)
       
       widgets.set_params(p)     

       widgets['entryInfoFile'].set_text(fname)
       return 1
コード例 #11
0
 def recieve(self, event, *args):
     if not self.buttonFollowEvents.get_active(): return
     if event in (Observer.SELECT_CHANNEL, Observer.SET_TIME_LIM):
         self.make_plot()
     elif event==Observer.SAVE_FRAME:
         fname = args[0]
         framefile = fname + '_specgram.png'
         self.fig.print_figure(framefile, dpi=72)
         basedir, filepart = os.path.split(framefile)
         listfile = os.path.join(basedir, 'eegplot.vfl')
         try:  file(listfile, 'a').write('%s\n'%filepart)
         except IOError:
             error_msg('Could not write list file %s' % listfile)
             return
コード例 #12
0
    def key_press(self, interactor, event):
        key = interactor.GetKeySym()
        if self.pickerName is None:
            error_msg('You must select the pick segment in the Picker tab')
            return
        if key.lower()=='i':
            print "Inserting Marker"
            x,y = interactor.GetEventPosition()
            picker = vtk.vtkCellPicker()
            picker.PickFromListOn()
            o = self.paramd[self.pickerName]
            picker.AddPickList(o.isoActor)
            picker.SetTolerance(0.005)
            picker.Pick(x, y, 0, self.sr.renderer)
            points = picker.GetPickedPositions()
            numPoints = points.GetNumberOfPoints()
            if numPoints<1: return
            pnt = points.GetPoint(0)


            marker = Marker(xyz=pnt,
                            rgb=EventHandler().get_default_color())

            EventHandler().add_marker(marker)
        elif key.lower()=='x':
            x,y = interactor.GetEventPosition()
            picker = vtk.vtkCellPicker()
            picker.PickFromListOn()
            for o in self.paramd.values():
                picker.AddPickList(o.isoActor)
            picker.SetTolerance(0.01)
            picker.Pick(x, y, 0, self.sr.renderer)
            cellId = picker.GetCellId()
            if cellId==-1:
                pass
            else:
                o = self.paramd.values()[0]
                o.remove.RemoveCell(cellId)
                interactor.Render()

        elif key.lower()=='e':
            o = self.paramd.values()[0]
            pw = o.planeWidget
            if pw.GetEnabled():
                pw.EnabledOff()
            else:
                pw.EnabledOn()
コード例 #13
0
    def key_press(self, interactor, event):
        key = interactor.GetKeySym()
        if self.pickerName is None:
            error_msg('You must select the pick segment in the Picker tab')
            return
        if key.lower() == 'i':
            print "Inserting Marker"
            x, y = interactor.GetEventPosition()
            picker = vtk.vtkCellPicker()
            picker.PickFromListOn()
            o = self.paramd[self.pickerName]
            picker.AddPickList(o.isoActor)
            picker.SetTolerance(0.005)
            picker.Pick(x, y, 0, self.sr.renderer)
            points = picker.GetPickedPositions()
            numPoints = points.GetNumberOfPoints()
            if numPoints < 1: return
            pnt = points.GetPoint(0)

            marker = Marker(xyz=pnt, rgb=EventHandler().get_default_color())

            EventHandler().add_marker(marker)
        elif key.lower() == 'x':
            x, y = interactor.GetEventPosition()
            picker = vtk.vtkCellPicker()
            picker.PickFromListOn()
            for o in self.paramd.values():
                picker.AddPickList(o.isoActor)
            picker.SetTolerance(0.01)
            picker.Pick(x, y, 0, self.sr.renderer)
            cellId = picker.GetCellId()
            if cellId == -1:
                pass
            else:
                o = self.paramd.values()[0]
                o.remove.RemoveCell(cellId)
                interactor.Render()

        elif key.lower() == 'e':
            o = self.paramd.values()[0]
            pw = o.planeWidget
            if pw.GetEnabled():
                pw.EnabledOff()
            else:
                pw.EnabledOn()
コード例 #14
0
    def load_from(self, button):
        dialog = FileManager()  #modernizing the dialog box
        dialog.set_lastdir(shared.get_last_dir())
        fname = dialog.get_filename('Choose filename for marker info')
        #dialog = gtk.FileSelection()

        #dialog.show()
        #response = dialog.run()

        #if response==gtk.RESPONSE_OK:
        #    fname = dialog.get_filename()
        #    dialog.destroy()
        try:
            EventHandler().load_markers_from(fname)
        except IOError:
            error_msg('Could not load markers from %s' % fname, )
        else:
            shared.set_file_selection(fname)
            self.fileName = fname
コード例 #15
0
ファイル: image_reader.py プロジェクト: thorstenkranz/pbrain
    def on_buttonDir_clicked(button=None):

            
        dialog = gtk.FileSelection('Choose image file directory')
        dialog.set_filename(shared.get_last_dir())
        dialog.set_transient_for(widgets['dlgReader'])
        dialog.set_filename(widgets['entryDir'].get_text())
        response = dialog.run()

        if response == gtk.RESPONSE_OK:
            dir = dialog.get_filename()
            if os.path.isdir(dir):
                widgets['entryDir'].set_text(dir)
                shared.set_file_selection(dir)
                dialog.destroy()
            else:            
                error_msg('%s is not a directory' % dir, dialog)
        else:
           dialog.destroy()
コード例 #16
0
    def load_from(self, button):
	dialog = FileManager() #modernizing the dialog box
	dialog.set_lastdir(shared.get_last_dir())	
	fname = dialog.get_filename('Choose filename for marker info')
        #dialog = gtk.FileSelection()
        
        #dialog.show()        
        #response = dialog.run()
        
        #if response==gtk.RESPONSE_OK:
        #    fname = dialog.get_filename()
        #    dialog.destroy()
        try: EventHandler().load_markers_from(fname)
        except IOError:
            error_msg(
                'Could not load markers from %s' % fname, 
                )
        else:
            shared.set_file_selection(fname)
            self.fileName = fname
コード例 #17
0
    def show_correlation_props(self, button):
        dialog = gtk.FileSelection('Choose filename for correlation data')
        dialog.set_filename(shared.get_last_dir())

        dialog.show()
        response = dialog.run()

        if response==gtk.RESPONSE_OK:
            fname = dialog.get_filename()
            dialog.destroy()
            try: EventHandler().load_correlation_from(fname)
            except IOError:
                error_msg(
                    'Could not load correlation from %s' % fname, 
                    )
            
            else:
                shared.set_file_selection(fname)
                self.fileName = fname
        else: dialog.destroy()
コード例 #18
0
    def get_data(self):
        'return t, data, dt, label, with t filtered according to selections'
        print "MPLWin.get_data(): self._filterGM =", self._filterGM
        selected = self.eegplot.get_selected(self._filterGM)
        if selected is None:
            error_msg('You must first select an EEG channel by clicking on it',
                      parent=self)
            return
        t, data, trode = selected

        print "MPLWin.get_data(): data[0:10] is " , data[0:10]

        print "MPLWin.get_data(): self._detrend=", self._detrend
        detrend = self._detrendd[self._detrend]    

        data = detrend(self._filter(t, data))
        gname, gnum = trode
        label = '%s %d' % (gname, gnum)

        dt = t[1]-t[0]
        return t, data, dt, label
コード例 #19
0
ファイル: pbrain2.py プロジェクト: elialbert/Pbrain2
 def ok_callback(self, dlg):
     fname = dlg.get_filename()
     
     fullpath =  dlg.get_filename()
     self.fmanager.set_lastdir(fullpath)
     dlg.destroy()
     
     if not os.path.exists(fullpath):
         error_msg(
             'Cannot find %s' % fullpath,
             title='Error',
             parent=self.win)
         
     basename, ext = os.path.splitext(fullpath)
     if not self.extmap.has_key(ext.lower()):
         error_msg(
             'Do not know how to handle extension %s in %s' % (ext, fullpath),
             title='Error',
             parent=self.win)
         
         return
     else:
         loader = self.extmap[ext.lower()]
         try: eeg = loader(fullpath)
         except ValueError, msg:
             msg = exception_to_str('Error loading EEG' )
             error_msg(msg, title='Error loading EEG',
                       parent=self.win)
             return
         else:
コード例 #20
0
ファイル: image_reader.py プロジェクト: thorstenkranz/pbrain
    def save_params_to_file(self, fname):
       """
       Pickle the params to file fname.  If successful return 1
       """

       dialog = self['dlgReader']

       pars = widgets.get_params()
       pars = widgets.validate(pars)
       if pars is None:
          error_msg('Invalid parameters')
          return 0

       try: fh = file(fname, 'w')
       except IOError:
          error_msg('Could not open %s for writing' % fname, dialog)
          return 0


       fh.write(str(pars))
       widgets['entryInfoFile'].set_text(fname)
       return 1
コード例 #21
0
    def add_segment(self, button):
        'render, man'
        val = self.get_intensity()
        if val is None: return
        name = self.entryName.get_text()
        if not len(name):
            error_msg('You must enter a name in the Intensity tab')
            return

        if not self.paramd.has_key(name):
            self.paramd[name] = SurfParams(self.sr.renderer, self.sr.interactor)

        params = self.paramd[name]
        params.label = name
        params.intensity = val
        params.color = self.lastColor
        params.set_image_data(self.sr.imageData)
        params.update_properties()
        
        self.update_segments_frame() 
        self.update_pipeline_frame()
        self.update_picker_frame()
コード例 #22
0
    def add_segment(self, button):
        'render, man'
        val = self.get_intensity()
        if val is None: return
        name = self.entryName.get_text()
        if not len(name):
            error_msg('You must enter a name in the Intensity tab')
            return

        if not self.paramd.has_key(name):
            self.paramd[name] = SurfParams(self.sr.renderer,
                                           self.sr.interactor)

        params = self.paramd[name]
        params.label = name
        params.intensity = val
        params.color = self.lastColor
        params.set_image_data(self.sr.imageData)
        params.update_properties()

        self.update_segments_frame()
        self.update_pipeline_frame()
        self.update_picker_frame()
コード例 #23
0
    def get_amp(self):
        
        while 1:
            response = self.run()

            if response==gtk.RESPONSE_OK:
                trodes = []
                for i, tup in enumerate(self.entries):
                    label, ename, enum = tup
                    gname = ename.get_text()
                    if not len(gname):
                        error_msg('Empty grid name on channel %d' % i+1, parent=self)
                        break
                    gnum = str2int_or_err(enum.get_text(), label, parent=self)
                    if gnum is None: break
                    trodes.append( (i+1, gname, gnum) )
                else:
                    self.hide()
                    amp = Amp()
                    amp.extend(trodes)
                    return amp
            else:
                self.hide()
                return
コード例 #24
0
    def make_butter_dialog(self):
        dlg = gtk.Dialog('Butterworth Filter')
        
        dlg.set_transient_for(self.parent)

        vbox = dlg.vbox

        lrp = gtk.Label('Ripple pass'); lrp.show()
        lrs = gtk.Label('Ripple stop'); lrs.show()

        lcf = gtk.Label('Low corner freq'); lcf.show()
        lsf = gtk.Label('Low stop freq');   lsf.show()        

        erp = gtk.Entry(); erp.show(); erp.set_width_chars(10)
        ers = gtk.Entry(); ers.show(); ers.set_width_chars(10)
        ecf = gtk.Entry(); ecf.show(); ecf.set_width_chars(10)
        esf = gtk.Entry(); esf.show(); esf.set_width_chars(10)        

        erp.set_text('%d'%self.rp)
        ers.set_text('%d'%self.rs)
        ecf.set_text('%1.1f'%self.cf)
        esf.set_text('%1.1f'%self.sf)        
        
        table = gtk.Table(2,4)
        table.show()
        table.set_row_spacings(4)
        table.set_col_spacings(4)

        table.attach(lrp, 0, 1, 0, 1)
        table.attach(lrs, 0, 1, 1, 2)
        table.attach(lcf, 0, 1, 2, 3)
        table.attach(lsf, 0, 1, 3, 4)                        

        table.attach(erp, 1, 2, 0, 1)
        table.attach(ers, 1, 2, 1, 2)
        table.attach(ecf, 1, 2, 2, 3)
        table.attach(esf, 1, 2, 3, 4)                        

        dlg.vbox.pack_start(table, True, True)

        dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
        dlg.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
        dlg.set_default_response(gtk.RESPONSE_OK)
        dlg.show()


        while 1:
            response = dlg.run()
            if response == gtk.RESPONSE_OK:
                val = str2posint_or_err(erp.get_text(), lrp, dlg)
                if val is None: continue
                else: self.rp = val
                
                val = str2posint_or_err(ers.get_text(), lrs, dlg)
                if val is None: continue
                else: self.rs = val

                cf = str2posnum_or_err(ecf.get_text(), lcf, dlg)
                if cf is None: continue


                sf = str2posnum_or_err(esf.get_text(), lsf, dlg)
                if sf is None: continue

                if sf<=cf:
                    error_msg('Stop frequency must be greater than corner frequency', dlg)
                    continue
                
                
                self.cf = cf
                self.sf = sf
                break
            else: break
                
        dlg.destroy()
コード例 #25
0
 def checkPickerName():
     if self.pickerName is None:
         error_msg('You must select the pick segment in the Picker tab')
         return False
     return True
コード例 #26
0
ファイル: embed.py プロジェクト: ashwinashok9111993/pbrain
    def make_embed(self, *args):

        if self.scatterActor is not None:
            self.renderer.RemoveActor(self.scatterActor)            

        selected = self.eegplot.get_selected()
        if selected is None:
            error_msg('You must first select an EEG channel by clicking on it',
                      parent=self)
            return
        torig, data, trode = selected
        gname, gnum = trode
        label = '%s %d' % (gname, gnum)
        #print "EmbedWin.make_embed(): examining selected EEG channel %s" % label

        Fs = self.eegplot.eeg.freq
        dt = 1.0/Fs

        try: lag = int(self.entryLag.get_text())
        except ValueError:
            error_message('Lag must be an integer; found "%s"'%self.entryLag.get_text())
            return

        
        try: dim = int(self.entryDim.get_text())
        except ValueError:
            error_message('Dimension must be an integer; found "%s"'%self.entrySim.get_text())
            return

        pnts = []
        ind = arange(dim)*lag

        #print "EmbedWin.make_embed(): ind=" , ind

        while 1:
            if ind[-1]>=len(data): break
            print "EmbedWin.make_embed(): appending to pnts: " , (take(data,ind)[:3])
            pnts.append( take(data, ind)[:3] )  # plot 3 dims
            ind += 1


        #print "EmbedWin.make_embed(): polyData = vtk.vtkPolyData()"
        polyData = vtk.vtkPolyData()

        #print "EmbedWin.make_embed(): points = vtk.vtkPoints()"
        points = vtk.vtkPoints()

        for i, pnt in enumerate(pnts):
            x, y, z = pnt
            print "EmbedWin.make_embed(): inserting point " , i, x, y , z
            points.InsertPoint(i, x, y, z)

        polyData = vtk.vtkPolyData()
        #print "EmbedWin.make_embed(): polyData.SetPoints(points)"
        polyData.SetPoints(points)

        #print "EmbedWin.make_embed(): vtkSphereSource()"
        sphere = vtk.vtkSphereSource()
        res = 5
        sphere.SetThetaResolution(res)
        sphere.SetPhiResolution(res)
        sphere.SetRadius(10)

        #print "EmbedWin.make_embed(): filter = vtk.vtkGlyph3D()"
        filter = vtk.vtkGlyph3D()
        filter.SetInput(polyData)
        filter.SetSource(0, sphere.GetOutput())

        #print "EmbedWin.make_embed(): mapper = vtk.vtkPolyDataMapper()"
        mapper = vtk.vtkPolyDataMapper()
        #print "EmbedWin.make_embed(): mapper.SetInput(filter.GetOutput())"
        mapper.SetInput(filter.GetOutput())

        #print "EmbedWin.make_embed(): "
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().SetColor( 1,1,0 )
        self.scatterActor = actor
        self.renderer.AddActor(actor)
        self.interactor.Render()
コード例 #27
0
ファイル: image_reader.py プロジェクト: thorstenkranz/pbrain
    def validate(self, o):
        dlg = self['dlgReader']

        if o.readerClass!='vtkNiftiImageReader':
            if len(o.pattern)==0:
                msg = 'You must supply a number pattern for entry %s.\n' % \
                      self['labelPattern'].get_label() + 'Consider "%d"'
                return error_msg(msg, dlg)

            if o.pattern[0]!='%':
                msg = '%s format string must begin with a %%.\n' % \
                      self['labelPattern'].get_label() + 'Consider "%d"'
                return error_msg(msg, dlg)

        if widgets['radiobuttonDimOther'].get_active():
            dim1, dim2 = o.dimensions
            val = dim1 = str2posint_or_err(dim1, 'Other: dimension 1', dlg)
            if val is None: return None
            val = dim2 = str2posint_or_err(dim2, 'Other: dimension 2', dlg)
            if val is None: return None
            o.dimensions = dim1, dim2
            
        val = o.first = str2int_or_err(o.first, widgets['labelFirst'], dlg)
        if val is None:
            return None

        val = o.last = str2posint_or_err(o.last, widgets['labelLast'], dlg)
        if val is None: return None

        if o.readerClass!='vtkNiftiImageReader':
            fnames = self.get_file_names(o)
            for fname in fnames:
                print "validate(): doing fname ", fname
                if not os.path.exists(fname):
                    return error_msg('Could not find file %s' % fname, dlg)
                if o.readerClass=='vtkBMPReader':
                    reader = vtk.vtkBMPReader()
                    b = reader.CanReadFile(fname)
                    if not b:
                        return error_msg('Could not read file %s with reader %s'
                                         % (fname, o.readerClass), dlg)
        else:
            if len(o.extension) > 0:
                fname=os.path.join(o.dir,o.pattern+"."+o.extension)
                if not os.path.exists(fname):
                    return error_msg('Could not find file %s' % fname, dlg)
            else:
                fname=o.pattern
                files=os.listdir(o.dir)
                match=False
                for file in files:
                    file=file.split(".")
                    if len(file)>1:
                        if file[0]==fname:
                            if file[1] in ["nii","img","hdr"]:
                                match=True
                                break
                if not match:
                    return error_msg('Could not find file %s with extension nii, img, hdr [.gz]' % fname, dlg)

        # Depth Field Of View
        val = o.dfov = str2posnum_or_err(o.dfov, widgets['labelDFOV'], dlg)
        print "dfov=", val
        if val is None: return None

        # Spacing between slices
        val = o.spacing = str2posnum_or_err(
            o.spacing, widgets['labelSpacing'], dlg)
        print "spacing=", val
        if val is None: return None

        # Size of header
        if o.header=='': o.header = 0
        else:
           val = o.header = str2int_or_err(
              o.header, widgets['labelHeader'], dlg)
           if val is None: return None
        print "header=", val

        # Data mask
        if o.mask is not None:
           if o.mask=='': o.mask = None

           else:
               val = o.mask = str2int_or_err(
                   o.mask, widgets['labelMask'], dlg)
               if val is None: return None
        print "mask=", val

        return o
コード例 #28
0
ファイル: embed.py プロジェクト: waleed-aldhahi/pbrain
    def make_embed(self, *args):

        if self.scatterActor is not None:
            self.renderer.RemoveActor(self.scatterActor)

        selected = self.eegplot.get_selected()
        if selected is None:
            error_msg('You must first select an EEG channel by clicking on it',
                      parent=self)
            return
        torig, data, trode = selected
        gname, gnum = trode
        label = '%s %d' % (gname, gnum)
        #print "EmbedWin.make_embed(): examining selected EEG channel %s" % label

        Fs = self.eegplot.eeg.freq
        dt = 1.0 / Fs

        try:
            lag = int(self.entryLag.get_text())
        except ValueError:
            error_message('Lag must be an integer; found "%s"' %
                          self.entryLag.get_text())
            return

        try:
            dim = int(self.entryDim.get_text())
        except ValueError:
            error_message('Dimension must be an integer; found "%s"' %
                          self.entrySim.get_text())
            return

        pnts = []
        ind = arange(dim) * lag

        #print "EmbedWin.make_embed(): ind=" , ind

        while 1:
            if ind[-1] >= len(data): break
            print "EmbedWin.make_embed(): appending to pnts: ", (take(
                data, ind)[:3])
            pnts.append(take(data, ind)[:3])  # plot 3 dims
            ind += 1

        #print "EmbedWin.make_embed(): polyData = vtk.vtkPolyData()"
        polyData = vtk.vtkPolyData()

        #print "EmbedWin.make_embed(): points = vtk.vtkPoints()"
        points = vtk.vtkPoints()

        for i, pnt in enumerate(pnts):
            x, y, z = pnt
            print "EmbedWin.make_embed(): inserting point ", i, x, y, z
            points.InsertPoint(i, x, y, z)

        polyData = vtk.vtkPolyData()
        #print "EmbedWin.make_embed(): polyData.SetPoints(points)"
        polyData.SetPoints(points)

        #print "EmbedWin.make_embed(): vtkSphereSource()"
        sphere = vtk.vtkSphereSource()
        res = 5
        sphere.SetThetaResolution(res)
        sphere.SetPhiResolution(res)
        sphere.SetRadius(10)

        #print "EmbedWin.make_embed(): filter = vtk.vtkGlyph3D()"
        filter = vtk.vtkGlyph3D()
        filter.SetInput(polyData)
        filter.SetSource(0, sphere.GetOutput())

        #print "EmbedWin.make_embed(): mapper = vtk.vtkPolyDataMapper()"
        mapper = vtk.vtkPolyDataMapper()
        #print "EmbedWin.make_embed(): mapper.SetInput(filter.GetOutput())"
        mapper.SetInput(filter.GetOutput())

        #print "EmbedWin.make_embed(): "
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().SetColor(1, 1, 0)
        self.scatterActor = actor
        self.renderer.AddActor(actor)
        self.interactor.Render()
コード例 #29
0
 def checkPickerName():
     if self.pickerName is None:
         error_msg('You must select the pick segment in the Picker tab')
         return False
     return True