Changeset cb4d219 in sasview for src/sas/qtgui/Perspectives/Corfunc/CorfuncPerspective.py
- Timestamp:
- Nov 24, 2017 4:13:11 AM (6 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:
- 8f83719f
- Parents:
- c6fb57c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/Perspectives/Corfunc/CorfuncPerspective.py
- Property mode changed from 100755 to 100644
rd4881f6a rcb4d219 43 43 It will also plot the extrpolation in self.extrap, if it exists.""" 44 44 45 # TODO: add interactivity to axvlines so qlimits are immediately updated! 45 46 self.fig.clf() 46 47 … … 103 104 self.setWindowTitle("Corfunc Perspective") 104 105 106 self.parent = parent 105 107 self.mapper = None 106 108 self.model = QtGui.QStandardItemModel(self) … … 108 110 self._calculator = CorfuncCalculator() 109 111 self._allow_close = True 112 self._model_item = None 113 self.txtLowerQMin.setText("0.0") 114 self.txtLowerQMin.setEnabled(False) 110 115 111 116 self._canvas = MyMplCanvas(self.model) 112 self._realplot = MyMplCanvas(self.model) 113 self.verticalLayout_7.insertWidget(0, self._canvas) 114 self.verticalLayout_7.insertWidget(1, self._realplot) 117 self.mainVerticalLayout.insertWidget(0, self._canvas) 115 118 116 119 # Connect buttons to slots. … … 126 129 def setup_slots(self): 127 130 """Connect the buttons to their appropriate slots.""" 128 self. extrapolateBtn.clicked.connect(self.extrapolate)129 self. extrapolateBtn.setEnabled(False)130 self. transformBtn.clicked.connect(self.transform)131 self. transformBtn.setEnabled(False)132 133 self.c alculateBgBtn.clicked.connect(self.calculate_background)134 self.c alculateBgBtn.setEnabled(False)131 self.cmdExtrapolate.clicked.connect(self.extrapolate) 132 self.cmdExtrapolate.setEnabled(False) 133 self.cmdTransform.clicked.connect(self.transform) 134 self.cmdTransform.setEnabled(False) 135 136 self.cmdCalculateBg.clicked.connect(self.calculate_background) 137 self.cmdCalculateBg.setEnabled(False) 135 138 136 139 self.model.itemChanged.connect(self.model_changed) … … 148 151 self.model.setItem(W.W_BACKGROUND, 149 152 QtGui.QStandardItem("0")) 150 self.model.setItem(W.W_TRANSFORM,151 QtGui.QStandardItem("Fourier"))153 #self.model.setItem(W.W_TRANSFORM, 154 # QtGui.QStandardItem("Fourier")) 152 155 self.model.setItem(W.W_GUINIERA, 153 156 QtGui.QStandardItem("0.0")) … … 185 188 try: 186 189 params, extrapolation, _ = self._calculator.compute_extrapolation() 187 self.model.setItem(W.W_GUINIERA, QtGui.QStandardItem( str(params['A'])))188 self.model.setItem(W.W_GUINIERB, QtGui.QStandardItem( str(params['B'])))189 self.model.setItem(W.W_PORODK, QtGui.QStandardItem( str(params['K'])))190 self.model.setItem(W.W_GUINIERA, QtGui.QStandardItem("{:.3g}".format(params['A']))) 191 self.model.setItem(W.W_GUINIERB, QtGui.QStandardItem("{:.3g}".format(params['B']))) 192 self.model.setItem(W.W_PORODK, QtGui.QStandardItem("{:.3g}".format(params['K']))) 190 193 self.model.setItem(W.W_PORODSIGMA, 191 QtGui.QStandardItem( str(params['sigma'])))194 QtGui.QStandardItem("{:.4g}".format(params['sigma']))) 192 195 193 196 self._canvas.extrap = extrapolation 194 197 self._canvas.draw_q_space() 195 self. transformBtn.setEnabled(True)198 self.cmdTransform.setEnabled(True) 196 199 except (LinAlgError, ValueError): 197 200 message = "These is not enough data in the fitting range. "\ … … 206 209 def transform(self): 207 210 """Calculate the real space version of the extrapolation.""" 208 method = str(self.model.item(W.W_TRANSFORM).text()).lower() 211 #method = self.model.item(W.W_TRANSFORM).text().lower() 212 213 method = "fourier" 209 214 210 215 extrap = self._canvas.extrap … … 226 231 def finish_transform(self, transforms): 227 232 params = self._calculator.extract_parameters(transforms[0]) 228 self.model.setItem(W.W_CORETHICK, 229 QtGui.QStandardItem(str(params['d0']))) 230 self.model.setItem(W.W_INTTHICK, 231 QtGui.QStandardItem(str(params['dtr']))) 232 self.model.setItem(W.W_HARDBLOCK, 233 QtGui.QStandardItem(str(params['Lc']))) 234 self.model.setItem(W.W_CRYSTAL, 235 QtGui.QStandardItem(str(params['fill']))) 236 self.model.setItem(W.W_POLY, 237 QtGui.QStandardItem(str(params['A']))) 238 self.model.setItem(W.W_PERIOD, 239 QtGui.QStandardItem(str(params['max']))) 240 self._realplot.data = transforms 241 self._realplot.draw_real_space() 233 self.model.setItem(W.W_CORETHICK, QtGui.QStandardItem("{:.3g}".format(params['d0']))) 234 self.model.setItem(W.W_INTTHICK, QtGui.QStandardItem("{:.3g}".format(params['dtr']))) 235 self.model.setItem(W.W_HARDBLOCK, QtGui.QStandardItem("{:.3g}".format(params['Lc']))) 236 self.model.setItem(W.W_CRYSTAL, QtGui.QStandardItem("{:.3g}".format(params['fill']))) 237 self.model.setItem(W.W_POLY, QtGui.QStandardItem("{:.3g}".format(params['A']))) 238 self.model.setItem(W.W_PERIOD, QtGui.QStandardItem("{:.3g}".format(params['max']))) 239 #self._realplot.data = transforms 240 241 self.update_real_space_plot(transforms) 242 243 #self._realplot.draw_real_space() 244 245 def update_real_space_plot(self, datas): 246 """take the datas tuple and create a plot in DE""" 247 248 assert isinstance(datas, tuple) 249 plot_id = id(self) 250 titles = ['1D Correlation', '3D Correlation', 'Interface Distribution Function'] 251 for i, plot in enumerate(datas): 252 plot_to_add = self.parent.createGuiData(plot) 253 # set plot properties 254 title = plot_to_add.title 255 plot_to_add.scale = 'linear' 256 plot_to_add.symbol = 'Line' 257 plot_to_add._xaxis = "x" 258 plot_to_add._xunit = "A" 259 plot_to_add._yaxis = "\Gamma" 260 if i < len(titles): 261 title = titles[i] 262 plot_to_add.name = titles[i] 263 GuiUtils.updateModelItemWithPlot(self._model_item, plot_to_add, title) 264 #self.axes.set_xlim(min(data1.x), max(data1.x) / 4) 265 pass 242 266 243 267 def setup_mapper(self): … … 247 271 self.mapper.setModel(self.model) 248 272 249 self.mapper.addMapping(self. qMin, W.W_QMIN)250 self.mapper.addMapping(self. qMax1, W.W_QMAX)251 self.mapper.addMapping(self. qMax2, W.W_QCUTOFF)252 self.mapper.addMapping(self. bg, W.W_BACKGROUND)253 self.mapper.addMapping(self.transformCombo, W.W_TRANSFORM)254 255 self.mapper.addMapping(self. guinierA, W.W_GUINIERA)256 self.mapper.addMapping(self. guinierB, W.W_GUINIERB)257 self.mapper.addMapping(self. porodK, W.W_PORODK)258 self.mapper.addMapping(self. porodSigma, W.W_PORODSIGMA)259 260 self.mapper.addMapping(self. avgCoreThick, W.W_CORETHICK)261 self.mapper.addMapping(self. avgIntThick, W.W_INTTHICK)262 self.mapper.addMapping(self. avgHardBlock, W.W_HARDBLOCK)263 self.mapper.addMapping(self. polydisp, W.W_POLY)264 self.mapper.addMapping(self. longPeriod, W.W_PERIOD)265 self.mapper.addMapping(self. localCrystal, W.W_CRYSTAL)273 self.mapper.addMapping(self.txtLowerQMax, W.W_QMIN) 274 self.mapper.addMapping(self.txtUpperQMin, W.W_QMAX) 275 self.mapper.addMapping(self.txtUpperQMax, W.W_QCUTOFF) 276 self.mapper.addMapping(self.txtBackground, W.W_BACKGROUND) 277 #self.mapper.addMapping(self.transformCombo, W.W_TRANSFORM) 278 279 self.mapper.addMapping(self.txtGuinierA, W.W_GUINIERA) 280 self.mapper.addMapping(self.txtGuinierB, W.W_GUINIERB) 281 self.mapper.addMapping(self.txtPorodK, W.W_PORODK) 282 self.mapper.addMapping(self.txtPorodSigma, W.W_PORODSIGMA) 283 284 self.mapper.addMapping(self.txtAvgCoreThick, W.W_CORETHICK) 285 self.mapper.addMapping(self.txtAvgIntThick, W.W_INTTHICK) 286 self.mapper.addMapping(self.txtAvgHardBlock, W.W_HARDBLOCK) 287 self.mapper.addMapping(self.txtPolydisp, W.W_POLY) 288 self.mapper.addMapping(self.txtLongPeriod, W.W_PERIOD) 289 self.mapper.addMapping(self.txtLocalCrystal, W.W_CRYSTAL) 266 290 267 291 self.mapper.toFirst() … … 272 296 try: 273 297 background = self._calculator.compute_background() 274 temp = QtGui.QStandardItem( str(background))298 temp = QtGui.QStandardItem("{:.4g}".format(background)) 275 299 self.model.setItem(W.W_BACKGROUND, temp) 276 300 except (LinAlgError, ValueError): … … 304 328 model_item = data_item[0] 305 329 data = GuiUtils.dataFromItem(model_item) 330 self._model_item = model_item 306 331 self._calculator.set_data(data) 307 self.c alculateBgBtn.setEnabled(True)308 self. extrapolateBtn.setEnabled(True)332 self.cmdCalculateBg.setEnabled(True) 333 self.cmdExtrapolate.setEnabled(True) 309 334 310 335 self.model.setItem(W.W_GUINIERA, QtGui.QStandardItem("")) … … 322 347 self._canvas.extrap = None 323 348 self._canvas.draw_q_space() 324 self. transformBtn.setEnabled(False)325 326 self._realplot.data = None327 self._realplot.draw_real_space()349 self.cmdTransform.setEnabled(False) 350 351 #self._realplot.data = None 352 #self._realplot.draw_real_space() 328 353 329 354 def setClosable(self, value=True):
Note: See TracChangeset
for help on using the changeset viewer.