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
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())