Example #1
0
 def __loadNuclei(self):
     ''' Handles setting paths for model and setting scene. '''
     
     mpath = self._fileDialog.getFilePath(filter='STL files (*.stl)')
     
     filename = dbsUtils.getPathLeaf( mpath )
     
     if filename is '':
         return 
     else:
         if self.active_vol is None:
             QtGui.QMessageBox.warning( self, 'Warning', \
                                       'You need an active scene first. \
                                       Please load a dataset.')
             return
         try: 
             reader = dbsUtils.readSTL( str(mpath) )
             self.__addNucleiToScene(reader)
         except:  
             QtGui.QMessageBox.warning( self, 'Warning', \
                                       'File selected is invalid.' )
             return 
Example #2
0
    def __loadData(self):
        ''' Handles setting paths for data and initializing new scene. '''
        #if self.active_vol is not None:
        #    self._contextView.GetScene().RemoveItem( self._vdata[str(self.active_vol)].chart )
        
        dpath = str( self._fileDialog.getFilePath( filter='Matlab files (*.mat)' ) )

        filename = dbsUtils.getPathLeaf( dpath )
        
        if filename in self._vdata.keys(): 
            QtGui.QMessageBox.warning( self, 'Warning', \
                                          'Dataset is already loaded. See tabs.' )
            return
        elif filename is '':
            return #no file selected
        else:
            try: 
                self.scores[filename] = dbsUtils.readAvgChangeMatrices(dpath)
            except:
                QtGui.QMessageBox.warning( self, 'Warning', \
                                          'File selected is invalid.' )
                return 
            
        # store electrode params for current data set
        if self.active_vol is not None:
            self._electrodeViewDialog.saveCurrentParams(self.active_vol, fresh_load = False)
            
        self.active_vol = filename
        actv = self.active_vol
        
        # create the newly loaded data set dialog parameters
        # self._electrodeViewDialog.saveCurrentParams(self.active_vol, fresh_load = True)
            
        self.__addNewRenderer()
        
        scores = np.copy(self.scores[actv])
        num_patients = scores.shape[1]
        self.scores[actv] = np.reshape(self.scores[actv], newshape=(120, 120, 120, \
            num_patients), order='C')
        
        # create new volume data object for new patient outcome data set
        self._vdata[actv] = vdata.VolumeData( scores, self._renderers[actv], self )
        #self._vdata[actv].createTransFuncChart()
        
        # newly loaded so the default dialog parameters are set
        self._electrodeViewDialog.updateWidgetValues(self.active_vol, default = True)
        
        self.__updateVTKObjects()
        
        scoresim = self._vdata[actv].imdata
        
        self.vol_qvtk_widgets[actv].setPlotting(scoresim=self._vdata[actv].images['Mean'], \
            scores=self.scores[actv], graph = self._sc, \
            pat_data = self._vdata[actv].pat_data_img_data_list)
        
        # locator is optional, but improves performance for large polydata
        vol = str(self._miscControlsDialog.vta_stats_combox.currentText())
        locator = vtk.vtkCellLocator()
        locator.SetDataSet(self._vdata[actv].images[vol])
        locator.LazyEvaluationOn()
        
        self._picker.AddLocator(locator)
        self.__prepareSceneForQVTKWidget()
        
        # update widgets
        self._miscControlsDialog.updateWidgetValues()
        self._para_coords.plot()
        self._patientSubsetSelectorDialog.updateWidgetValues(self._vdata[actv].num_patients, \
                                                             self._vdata[actv].pat_sub_group )
        
        # make the current loaded data set the *active* widget
        self.vol_tabs.setCurrentWidget(self.vol_qvtk_widgets[actv].parent())