Changeset d744767 in sasview for src/sas/qtgui/Perspectives/Inversion
- Timestamp:
- Mar 16, 2018 2:05:42 PM (7 years ago)
- Branches:
- ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
- Children:
- 47bf906
- Parents:
- 477c473 (diff), e4c475b7 (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:
-
- 9 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/Perspectives/Inversion/InversionLogic.py
r5fba4c4 rd744767 73 73 except: 74 74 err[i] = 1.0 75 print( "Error getting error", value, x[i])75 print(("Error getting error", value, x[i])) 76 76 77 77 new_plot = Data1D(x, y) … … 99 99 except: 100 100 err[i] = 1.0 101 print( "Error getting error", value, x[i])101 print(("Error getting error", value, x[i])) 102 102 103 103 new_plot = Data1D(x, y) … … 143 143 except: 144 144 err[i] = 1.0 145 print( "Error getting error", value, x[i])145 print(("Error getting error", value, x[i])) 146 146 147 147 plot.x = x … … 160 160 except: 161 161 err[i] = 1.0 162 print( "Error getting error", value, x[i])162 print(("Error getting error", value, x[i])) 163 163 164 164 plot.x = x … … 272 272 msg = "Unable to find min/max/length of \n data named %s" % \ 273 273 self.data.filename 274 raise ValueError , msg274 raise ValueError(msg) 275 275 276 276 else: … … 282 282 msg = "Unable to find min/max of \n data named %s" % \ 283 283 self.data.filename 284 raise ValueError , msg284 raise ValueError(msg) 285 285 qmax = np.sqrt(x * x + y * y) 286 286 return qmin, qmax -
src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py
r477c473 re90988c 4 4 import numpy as np 5 5 6 from PyQt4 import QtGui, QtCore, QtWebKit 7 from twisted.internet import reactor 6 from PyQt5 import QtGui, QtCore, QtWidgets 8 7 9 8 # sas-global … … 11 10 12 11 # pr inversion GUI elements 13 from InversionUtils import WIDGETS 14 import UI.TabbedInversionUI 15 from UI.TabbedInversionUI import Ui_PrInversion 16 from InversionLogic import InversionLogic 12 from .InversionUtils import WIDGETS 13 from .UI.TabbedInversionUI import Ui_PrInversion 14 from .InversionLogic import InversionLogic 17 15 18 16 # pr inversion calculation elements … … 27 25 return 0.0 28 26 27 NUMBER_OF_TERMS = 10 28 REGULARIZATION = 0.0001 29 BACKGROUND_INPUT = 0.0 30 MAX_DIST = 140.0 29 31 30 32 # TODO: Modify plot references, don't just send new 31 33 # TODO: Update help with batch capabilities 32 34 # TODO: Method to export results in some meaningful way 33 class InversionWindow(Qt Gui.QTabWidget, Ui_PrInversion):35 class InversionWindow(QtWidgets.QDialog, Ui_PrInversion): 34 36 """ 35 37 The main window for the P(r) Inversion perspective. … … 37 39 38 40 name = "Inversion" 41 estimateSignal = QtCore.pyqtSignal(tuple) 42 estimateNTSignal = QtCore.pyqtSignal(tuple) 43 calculateSignal = QtCore.pyqtSignal(tuple) 39 44 40 45 def __init__(self, parent=None, data=None): … … 46 51 self._manager = parent 47 52 self._model_item = QtGui.QStandardItem() 48 self._helpView = QtWebKit.QWebView()49 50 53 self.communicate = GuiUtils.Communicate() 51 54 52 55 self.logic = InversionLogic() 53 56 57 # Reference to Dmax window 54 58 self.dmaxWindow = None 55 59 … … 78 82 self._data_list[datum] = self._calculator.clone() 79 83 84 # dict of models for quick update after calculation 85 # {item:model} 86 self._models = {} 87 88 self.calculateAllButton.setEnabled(False) 89 self.calculateThisButton.setEnabled(False) 90 80 91 # plots for current data 81 92 self.pr_plot = None … … 86 97 87 98 self.model = QtGui.QStandardItemModel(self) 88 self.mapper = QtGui.QDataWidgetMapper(self) 99 self.mapper = QtWidgets.QDataWidgetMapper(self) 100 101 # Add validators 102 self.setupValidators() 89 103 # Link user interactions with methods 90 104 self.setupLinks() … … 119 133 # reset the closability flag 120 134 self.setClosable(value=False) 135 # Tell the MdiArea to close the container 136 self.parentWidget().close() 121 137 event.accept() 122 138 else: … … 140 156 self.noOfTermsSuggestionButton.clicked.connect(self.acceptNoTerms) 141 157 self.explorerButton.clicked.connect(self.openExplorerWindow) 142 self.backgroundInput.textChanged.connect( 143 lambda: self._calculator.set_est_bck(int(is_float( 144 str(self.backgroundInput.text()))))) 145 self.minQInput.textChanged.connect( 146 lambda: self._calculator.set_qmin(is_float( 147 str(self.minQInput.text())))) 148 self.regularizationConstantInput.textChanged.connect( 149 lambda: self._calculator.set_alpha(is_float( 150 str(self.regularizationConstantInput.text())))) 151 self.maxDistanceInput.textChanged.connect( 152 lambda: self._calculator.set_dmax(is_float( 153 str(self.maxDistanceInput.text())))) 154 self.maxQInput.textChanged.connect( 155 lambda: self._calculator.set_qmax(is_float( 156 str(self.maxQInput.text())))) 157 self.slitHeightInput.textChanged.connect( 158 lambda: self._calculator.set_slit_height(is_float( 159 str(self.slitHeightInput.text())))) 160 self.slitWidthInput.textChanged.connect( 161 lambda: self._calculator.set_slit_width(is_float( 162 str(self.slitHeightInput.text())))) 158 159 self.backgroundInput.editingFinished.connect( 160 lambda: self._calculator.set_est_bck(int(is_float(self.backgroundInput.text())))) 161 self.minQInput.editingFinished.connect( 162 lambda: self._calculator.set_qmin(is_float(self.minQInput.text()))) 163 self.regularizationConstantInput.editingFinished.connect( 164 lambda: self._calculator.set_alpha(is_float(self.regularizationConstantInput.text()))) 165 self.maxDistanceInput.editingFinished.connect( 166 lambda: self._calculator.set_dmax(is_float(self.maxDistanceInput.text()))) 167 self.maxQInput.editingFinished.connect( 168 lambda: self._calculator.set_qmax(is_float(self.maxQInput.text()))) 169 self.slitHeightInput.editingFinished.connect( 170 lambda: self._calculator.set_slit_height(is_float(self.slitHeightInput.text()))) 171 self.slitWidthInput.editingFinished.connect( 172 lambda: self._calculator.set_slit_width(is_float(self.slitHeightInput.text()))) 173 163 174 self.model.itemChanged.connect(self.model_changed) 175 self.estimateNTSignal.connect(self._estimateNTUpdate) 176 self.estimateSignal.connect(self._estimateUpdate) 177 self.calculateSignal.connect(self._calculateUpdate) 164 178 165 179 def setupMapper(self): … … 184 198 185 199 # Parameter Items 186 self.mapper.addMapping(self.regularizationConstantInput, 187 WIDGETS.W_REGULARIZATION) 188 self.mapper.addMapping(self.regConstantSuggestionButton, 189 WIDGETS.W_REGULARIZATION_SUGGEST) 200 self.mapper.addMapping(self.regularizationConstantInput, WIDGETS.W_REGULARIZATION) 201 self.mapper.addMapping(self.regConstantSuggestionButton, WIDGETS.W_REGULARIZATION_SUGGEST) 190 202 self.mapper.addMapping(self.explorerButton, WIDGETS.W_EXPLORE) 191 203 self.mapper.addMapping(self.maxDistanceInput, WIDGETS.W_MAX_DIST) 192 204 self.mapper.addMapping(self.noOfTermsInput, WIDGETS.W_NO_TERMS) 193 self.mapper.addMapping(self.noOfTermsSuggestionButton, 194 WIDGETS.W_NO_TERMS_SUGGEST) 205 self.mapper.addMapping(self.noOfTermsSuggestionButton, WIDGETS.W_NO_TERMS_SUGGEST) 195 206 196 207 # Output … … 202 213 self.mapper.addMapping(self.oscillationValue, WIDGETS.W_OSCILLATION) 203 214 self.mapper.addMapping(self.posFractionValue, WIDGETS.W_POS_FRACTION) 204 self.mapper.addMapping(self.sigmaPosFractionValue, 205 WIDGETS.W_SIGMA_POS_FRACTION) 215 self.mapper.addMapping(self.sigmaPosFractionValue, WIDGETS.W_SIGMA_POS_FRACTION) 206 216 207 217 # Main Buttons 208 218 self.mapper.addMapping(self.removeButton, WIDGETS.W_REMOVE) 209 219 self.mapper.addMapping(self.calculateAllButton, WIDGETS.W_CALCULATE_ALL) 210 self.mapper.addMapping(self.calculateThisButton, 211 WIDGETS.W_CALCULATE_VISIBLE) 220 self.mapper.addMapping(self.calculateThisButton, WIDGETS.W_CALCULATE_VISIBLE) 212 221 self.mapper.addMapping(self.helpButton, WIDGETS.W_HELP) 213 222 … … 220 229 item = QtGui.QStandardItem("") 221 230 self.model.setItem(WIDGETS.W_FILENAME, item) 222 item = QtGui.QStandardItem( '0.0')231 item = QtGui.QStandardItem(str(BACKGROUND_INPUT)) 223 232 self.model.setItem(WIDGETS.W_BACKGROUND_INPUT, item) 224 233 item = QtGui.QStandardItem("") … … 230 239 item = QtGui.QStandardItem("") 231 240 self.model.setItem(WIDGETS.W_SLIT_HEIGHT, item) 232 item = QtGui.QStandardItem( "10")241 item = QtGui.QStandardItem(str(NUMBER_OF_TERMS)) 233 242 self.model.setItem(WIDGETS.W_NO_TERMS, item) 234 item = QtGui.QStandardItem( "0.0001")243 item = QtGui.QStandardItem(str(REGULARIZATION)) 235 244 self.model.setItem(WIDGETS.W_REGULARIZATION, item) 236 item = QtGui.QStandardItem( "140.0")245 item = QtGui.QStandardItem(str(MAX_DIST)) 237 246 self.model.setItem(WIDGETS.W_MAX_DIST, item) 238 247 item = QtGui.QStandardItem("") … … 255 264 def setupWindow(self): 256 265 """Initialize base window state on init""" 257 self.setTabPosition(0)258 266 self.enableButtons() 259 267 self.estimateBgd.setChecked(True) 260 268 269 def setupValidators(self): 270 """Apply validators to editable line edits""" 271 self.noOfTermsInput.setValidator(QtGui.QIntValidator()) 272 self.regularizationConstantInput.setValidator(GuiUtils.DoubleValidator()) 273 self.maxDistanceInput.setValidator(GuiUtils.DoubleValidator()) 274 self.minQInput.setValidator(GuiUtils.DoubleValidator()) 275 self.maxQInput.setValidator(GuiUtils.DoubleValidator()) 276 self.slitHeightInput.setValidator(GuiUtils.DoubleValidator()) 277 self.slitWidthInput.setValidator(GuiUtils.DoubleValidator()) 278 261 279 ###################################################################### 262 280 # Methods for updating GUI … … 266 284 Enable buttons when data is present, else disable them 267 285 """ 286 self.calculateAllButton.setEnabled(self.logic.data_is_loaded) 287 self.calculateThisButton.setEnabled(self.logic.data_is_loaded) 268 288 self.removeButton.setEnabled(self.logic.data_is_loaded) 269 289 self.explorerButton.setEnabled(self.logic.data_is_loaded) 270 self.calculateAllButton.setEnabled(self.logic.data_is_loaded)271 self.calculateThisButton.setEnabled(self.logic.data_is_loaded)272 290 273 291 def populateDataComboBox(self, filename, data_ref): … … 277 295 :param data_ref: QStandardItem reference for data set to be added 278 296 """ 279 qt_item = QtCore.QString.fromUtf8(filename) 280 ref = QtCore.QVariant(data_ref) 281 self.dataList.addItem(qt_item, ref) 297 self.dataList.addItem(filename, data_ref) 282 298 283 299 def acceptNoTerms(self): … … 292 308 293 309 def displayChange(self): 294 variant_ref = self.dataList.itemData(self.dataList.currentIndex()) 295 self.setCurrentData(variant_ref.toPyObject()) 310 ref_item = self.dataList.itemData(self.dataList.currentIndex()) 311 self._model_item = ref_item 312 self.setCurrentData(ref_item) 313 self.setCurrentModel(ref_item) 296 314 297 315 def removeData(self): … … 304 322 self.dataList.removeItem(self.dataList.currentIndex()) 305 323 self.dataList.setCurrentIndex(0) 324 # Last file removed 325 if not self._data_list: 326 self._data = None 327 self.pr_plot = None 328 self._data_set = None 329 self.calculateThisButton.setEnabled(False) 330 self.calculateAllButton.setEnabled(False) 331 self.explorerButton.setEnabled(False) 306 332 307 333 ###################################################################### 308 334 # GUI Interaction Events 335 336 def setCurrentModel(self, ref_item): 337 '''update the current model with stored values''' 338 if ref_item in self._models: 339 self.model = self._models[ref_item] 309 340 310 341 def update_calculator(self): … … 322 353 self.setClosable(True) 323 354 self.close() 324 InversionWindow.__init__(self.parent(), self._data_list.keys())355 InversionWindow.__init__(self.parent(), list(self._data_list.keys())) 325 356 exit(0) 326 357 # TODO: Only send plot first time - otherwise, update in complete 327 358 if self.pr_plot is not None: 328 359 title = self.pr_plot.name 329 GuiUtils.updateModelItemWithPlot( 330 self._data, QtCore.QVariant(self.pr_plot), title) 360 GuiUtils.updateModelItemWithPlot(self._data, self.pr_plot, title) 331 361 if self.data_plot is not None: 332 362 title = self.data_plot.name 333 GuiUtils.updateModelItemWithPlot( 334 self._data, QtCore.QVariant(self.data_plot), title) 363 GuiUtils.updateModelItemWithPlot(self._data, self.data_plot, title) 335 364 if self.dmaxWindow is not None: 336 self.dmaxWindow.pr_state = self._calculator337 self.dmaxWindow.nfunc = self.getNFunc()365 self.dmaxWindow.pr_state = self._calculator 366 self.dmaxWindow.nfunc = self.getNFunc() 338 367 339 368 self.mapper.toFirst() … … 343 372 Open the P(r) Inversion help browser 344 373 """ 345 tree_location = (GuiUtils.HELP_DIRECTORY_LOCATION + 346 "user/sasgui/perspectives/pr/pr_help.html") 374 tree_location = "/user/sasgui/perspectives/pr/pr_help.html" 347 375 348 376 # Actual file anchor will depend on the combo box index 349 377 # Note that we can be clusmy here, since bad current_fitter_id 350 378 # will just make the page displayed from the top 351 self._helpView.load(QtCore.QUrl(tree_location)) 352 self._helpView.show() 379 self._manager.showHelp(tree_location) 353 380 354 381 def toggleBgd(self): … … 366 393 Open the Explorer window to see correlations between params and results 367 394 """ 368 from dmaximport DmaxWindow395 from .DMaxExplorerWidget import DmaxWindow 369 396 self.dmaxWindow = DmaxWindow(self._calculator, self.getNFunc(), self) 370 397 self.dmaxWindow.show() … … 383 410 if not isinstance(data_item, list): 384 411 msg = "Incorrect type passed to the P(r) Perspective" 385 raise AttributeError , msg412 raise AttributeError 386 413 387 414 for data in data_item: 415 if data in self._data_list.keys(): 416 # Don't add data if it's already in 417 return 388 418 # Create initial internal mappings 389 419 self._data_list[data] = self._calculator.clone() … … 391 421 self.data_plot_list[data] = self.data_plot 392 422 self.pr_plot_list[data] = self.pr_plot 393 ref_var = QtCore.QVariant(data) 394 self.populateDataComboBox(self._data_set.filename, ref_var) 423 self.populateDataComboBox(self._data_set.filename, data) 395 424 self.setCurrentData(data) 396 425 … … 401 430 # Estimate q range 402 431 qmin, qmax = self.logic.computeDataRange() 403 self.model.setItem(WIDGETS.W_QMIN, QtGui.QStandardItem( 404 "{:.4g}".format(qmin)))405 self. model.setItem(WIDGETS.W_QMAX, QtGui.QStandardItem(406 "{:.4g}".format(qmax)))432 self.model.setItem(WIDGETS.W_QMIN, QtGui.QStandardItem("{:.4g}".format(qmin))) 433 self.model.setItem(WIDGETS.W_QMAX, QtGui.QStandardItem("{:.4g}".format(qmax))) 434 self._models[data] = self.model 435 self.model_item = data 407 436 408 437 self.enableButtons() … … 410 439 def getNFunc(self): 411 440 """Get the n_func value from the GUI object""" 412 return int(UI.TabbedInversionUI._fromUtf8(self.noOfTermsInput.text())) 441 try: 442 nfunc = int(self.noOfTermsInput.text()) 443 except ValueError: 444 logging.error("Incorrect number of terms specified: %s" %self.noOfTermsInput.text()) 445 self.noOfTermsInput.setText(str(NUMBER_OF_TERMS)) 446 nfunc = NUMBER_OF_TERMS 447 return nfunc 413 448 414 449 def setCurrentData(self, data_ref): 415 450 """Get the current data and display as necessary""" 416 451 452 if data_ref is None: 453 return 454 417 455 if not isinstance(data_ref, QtGui.QStandardItem): 418 456 msg = "Incorrect type passed to the P(r) Perspective" 419 raise AttributeError , msg457 raise AttributeError 420 458 421 459 # Data references … … 428 466 ###################################################################### 429 467 # Thread Creators 430 431 468 def startThreadAll(self): 432 for data_ref, pr in self._data_list.items():469 for data_ref, pr in list(self._data_list.items()): 433 470 self._data_set = GuiUtils.dataFromItem(data_ref) 434 471 self._calculator = pr … … 439 476 Start a calculation thread 440 477 """ 441 from Thread import CalcPr478 from .Thread import CalcPr 442 479 443 480 # Set data before running the calculations … … 451 488 self.calc_thread = CalcPr(pr, nfunc, 452 489 error_func=self._threadError, 453 completefn=self._completed, updatefn=None) 490 completefn=self._calculateCompleted, 491 updatefn=None) 454 492 self.calc_thread.queue() 455 493 self.calc_thread.ready(2.5) … … 457 495 def performEstimateNT(self): 458 496 """ 459 460 """ 461 from Thread import EstimateNT497 Perform parameter estimation 498 """ 499 from .Thread import EstimateNT 462 500 463 501 # If a thread is already started, stop it … … 471 509 pr.slit_width = 0.0 472 510 nfunc = self.getNFunc() 511 473 512 self.estimation_thread = EstimateNT(pr, nfunc, 474 513 error_func=self._threadError, … … 482 521 Perform parameter estimation 483 522 """ 484 from Thread import EstimatePr523 from .Thread import EstimatePr 485 524 486 525 self.startThread() … … 503 542 504 543 def _estimateCompleted(self, alpha, message, elapsed): 544 ''' Send a signal to the main thread for model update''' 545 self.estimateSignal.emit((alpha, message, elapsed)) 546 547 def _estimateUpdate(self, output_tuple): 505 548 """ 506 549 Parameter estimation completed, … … 510 553 :param elapsed: computation time 511 554 """ 555 alpha, message, elapsed = output_tuple 512 556 # Save useful info 513 self.model.setItem(WIDGETS.W_COMP_TIME, 514 QtGui.QStandardItem(str(elapsed))) 515 self.regConstantSuggestionButton.setText(QtCore.QString(str(alpha))) 557 self.model.setItem(WIDGETS.W_COMP_TIME, QtGui.QStandardItem("{:.4g}".format(elapsed))) 558 self.regConstantSuggestionButton.setText("{:-3.2g}".format(alpha)) 516 559 self.regConstantSuggestionButton.setEnabled(True) 517 560 if message: … … 520 563 521 564 def _estimateNTCompleted(self, nterms, alpha, message, elapsed): 565 ''' Send a signal to the main thread for model update''' 566 self.estimateNTSignal.emit((nterms, alpha, message, elapsed)) 567 568 def _estimateNTUpdate(self, output_tuple): 522 569 """ 523 570 Parameter estimation completed, … … 527 574 :param nterms: estimated number of terms 528 575 :param elapsed: computation time 529 530 """576 """ 577 nterms, alpha, message, elapsed = output_tuple 531 578 # Save useful info 532 self.noOfTermsSuggestionButton.setText(QtCore.QString( 533 "{:n}".format(nterms))) 579 self.noOfTermsSuggestionButton.setText("{:n}".format(nterms)) 534 580 self.noOfTermsSuggestionButton.setEnabled(True) 535 self.regConstantSuggestionButton.setText(QtCore.QString( 536 "{:.3g}".format(alpha))) 581 self.regConstantSuggestionButton.setText("{:.3g}".format(alpha)) 537 582 self.regConstantSuggestionButton.setEnabled(True) 538 self.model.setItem(WIDGETS.W_COMP_TIME, 539 QtGui.QStandardItem(str(elapsed))) 583 self.model.setItem(WIDGETS.W_COMP_TIME, QtGui.QStandardItem("{:.2g}".format(elapsed))) 540 584 if message: 541 585 logging.info(message) 542 586 543 def _completed(self, out, cov, pr, elapsed): 587 def _calculateCompleted(self, out, cov, pr, elapsed): 588 ''' Send a signal to the main thread for model update''' 589 self.calculateSignal.emit((out, cov, pr, elapsed)) 590 591 def _calculateUpdate(self, output_tuple): 544 592 """ 545 593 Method called with the results when the inversion is done … … 549 597 :param pr: Invertor instance 550 598 :param elapsed: time spent computing 551 552 """599 """ 600 out, cov, pr, elapsed = output_tuple 553 601 # Save useful info 554 602 cov = np.ascontiguousarray(cov) … … 558 606 559 607 # Show result on control panel 560 561 self.model.setItem(WIDGETS.W_RG, QtGui.QStandardItem(str(pr.rg(out)))) 562 self.model.setItem(WIDGETS.W_I_ZERO, 563 QtGui.QStandardItem(str(pr.iq0(out)))) 608 self.model.setItem(WIDGETS.W_RG, QtGui.QStandardItem("{:.3g}".format(pr.rg(out)))) 609 self.model.setItem(WIDGETS.W_I_ZERO, QtGui.QStandardItem("{:.3g}".format(pr.iq0(out)))) 564 610 self.model.setItem(WIDGETS.W_BACKGROUND_INPUT, 565 611 QtGui.QStandardItem("{:.3f}".format(pr.est_bck))) 566 self.model.setItem(WIDGETS.W_BACKGROUND_OUTPUT, QtGui.QStandardItem( 567 str("{:.3g}".format(pr.background)))) 568 self.model.setItem(WIDGETS.W_CHI_SQUARED, 569 QtGui.QStandardItem(str(pr.chi2[0]))) 570 self.model.setItem(WIDGETS.W_COMP_TIME, 571 QtGui.QStandardItem(str(elapsed))) 572 self.model.setItem(WIDGETS.W_OSCILLATION, 573 QtGui.QStandardItem(str(pr.oscillations(out)))) 574 self.model.setItem(WIDGETS.W_POS_FRACTION, 575 QtGui.QStandardItem(str(pr.get_positive(out)))) 612 self.model.setItem(WIDGETS.W_BACKGROUND_OUTPUT, QtGui.QStandardItem("{:.3g}".format(pr.background))) 613 self.model.setItem(WIDGETS.W_CHI_SQUARED, QtGui.QStandardItem("{:.3g}".format(pr.chi2[0]))) 614 self.model.setItem(WIDGETS.W_COMP_TIME, QtGui.QStandardItem("{:.2g}".format(elapsed))) 615 self.model.setItem(WIDGETS.W_OSCILLATION, QtGui.QStandardItem("{:.3g}".format(pr.oscillations(out)))) 616 self.model.setItem(WIDGETS.W_POS_FRACTION, QtGui.QStandardItem("{:.3g}".format(pr.get_positive(out)))) 576 617 self.model.setItem(WIDGETS.W_SIGMA_POS_FRACTION, 577 QtGui.QStandardItem( str(pr.get_pos_err(out, cov))))618 QtGui.QStandardItem("{:.3g}".format(pr.get_pos_err(out, cov)))) 578 619 579 620 # Save Pr invertor … … 581 622 # Append data to data list 582 623 self._data_list[self._data] = self._calculator.clone() 624 625 # Update model dict 626 self._models[self.model_item] = self.model 583 627 584 628 # Create new P(r) and fit plots -
src/sas/qtgui/Perspectives/Inversion/InversionUtils.py
rbcf1215 rd744767 1 def enum(*sequential, **named): 2 enums = dict(zip(sequential, range(len(sequential))), **named) 3 return type('Enum', (), enums) 1 from sas.qtgui.Utilities.GuiUtils import enum 4 2 5 3 WIDGETS = enum( 'W_FILENAME', #0 -
src/sas/qtgui/Perspectives/Inversion/Thread.py
re7651ff rd744767 33 33 except: 34 34 if self.error_func is not None: 35 self.error_func("CalcPr.compute: %s" % sys.exc_ value)35 self.error_func("CalcPr.compute: %s" % sys.exc_info()[1]) 36 36 37 37 … … 62 62 except: 63 63 if self.error_func is not None: 64 self.error_func("EstimatePr.compute: %s" % sys.exc_ value)64 self.error_func("EstimatePr.compute: %s" % sys.exc_info()[1]) 65 65 66 66 … … 102 102 except: 103 103 if self.error_func is not None: 104 self.error_func("EstimatePr2.compute: %s" % sys.exc_ value)104 self.error_func("EstimatePr2.compute: %s" % sys.exc_info()[1]) -
src/sas/qtgui/Perspectives/Inversion/UI/TabbedInversionUI.ui
rbcf1215 rd744767 7 7 <x>0</x> 8 8 <y>0</y> 9 <width> 458</width>10 <height> 679</height>9 <width>390</width> 10 <height>409</height> 11 11 </rect> 12 12 </property> 13 13 <property name="sizePolicy"> 14 <sizepolicy hsizetype=" Expanding" vsizetype="Expanding">14 <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 15 15 <horstretch>0</horstretch> 16 16 <verstretch>0</verstretch> … … 19 19 <property name="minimumSize"> 20 20 <size> 21 <width> 458</width>22 <height> 679</height>21 <width>0</width> 22 <height>0</height> 23 23 </size> 24 24 </property> … … 33 33 </property> 34 34 <layout class="QGridLayout" name="gridLayout_7"> 35 <item row="4" column="0"> 36 <layout class="QHBoxLayout" name="horizontalLayout_8"> 37 <property name="sizeConstraint"> 38 <enum>QLayout::SetDefaultConstraint</enum> 39 </property> 40 <item> 41 <widget class="QPushButton" name="removeButton"> 42 <property name="text"> 43 <string>Remove</string> 44 </property> 45 </widget> 46 </item> 47 <item> 48 <widget class="QPushButton" name="calculateThisButton"> 49 <property name="text"> 50 <string>Calculate</string> 51 </property> 52 </widget> 53 </item> 54 <item> 55 <widget class="QPushButton" name="calculateAllButton"> 56 <property name="sizePolicy"> 57 <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> 58 <horstretch>0</horstretch> 59 <verstretch>0</verstretch> 60 </sizepolicy> 61 </property> 62 <property name="text"> 63 <string>Calculate All</string> 64 </property> 65 </widget> 66 </item> 67 <item> 68 <spacer name="horizontalSpacer"> 69 <property name="orientation"> 70 <enum>Qt::Horizontal</enum> 71 </property> 72 <property name="sizeType"> 73 <enum>QSizePolicy::Expanding</enum> 74 </property> 75 <property name="sizeHint" stdset="0"> 76 <size> 77 <width>40</width> 78 <height>20</height> 79 </size> 80 </property> 81 </spacer> 82 </item> 83 <item> 84 <widget class="QPushButton" name="helpButton"> 85 <property name="sizePolicy"> 86 <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> 87 <horstretch>0</horstretch> 88 <verstretch>0</verstretch> 89 </sizepolicy> 90 </property> 91 <property name="text"> 92 <string>Help</string> 93 </property> 94 </widget> 95 </item> 96 </layout> 97 </item> 98 <item row="3" column="0"> 99 <spacer name="verticalSpacer"> 100 <property name="orientation"> 101 <enum>Qt::Vertical</enum> 102 </property> 103 <property name="sizeHint" stdset="0"> 104 <size> 105 <width>20</width> 106 <height>2</height> 107 </size> 108 </property> 109 </spacer> 110 </item> 111 <item row="1" column="0" rowspan="2"> 35 <item row="0" column="0"> 112 36 <widget class="QTabWidget" name="PrTabWidget"> 113 37 <property name="sizePolicy"> 114 <sizepolicy hsizetype=" Expanding" vsizetype="Expanding">38 <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 115 39 <horstretch>0</horstretch> 116 40 <verstretch>0</verstretch> … … 128 52 <widget class="QWidget" name="tabMain"> 129 53 <attribute name="title"> 130 <string>P (r) Parameters</string>54 <string>Parameters</string> 131 55 </attribute> 132 <layout class="Q VBoxLayout" name="verticalLayout_6" stretch="0,1,1,0,0">133 <item >56 <layout class="QGridLayout" name="gridLayout_6"> 57 <item row="0" column="0"> 134 58 <widget class="QGroupBox" name="dataSourceGroupBox"> 59 <property name="sizePolicy"> 60 <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 61 <horstretch>0</horstretch> 62 <verstretch>0</verstretch> 63 </sizepolicy> 64 </property> 135 65 <property name="title"> 136 66 <string>I(q) data source</string> 137 67 </property> 138 68 <layout class="QGridLayout" name="gridLayout_2"> 69 <item row="0" column="0"> 70 <layout class="QHBoxLayout" name="horizontalLayout_2"> 71 <item> 72 <widget class="QLabel" name="label"> 73 <property name="text"> 74 <string>Data File Name:</string> 75 </property> 76 </widget> 77 </item> 78 <item> 79 <widget class="QComboBox" name="dataList"> 80 <property name="sizePolicy"> 81 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> 82 <horstretch>0</horstretch> 83 <verstretch>0</verstretch> 84 </sizepolicy> 85 </property> 86 </widget> 87 </item> 88 <item> 89 <widget class="QPushButton" name="removeButton"> 90 <property name="enabled"> 91 <bool>false</bool> 92 </property> 93 <property name="sizePolicy"> 94 <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> 95 <horstretch>0</horstretch> 96 <verstretch>0</verstretch> 97 </sizepolicy> 98 </property> 99 <property name="text"> 100 <string>Remove</string> 101 </property> 102 </widget> 103 </item> 104 </layout> 105 </item> 106 </layout> 107 </widget> 108 </item> 109 <item row="1" column="0"> 110 <widget class="QGroupBox" name="paramGroupBox"> 111 <property name="sizePolicy"> 112 <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 113 <horstretch>0</horstretch> 114 <verstretch>0</verstretch> 115 </sizepolicy> 116 </property> 117 <property name="toolTip"> 118 <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> 119 <html><head><meta name="qrichtext" content="1" /><style type="text/css"> 120 p, li { white-space: pre-wrap; } 121 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> 122 <pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;><span style=" font-family:'Courier New'; font-size:9pt; color:#000000;">P(r) is found by fitting a set of base functions to I(Q). The minimization involves a regularization term to ensure a smooth P(r). The regularization constant gives the size of that term. The suggested value is the value above which the output P(r) will have only one peak.</span></pre></body></html></string> 123 </property> 124 <property name="title"> 125 <string>Parameters</string> 126 </property> 127 <layout class="QGridLayout" name="gridLayout"> 128 <item row="0" column="0"> 129 <widget class="QLabel" name="label_12"> 130 <property name="sizePolicy"> 131 <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> 132 <horstretch>0</horstretch> 133 <verstretch>0</verstretch> 134 </sizepolicy> 135 </property> 136 <property name="text"> 137 <string>Number of terms</string> 138 </property> 139 </widget> 140 </item> 141 <item row="0" column="1"> 142 <widget class="QLineEdit" name="noOfTermsInput"> 143 <property name="sizePolicy"> 144 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 145 <horstretch>0</horstretch> 146 <verstretch>0</verstretch> 147 </sizepolicy> 148 </property> 149 <property name="minimumSize"> 150 <size> 151 <width>40</width> 152 <height>0</height> 153 </size> 154 </property> 155 </widget> 156 </item> 157 <item row="0" column="2"> 158 <widget class="QPushButton" name="noOfTermsSuggestionButton"> 159 <property name="enabled"> 160 <bool>false</bool> 161 </property> 162 <property name="text"> 163 <string/> 164 </property> 165 </widget> 166 </item> 139 167 <item row="1" column="0"> 168 <widget class="QLabel" name="label_13"> 169 <property name="sizePolicy"> 170 <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> 171 <horstretch>0</horstretch> 172 <verstretch>0</verstretch> 173 </sizepolicy> 174 </property> 175 <property name="minimumSize"> 176 <size> 177 <width>80</width> 178 <height>0</height> 179 </size> 180 </property> 181 <property name="text"> 182 <string>Reg. constant</string> 183 </property> 184 </widget> 185 </item> 186 <item row="1" column="1"> 187 <widget class="QLineEdit" name="regularizationConstantInput"> 188 <property name="sizePolicy"> 189 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 190 <horstretch>0</horstretch> 191 <verstretch>0</verstretch> 192 </sizepolicy> 193 </property> 194 <property name="minimumSize"> 195 <size> 196 <width>40</width> 197 <height>0</height> 198 </size> 199 </property> 200 </widget> 201 </item> 202 <item row="1" column="2"> 203 <widget class="QPushButton" name="regConstantSuggestionButton"> 204 <property name="enabled"> 205 <bool>false</bool> 206 </property> 207 <property name="text"> 208 <string/> 209 </property> 210 </widget> 211 </item> 212 <item row="2" column="0"> 213 <widget class="QLabel" name="label_14"> 214 <property name="sizePolicy"> 215 <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> 216 <horstretch>0</horstretch> 217 <verstretch>0</verstretch> 218 </sizepolicy> 219 </property> 220 <property name="text"> 221 <string>Max distance [Ã 222 ]</string> 223 </property> 224 </widget> 225 </item> 226 <item row="2" column="1"> 227 <widget class="QLineEdit" name="maxDistanceInput"> 228 <property name="sizePolicy"> 229 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 230 <horstretch>0</horstretch> 231 <verstretch>0</verstretch> 232 </sizepolicy> 233 </property> 234 <property name="minimumSize"> 235 <size> 236 <width>40</width> 237 <height>0</height> 238 </size> 239 </property> 240 </widget> 241 </item> 242 <item row="2" column="2"> 243 <widget class="QPushButton" name="explorerButton"> 244 <property name="sizePolicy"> 245 <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> 246 <horstretch>0</horstretch> 247 <verstretch>0</verstretch> 248 </sizepolicy> 249 </property> 250 <property name="minimumSize"> 251 <size> 252 <width>50</width> 253 <height>0</height> 254 </size> 255 </property> 256 <property name="toolTip"> 257 <string><html><head/><body><p>Open the D<span style=" vertical-align:sub;">max</span> explorer window.</p></body></html></string> 258 </property> 259 <property name="layoutDirection"> 260 <enum>Qt::LeftToRight</enum> 261 </property> 262 <property name="text"> 263 <string>Explore</string> 264 </property> 265 </widget> 266 </item> 267 </layout> 268 <zorder>noOfTermsInput</zorder> 269 <zorder>noOfTermsSuggestionButton</zorder> 270 <zorder>regularizationConstantInput</zorder> 271 <zorder>regConstantSuggestionButton</zorder> 272 <zorder>maxDistanceInput</zorder> 273 <zorder>explorerButton</zorder> 274 <zorder>label_13</zorder> 275 <zorder>label_12</zorder> 276 <zorder>label_14</zorder> 277 </widget> 278 </item> 279 <item row="2" column="0"> 280 <widget class="QGroupBox" name="outputsGroupBox"> 281 <property name="title"> 282 <string>Outputs</string> 283 </property> 284 <layout class="QGridLayout" name="gridLayout_4"> 285 <item row="0" column="0"> 286 <widget class="QLabel" name="label_15"> 287 <property name="text"> 288 <string><html><head/><body><p>R<span style=" vertical-align:sub;">g</span></p></body></html></string> 289 </property> 290 </widget> 291 </item> 292 <item row="0" column="1"> 293 <widget class="QLineEdit" name="rgValue"> 294 <property name="enabled"> 295 <bool>true</bool> 296 </property> 297 <property name="sizePolicy"> 298 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 299 <horstretch>0</horstretch> 300 <verstretch>0</verstretch> 301 </sizepolicy> 302 </property> 303 <property name="readOnly"> 304 <bool>true</bool> 305 </property> 306 </widget> 307 </item> 308 <item row="0" column="2"> 309 <widget class="QLabel" name="label_24"> 310 <property name="text"> 311 <string>Ã 312 </string> 313 </property> 314 </widget> 315 </item> 316 <item row="0" column="3"> 317 <widget class="QLabel" name="label_22"> 318 <property name="text"> 319 <string> </string> 320 </property> 321 </widget> 322 </item> 323 <item row="0" column="4"> 324 <widget class="QLabel" name="label_19"> 325 <property name="text"> 326 <string><html><head/><body><p>Ï<span style=" vertical-align:super;">2</span>/dof</p></body></html></string> 327 </property> 328 </widget> 329 </item> 330 <item row="0" column="5"> 331 <widget class="QLineEdit" name="chiDofValue"> 332 <property name="enabled"> 333 <bool>true</bool> 334 </property> 335 <property name="sizePolicy"> 336 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 337 <horstretch>0</horstretch> 338 <verstretch>0</verstretch> 339 </sizepolicy> 340 </property> 341 <property name="readOnly"> 342 <bool>true</bool> 343 </property> 344 </widget> 345 </item> 346 <item row="1" column="0"> 347 <widget class="QLabel" name="label_16"> 348 <property name="text"> 349 <string>I(Q=0)</string> 350 </property> 351 </widget> 352 </item> 353 <item row="1" column="1"> 354 <widget class="QLineEdit" name="iQ0Value"> 355 <property name="enabled"> 356 <bool>true</bool> 357 </property> 358 <property name="sizePolicy"> 359 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 360 <horstretch>0</horstretch> 361 <verstretch>0</verstretch> 362 </sizepolicy> 363 </property> 364 <property name="readOnly"> 365 <bool>true</bool> 366 </property> 367 </widget> 368 </item> 369 <item row="1" column="2"> 370 <widget class="QLabel" name="label_25"> 371 <property name="text"> 372 <string><html><head/><body><p>Ã 373 <span style=" vertical-align:super;">-1</span></p></body></html></string> 374 </property> 375 </widget> 376 </item> 377 <item row="1" column="4"> 378 <widget class="QLabel" name="label_20"> 379 <property name="text"> 380 <string>Oscillations</string> 381 </property> 382 </widget> 383 </item> 384 <item row="1" column="5"> 385 <widget class="QLineEdit" name="oscillationValue"> 386 <property name="enabled"> 387 <bool>true</bool> 388 </property> 389 <property name="sizePolicy"> 390 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 391 <horstretch>0</horstretch> 392 <verstretch>0</verstretch> 393 </sizepolicy> 394 </property> 395 <property name="readOnly"> 396 <bool>true</bool> 397 </property> 398 </widget> 399 </item> 400 <item row="2" column="0"> 401 <widget class="QLabel" name="label_17"> 402 <property name="text"> 403 <string>Background</string> 404 </property> 405 </widget> 406 </item> 407 <item row="2" column="1"> 408 <widget class="QLineEdit" name="backgroundValue"> 409 <property name="enabled"> 410 <bool>true</bool> 411 </property> 412 <property name="sizePolicy"> 413 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 414 <horstretch>0</horstretch> 415 <verstretch>0</verstretch> 416 </sizepolicy> 417 </property> 418 <property name="readOnly"> 419 <bool>true</bool> 420 </property> 421 </widget> 422 </item> 423 <item row="2" column="2"> 424 <widget class="QLabel" name="label_26"> 425 <property name="text"> 426 <string><html><head/><body><p>Ã 427 <span style=" vertical-align:super;">-1</span></p></body></html></string> 428 </property> 429 </widget> 430 </item> 431 <item row="2" column="4"> 432 <widget class="QLabel" name="label_21"> 433 <property name="text"> 434 <string><html><head/><body><p>P<span style=" vertical-align:super;">+</span> Fraction</p></body></html></string> 435 </property> 436 </widget> 437 </item> 438 <item row="2" column="5"> 439 <widget class="QLineEdit" name="posFractionValue"> 440 <property name="enabled"> 441 <bool>true</bool> 442 </property> 443 <property name="sizePolicy"> 444 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 445 <horstretch>0</horstretch> 446 <verstretch>0</verstretch> 447 </sizepolicy> 448 </property> 449 <property name="readOnly"> 450 <bool>true</bool> 451 </property> 452 </widget> 453 </item> 454 <item row="3" column="0"> 455 <widget class="QLabel" name="label_18"> 456 <property name="text"> 457 <string>Calc. Time</string> 458 </property> 459 </widget> 460 </item> 461 <item row="3" column="1"> 462 <widget class="QLineEdit" name="computationTimeValue"> 463 <property name="enabled"> 464 <bool>true</bool> 465 </property> 466 <property name="sizePolicy"> 467 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 468 <horstretch>0</horstretch> 469 <verstretch>0</verstretch> 470 </sizepolicy> 471 </property> 472 <property name="readOnly"> 473 <bool>true</bool> 474 </property> 475 </widget> 476 </item> 477 <item row="3" column="2"> 478 <widget class="QLabel" name="label_27"> 479 <property name="text"> 480 <string>secs</string> 481 </property> 482 </widget> 483 </item> 484 <item row="3" column="4"> 485 <widget class="QLabel" name="label_29"> 486 <property name="text"> 487 <string><html><head/><body><p>P<span style=" vertical-align:super;">+</span><span style=" vertical-align:sub;">1-Ï</span> fraction</p></body></html></string> 488 </property> 489 </widget> 490 </item> 491 <item row="3" column="5"> 492 <widget class="QLineEdit" name="sigmaPosFractionValue"> 493 <property name="enabled"> 494 <bool>true</bool> 495 </property> 496 <property name="sizePolicy"> 497 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 498 <horstretch>0</horstretch> 499 <verstretch>0</verstretch> 500 </sizepolicy> 501 </property> 502 <property name="readOnly"> 503 <bool>true</bool> 504 </property> 505 </widget> 506 </item> 507 </layout> 508 </widget> 509 </item> 510 </layout> 511 </widget> 512 <widget class="QWidget" name="tabOptions"> 513 <attribute name="title"> 514 <string>Options</string> 515 </attribute> 516 <layout class="QGridLayout" name="gridLayout_9"> 517 <item row="0" column="0"> 518 <widget class="QGroupBox" name="groupBox"> 519 <property name="title"> 520 <string>Options</string> 521 </property> 522 <layout class="QGridLayout" name="gridLayout_8"> 523 <item row="0" column="0"> 140 524 <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="2,1,0,2,2"> 141 525 <item> … … 180 564 </layout> 181 565 </item> 182 <item row="0" column="0"> 183 <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,3"> 184 <item> 185 <widget class="QLabel" name="label"> 186 <property name="text"> 187 <string>Data File Name:</string> 188 </property> 189 </widget> 190 </item> 191 <item> 192 <widget class="QComboBox" name="dataList"/> 193 </item> 194 </layout> 566 <item row="1" column="0"> 567 <widget class="QGroupBox" name="qRangeGroupBox"> 568 <property name="title"> 569 <string>Total Q range</string> 570 </property> 571 <layout class="QGridLayout" name="gridLayout_3"> 572 <item row="0" column="0"> 573 <layout class="QHBoxLayout" name="horizontalLayout_4"> 574 <item> 575 <widget class="QLabel" name="label_7"> 576 <property name="text"> 577 <string>Min:</string> 578 </property> 579 </widget> 580 </item> 581 <item> 582 <widget class="QLineEdit" name="minQInput"> 583 <property name="enabled"> 584 <bool>true</bool> 585 </property> 586 <property name="sizePolicy"> 587 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 588 <horstretch>0</horstretch> 589 <verstretch>0</verstretch> 590 </sizepolicy> 591 </property> 592 </widget> 593 </item> 594 <item> 595 <widget class="QLabel" name="label_11"> 596 <property name="text"> 597 <string><html><head/><body><p>Ã 598 <span style=" vertical-align:super;">-1</span></p></body></html></string> 599 </property> 600 </widget> 601 </item> 602 <item> 603 <widget class="QLabel" name="label_8"> 604 <property name="text"> 605 <string>Max:</string> 606 </property> 607 </widget> 608 </item> 609 <item> 610 <widget class="QLineEdit" name="maxQInput"> 611 <property name="enabled"> 612 <bool>true</bool> 613 </property> 614 <property name="sizePolicy"> 615 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 616 <horstretch>0</horstretch> 617 <verstretch>0</verstretch> 618 </sizepolicy> 619 </property> 620 </widget> 621 </item> 622 <item> 623 <widget class="QLabel" name="label_9"> 624 <property name="text"> 625 <string><html><head/><body><p>Ã 626 <span style=" vertical-align:super;">-1</span></p></body></html></string> 627 </property> 628 </widget> 629 </item> 630 </layout> 631 </item> 632 </layout> 633 </widget> 634 </item> 635 <item row="2" column="0"> 636 <widget class="QGroupBox" name="slitParamsGroupBox"> 637 <property name="title"> 638 <string>Slit Parameters</string> 639 </property> 640 <layout class="QGridLayout" name="gridLayout_5"> 641 <item row="0" column="0"> 642 <layout class="QHBoxLayout" name="horizontalLayout"> 643 <item> 644 <widget class="QLabel" name="label_3"> 645 <property name="text"> 646 <string>Height</string> 647 </property> 648 </widget> 649 </item> 650 <item> 651 <widget class="QLineEdit" name="slitHeightInput"> 652 <property name="enabled"> 653 <bool>true</bool> 654 </property> 655 <property name="sizePolicy"> 656 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 657 <horstretch>0</horstretch> 658 <verstretch>0</verstretch> 659 </sizepolicy> 660 </property> 661 </widget> 662 </item> 663 <item> 664 <widget class="QLabel" name="label_6"> 665 <property name="text"> 666 <string><html><head/><body><p>Ã 667 <span style=" vertical-align:super;">-1</span></p></body></html></string> 668 </property> 669 </widget> 670 </item> 671 <item> 672 <widget class="QLabel" name="label_4"> 673 <property name="text"> 674 <string>Width</string> 675 </property> 676 </widget> 677 </item> 678 <item> 679 <widget class="QLineEdit" name="slitWidthInput"> 680 <property name="enabled"> 681 <bool>true</bool> 682 </property> 683 <property name="sizePolicy"> 684 <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 685 <horstretch>0</horstretch> 686 <verstretch>0</verstretch> 687 </sizepolicy> 688 </property> 689 </widget> 690 </item> 691 <item> 692 <widget class="QLabel" name="label_2"> 693 <property name="text"> 694 <string><html><head/><body><p>Ã 695 <span style=" vertical-align:super;">-1</span></p></body></html></string> 696 </property> 697 </widget> 698 </item> 699 </layout> 700 </item> 701 </layout> 702 </widget> 195 703 </item> 196 704 </layout> 197 705 </widget> 198 706 </item> 199 <item> 200 <widget class="QGroupBox" name="qRangeGroupBox"> 201 <property name="title"> 202 <string>Total Q range</string> 203 </property> 204 <layout class="QGridLayout" name="gridLayout_3"> 205 <item row="0" column="0"> 206 <layout class="QHBoxLayout" name="horizontalLayout_4"> 207 <item> 208 <widget class="QLabel" name="label_7"> 209 <property name="text"> 210 <string>Min:</string> 211 </property> 212 </widget> 213 </item> 214 <item> 215 <widget class="QLineEdit" name="minQInput"> 216 <property name="enabled"> 217 <bool>true</bool> 218 </property> 219 </widget> 220 </item> 221 <item> 222 <widget class="QLabel" name="label_11"> 223 <property name="text"> 224 <string><html><head/><body><p>Ã 225 <span style=" vertical-align:super;">-1</span></p></body></html></string> 226 </property> 227 </widget> 228 </item> 229 <item> 230 <widget class="QLabel" name="label_8"> 231 <property name="text"> 232 <string>Max:</string> 233 </property> 234 </widget> 235 </item> 236 <item> 237 <widget class="QLineEdit" name="maxQInput"> 238 <property name="enabled"> 239 <bool>true</bool> 240 </property> 241 </widget> 242 </item> 243 <item> 244 <widget class="QLabel" name="label_9"> 245 <property name="text"> 246 <string><html><head/><body><p>Ã 247 <span style=" vertical-align:super;">-1</span></p></body></html></string> 248 </property> 249 </widget> 250 </item> 251 </layout> 252 </item> 253 </layout> 254 </widget> 255 </item> 256 <item> 257 <widget class="QGroupBox" name="slitParamsGroupBox"> 258 <property name="title"> 259 <string>Slit Parameters</string> 260 </property> 261 <layout class="QGridLayout" name="gridLayout"> 262 <item row="0" column="0"> 263 <layout class="QHBoxLayout" name="horizontalLayout"> 264 <item> 265 <widget class="QLabel" name="label_3"> 266 <property name="text"> 267 <string>Height</string> 268 </property> 269 </widget> 270 </item> 271 <item> 272 <widget class="QLineEdit" name="slitHeightInput"> 273 <property name="enabled"> 274 <bool>true</bool> 275 </property> 276 </widget> 277 </item> 278 <item> 279 <widget class="QLabel" name="label_6"> 280 <property name="text"> 281 <string><html><head/><body><p>Ã 282 <span style=" vertical-align:super;">-1</span></p></body></html></string> 283 </property> 284 </widget> 285 </item> 286 <item> 287 <widget class="QLabel" name="label_4"> 288 <property name="text"> 289 <string>Width</string> 290 </property> 291 </widget> 292 </item> 293 <item> 294 <widget class="QLineEdit" name="slitWidthInput"> 295 <property name="enabled"> 296 <bool>true</bool> 297 </property> 298 </widget> 299 </item> 300 <item> 301 <widget class="QLabel" name="label_2"> 302 <property name="text"> 303 <string><html><head/><body><p>Ã 304 <span style=" vertical-align:super;">-1</span></p></body></html></string> 305 </property> 306 </widget> 307 </item> 308 </layout> 309 </item> 310 </layout> 311 </widget> 312 </item> 313 <item> 314 <widget class="QGroupBox" name="paramGroupBox"> 315 <property name="sizePolicy"> 316 <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 317 <horstretch>0</horstretch> 318 <verstretch>0</verstretch> 319 </sizepolicy> 320 </property> 321 <property name="toolTip"> 322 <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> 323 <html><head><meta name="qrichtext" content="1" /><style type="text/css"> 324 p, li { white-space: pre-wrap; } 325 </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;"> 326 <pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;><span style=" font-family:'Courier New'; font-size:9pt; color:#000000;">P(r) is found by fitting a set of base functions to I(Q). The minimization involves a regularization term to ensure a smooth P(r). The regularization constant gives the size of that term. The suggested value is the value above which the output P(r) will have only one peak.</span></pre></body></html></string> 327 </property> 328 <property name="title"> 329 <string>Parameters</string> 330 </property> 331 <layout class="QGridLayout" name="gridLayout_8"> 332 <item row="1" column="0"> 333 <widget class="QLabel" name="label_13"> 334 <property name="text"> 335 <string>Regularization constant</string> 336 </property> 337 </widget> 338 </item> 339 <item row="0" column="2"> 340 <widget class="QPushButton" name="noOfTermsSuggestionButton"> 341 <property name="enabled"> 342 <bool>false</bool> 343 </property> 344 <property name="text"> 345 <string/> 346 </property> 347 </widget> 348 </item> 349 <item row="2" column="2"> 350 <widget class="QPushButton" name="explorerButton"> 351 <property name="sizePolicy"> 352 <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> 353 <horstretch>0</horstretch> 354 <verstretch>0</verstretch> 355 </sizepolicy> 356 </property> 357 <property name="toolTip"> 358 <string><html><head/><body><p>Open the D<span style=" vertical-align:sub;">max</span> explorer window.</p></body></html></string> 359 </property> 360 <property name="layoutDirection"> 361 <enum>Qt::LeftToRight</enum> 362 </property> 363 <property name="text"> 364 <string>Explore</string> 365 </property> 366 </widget> 367 </item> 368 <item row="0" column="1"> 369 <widget class="QLineEdit" name="noOfTermsInput"/> 370 </item> 371 <item row="2" column="1"> 372 <widget class="QLineEdit" name="maxDistanceInput"/> 373 </item> 374 <item row="0" column="0"> 375 <widget class="QLabel" name="label_12"> 376 <property name="text"> 377 <string>Number of Terms</string> 378 </property> 379 </widget> 380 </item> 381 <item row="1" column="2"> 382 <widget class="QPushButton" name="regConstantSuggestionButton"> 383 <property name="enabled"> 384 <bool>false</bool> 385 </property> 386 <property name="text"> 387 <string/> 388 </property> 389 </widget> 390 </item> 391 <item row="2" column="0"> 392 <widget class="QLabel" name="label_14"> 393 <property name="text"> 394 <string>Max distance [Ã 395 ]</string> 396 </property> 397 </widget> 398 </item> 399 <item row="1" column="1"> 400 <widget class="QLineEdit" name="regularizationConstantInput"/> 401 </item> 402 </layout> 403 </widget> 404 </item> 405 <item> 406 <widget class="QGroupBox" name="outputsGroupBox"> 407 <property name="title"> 408 <string>Outputs</string> 409 </property> 410 <layout class="QGridLayout" name="gridLayout_4"> 411 <item row="0" column="1"> 412 <widget class="QLabel" name="label_23"> 413 <property name="text"> 414 <string>Calculated Value</string> 415 </property> 416 <property name="alignment"> 417 <set>Qt::AlignCenter</set> 418 </property> 419 </widget> 420 </item> 421 <item row="0" column="2"> 422 <widget class="QLabel" name="label_28"> 423 <property name="text"> 424 <string>Units</string> 425 </property> 426 </widget> 427 </item> 428 <item row="6" column="1"> 429 <widget class="QLineEdit" name="oscillationValue"> 430 <property name="enabled"> 431 <bool>false</bool> 432 </property> 433 </widget> 434 </item> 435 <item row="3" column="0"> 436 <widget class="QLabel" name="label_17"> 437 <property name="text"> 438 <string>Background</string> 439 </property> 440 </widget> 441 </item> 442 <item row="7" column="1"> 443 <widget class="QLineEdit" name="posFractionValue"> 444 <property name="enabled"> 445 <bool>false</bool> 446 </property> 447 </widget> 448 </item> 449 <item row="2" column="2"> 450 <widget class="QLabel" name="label_25"> 451 <property name="text"> 452 <string>Ã 453 -1</string> 454 </property> 455 </widget> 456 </item> 457 <item row="3" column="1"> 458 <widget class="QLineEdit" name="backgroundValue"> 459 <property name="enabled"> 460 <bool>false</bool> 461 </property> 462 </widget> 463 </item> 464 <item row="1" column="0"> 465 <widget class="QLabel" name="label_15"> 466 <property name="text"> 467 <string>Rg</string> 468 </property> 469 </widget> 470 </item> 471 <item row="1" column="2"> 472 <widget class="QLabel" name="label_24"> 473 <property name="text"> 474 <string>Ã 475 </string> 476 </property> 477 </widget> 478 </item> 479 <item row="6" column="0"> 480 <widget class="QLabel" name="label_20"> 481 <property name="text"> 482 <string>Oscillations</string> 483 </property> 484 </widget> 485 </item> 486 <item row="4" column="0"> 487 <widget class="QLabel" name="label_18"> 488 <property name="text"> 489 <string>Computation Time</string> 490 </property> 491 </widget> 492 </item> 493 <item row="4" column="2"> 494 <widget class="QLabel" name="label_27"> 495 <property name="text"> 496 <string>secs</string> 497 </property> 498 </widget> 499 </item> 500 <item row="2" column="0"> 501 <widget class="QLabel" name="label_16"> 502 <property name="text"> 503 <string>I(Q=0)</string> 504 </property> 505 </widget> 506 </item> 507 <item row="3" column="2"> 508 <widget class="QLabel" name="label_26"> 509 <property name="text"> 510 <string>Ã 511 -1</string> 512 </property> 513 </widget> 514 </item> 515 <item row="0" column="0"> 516 <widget class="QLabel" name="label_22"> 517 <property name="text"> 518 <string>Parameter</string> 519 </property> 520 </widget> 521 </item> 522 <item row="8" column="0"> 523 <widget class="QLabel" name="label_29"> 524 <property name="text"> 525 <string>1-sigma positive fraction</string> 526 </property> 527 </widget> 528 </item> 529 <item row="2" column="1"> 530 <widget class="QLineEdit" name="iQ0Value"> 531 <property name="enabled"> 532 <bool>false</bool> 533 </property> 534 </widget> 535 </item> 536 <item row="5" column="0"> 537 <widget class="QLabel" name="label_19"> 538 <property name="text"> 539 <string>Chi^2/dof</string> 540 </property> 541 </widget> 542 </item> 543 <item row="1" column="1"> 544 <widget class="QLineEdit" name="rgValue"> 545 <property name="enabled"> 546 <bool>false</bool> 547 </property> 548 </widget> 549 </item> 550 <item row="5" column="1"> 551 <widget class="QLineEdit" name="chiDofValue"> 552 <property name="enabled"> 553 <bool>false</bool> 554 </property> 555 </widget> 556 </item> 557 <item row="4" column="1"> 558 <widget class="QLineEdit" name="computationTimeValue"> 559 <property name="enabled"> 560 <bool>false</bool> 561 </property> 562 </widget> 563 </item> 564 <item row="7" column="0"> 565 <widget class="QLabel" name="label_21"> 566 <property name="text"> 567 <string>Positive Fraction</string> 568 </property> 569 </widget> 570 </item> 571 <item row="8" column="1"> 572 <widget class="QLineEdit" name="sigmaPosFractionValue"> 573 <property name="enabled"> 574 <bool>false</bool> 575 </property> 576 </widget> 577 </item> 578 </layout> 579 </widget> 707 <item row="1" column="0"> 708 <spacer name="verticalSpacer"> 709 <property name="orientation"> 710 <enum>Qt::Vertical</enum> 711 </property> 712 <property name="sizeHint" stdset="0"> 713 <size> 714 <width>20</width> 715 <height>255</height> 716 </size> 717 </property> 718 </spacer> 580 719 </item> 581 720 </layout> 582 721 </widget> 583 722 </widget> 723 </item> 724 <item row="1" column="0"> 725 <layout class="QHBoxLayout" name="horizontalLayout_8"> 726 <property name="sizeConstraint"> 727 <enum>QLayout::SetDefaultConstraint</enum> 728 </property> 729 <item> 730 <widget class="QPushButton" name="calculateThisButton"> 731 <property name="enabled"> 732 <bool>true</bool> 733 </property> 734 <property name="text"> 735 <string>Calculate</string> 736 </property> 737 </widget> 738 </item> 739 <item> 740 <widget class="QPushButton" name="calculateAllButton"> 741 <property name="enabled"> 742 <bool>true</bool> 743 </property> 744 <property name="sizePolicy"> 745 <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> 746 <horstretch>0</horstretch> 747 <verstretch>0</verstretch> 748 </sizepolicy> 749 </property> 750 <property name="text"> 751 <string>Calculate All</string> 752 </property> 753 </widget> 754 </item> 755 <item> 756 <spacer name="horizontalSpacer"> 757 <property name="orientation"> 758 <enum>Qt::Horizontal</enum> 759 </property> 760 <property name="sizeType"> 761 <enum>QSizePolicy::Expanding</enum> 762 </property> 763 <property name="sizeHint" stdset="0"> 764 <size> 765 <width>40</width> 766 <height>20</height> 767 </size> 768 </property> 769 </spacer> 770 </item> 771 <item> 772 <widget class="QPushButton" name="helpButton"> 773 <property name="sizePolicy"> 774 <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> 775 <horstretch>0</horstretch> 776 <verstretch>0</verstretch> 777 </sizepolicy> 778 </property> 779 <property name="text"> 780 <string>Help</string> 781 </property> 782 </widget> 783 </item> 784 </layout> 584 785 </item> 585 786 </layout> -
src/sas/qtgui/Perspectives/Inversion/UI/__init__.py
- Property mode changed from 100755 to 100644
-
src/sas/qtgui/Perspectives/Inversion/__init__.py
- Property mode changed from 100755 to 100644
Note: See TracChangeset
for help on using the changeset viewer.