Changeset 1bd266b in sasview for src/sas/qtgui/Perspectives/Inversion
- Timestamp:
- Sep 8, 2018 10:52:16 AM (6 years ago)
- Branches:
- ESS_GUI, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
- Children:
- 4d959c8
- Parents:
- e908916 (diff), 5e0891b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Location:
- src/sas/qtgui/Perspectives/Inversion
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/Perspectives/Inversion/DMaxExplorerWidget.py
rb0ba43e re908916 42 42 self.parent = parent 43 43 44 self.setWindowTitle("D ââExplorer")44 self.setWindowTitle("Dmax Explorer") 45 45 46 46 self.pr_state = pr_state … … 116 116 bck = [] 117 117 chi2 = [] 118 118 plotable_xs = [] #Introducing this to make sure size of x and y for plotting is the same.8 119 119 try: 120 120 dmin = float(self.model.item(W.DMIN).text()) … … 128 128 129 129 original = self.pr_state.d_max 130 130 131 for x in xs: 131 132 self.pr_state.d_max = x … … 140 141 bck.append(self.pr_state.background) 141 142 chi2.append(self.pr_state.chi2) 143 plotable_xs.append(x) 142 144 except Exception as ex: 143 145 # This inversion failed, skip this D_max value … … 188 190 y_unit = "a.u." 189 191 190 data = Data1D( xs, ys)192 data = Data1D(plotable_xs, ys) 191 193 if self.hasPlot: 192 194 self.plot.removePlot(None) -
src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py
r3c6ecd9 r34cf92c 43 43 estimateSignal = QtCore.pyqtSignal(tuple) 44 44 estimateNTSignal = QtCore.pyqtSignal(tuple) 45 estimateDynamicNTSignal = QtCore.pyqtSignal(tuple) 46 estimateDynamicSignal = QtCore.pyqtSignal(tuple) 45 47 calculateSignal = QtCore.pyqtSignal(tuple) 46 48 … … 194 196 self.model.itemChanged.connect(self.model_changed) 195 197 self.estimateNTSignal.connect(self._estimateNTUpdate) 198 self.estimateDynamicNTSignal.connect(self._estimateDynamicNTUpdate) 199 self.estimateDynamicSignal.connect(self._estimateDynamicUpdate) 196 200 self.estimateSignal.connect(self._estimateUpdate) 197 201 self.calculateSignal.connect(self._calculateUpdate) 202 203 self.maxDistanceInput.textEdited.connect(self.performEstimateDynamic) 198 204 199 205 def setupMapper(self): … … 309 315 and not self.isCalculating) 310 316 self.removeButton.setEnabled(self.logic.data_is_loaded) 311 self.explorerButton.setEnabled(self.logic.data_is_loaded 312 and np.all(self.logic.data.dy != 0)) 317 self.explorerButton.setEnabled(self.logic.data_is_loaded) 313 318 self.stopButton.setVisible(self.isCalculating) 314 319 self.regConstantSuggestionButton.setEnabled( … … 501 506 self.dataPlot = self._dataList[data_ref].get(DICT_KEYS[2]) 502 507 self.performEstimate() 508 509 def updateDynamicGuiValues(self): 510 pr = self._calculator 511 alpha = self._calculator.suggested_alpha 512 self.model.setItem(WIDGETS.W_MAX_DIST, 513 QtGui.QStandardItem("{:.4g}".format(pr.get_dmax()))) 514 self.regConstantSuggestionButton.setText("{:-3.2g}".format(alpha)) 515 self.noOfTermsSuggestionButton.setText( 516 "{:n}".format(self.nTermsSuggested)) 517 518 self.enableButtons() 503 519 504 520 def updateGuiValues(self): … … 641 657 self.calcThread.ready(2.5) 642 658 659 #Perform estimate should be done on value enter this should solve delay problem 660 self.performEstimate() 661 643 662 def stopCalcThread(self): 644 663 """ Stops a thread if it exists and is running """ … … 667 686 error_func=self._threadError, 668 687 completefn=self._estimateNTCompleted, 688 updatefn=None) 689 self.estimationThreadNT.queue() 690 self.estimationThreadNT.ready(2.5) 691 692 def performEstimateDynamicNT(self): 693 """ 694 Perform parameter estimation 695 """ 696 from .Thread import EstimateNT 697 698 self.updateCalculator() 699 700 # If a thread is already started, stop it 701 self.stopEstimateNTThread() 702 703 pr = self._calculator.clone() 704 # Skip the slit settings for the estimation 705 # It slows down the application and it doesn't change the estimates 706 pr.slit_height = 0.0 707 pr.slit_width = 0.0 708 nfunc = self.getNFunc() 709 710 self.estimationThreadNT = EstimateNT(pr, nfunc, 711 error_func=self._threadError, 712 completefn=self._estimateDynamicNTCompleted, 669 713 updatefn=None) 670 714 self.estimationThreadNT.queue() … … 693 737 self.estimationThread.ready(2.5) 694 738 739 def performEstimateDynamic(self): 740 """ 741 Perform parameter estimation 742 """ 743 from .Thread import EstimatePr 744 745 # If a thread is already started, stop it 746 self.stopEstimationThread() 747 748 self.estimationThread = EstimatePr(self._calculator.clone(), 749 self.getNFunc(), 750 error_func=self._threadError, 751 completefn=self._estimateDynamicCompleted, 752 updatefn=None) 753 self.estimationThread.queue() 754 self.estimationThread.ready(2.5) 755 695 756 def stopEstimationThread(self): 696 757 """ Stop the estimation thread if it exists and is running """ … … 705 766 ''' Send a signal to the main thread for model update''' 706 767 self.estimateSignal.emit((alpha, message, elapsed)) 768 769 def _estimateDynamicCompleted(self, alpha, message, elapsed): 770 ''' Send a signal to the main thread for model update''' 771 self.estimateDynamicSignal.emit((alpha, message, elapsed)) 707 772 708 773 def _estimateUpdate(self, output_tuple): … … 721 786 self.performEstimateNT() 722 787 788 def _estimateDynamicUpdate(self, output_tuple): 789 """ 790 Parameter estimation completed, 791 display the results to the user 792 793 :param alpha: estimated best alpha 794 :param elapsed: computation time 795 """ 796 alpha, message, elapsed = output_tuple 797 self._calculator.alpha = alpha 798 self._calculator.elapsed += self._calculator.elapsed 799 if message: 800 logger.info(message) 801 self.performEstimateDynamicNT() 802 723 803 def _estimateNTCompleted(self, nterms, alpha, message, elapsed): 724 804 ''' Send a signal to the main thread for model update''' 725 805 self.estimateNTSignal.emit((nterms, alpha, message, elapsed)) 806 807 def _estimateDynamicNTCompleted(self, nterms, alpha, message, elapsed): 808 ''' Send a signal to the main thread for model update''' 809 self.estimateDynamicNTSignal.emit((nterms, alpha, message, elapsed)) 726 810 727 811 def _estimateNTUpdate(self, output_tuple): … … 747 831 self.startThread() 748 832 833 def _estimateDynamicNTUpdate(self, output_tuple): 834 """ 835 Parameter estimation completed, 836 display the results to the user 837 838 :param alpha: estimated best alpha 839 :param nterms: estimated number of terms 840 :param elapsed: computation time 841 """ 842 nterms, alpha, message, elapsed = output_tuple 843 self._calculator.elapsed += elapsed 844 self._calculator.suggested_alpha = alpha 845 self.nTermsSuggested = nterms 846 # Save useful info 847 self.updateDynamicGuiValues() 848 if message: 849 logger.info(message) 850 if self.isBatch: 851 self.acceptAlpha() 852 self.acceptNoTerms() 853 self.startThread() 854 749 855 def _calculateCompleted(self, out, cov, pr, elapsed): 750 856 ''' Send a signal to the main thread for model update'''
Note: See TracChangeset
for help on using the changeset viewer.