Changeset 2585 for trunk/GSASIIimgGUI.py
- Timestamp:
- Dec 15, 2016 5:59:12 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIimgGUI.py
r2584 r2585 49 49 ################################################################################ 50 50 51 def GetImageZ(G2frame,data,newRange= True):51 def GetImageZ(G2frame,data,newRange=False): 52 52 '''Gets image & applies dark, background & flat background corrections 53 53 :param wx.Frame G2frame: main GSAS-II frame … … 102 102 sumImg -= int(data.get('Flat Bkg',0)) 103 103 Imax = np.max(sumImg) 104 if newRange:104 if 'range' not in data or newRange: 105 105 data['range'] = [(0,Imax),[0,Imax]] 106 106 return sumImg … … 516 516 maxSel.SetValue(int(100*sqrtDeltOne/sqrtDeltZero)) 517 517 minSel.SetValue(int(100*(data['range'][1][0]/DeltOne))) 518 wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event) 518 #wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event) 519 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab('2D Powder Image','mpl',newImage=False) 520 Page.ImgObj.set_clim([data['range'][1][0],data['range'][1][1]]) 521 Page.canvas.draw_idle() 519 522 520 523 def OnMinVal(invalid,value,tc): 521 524 minSel.SetValue(int(100*(data['range'][1][0]-max(0.0,data['range'][0][0]))/DeltOne)) 522 wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event) 525 #wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event) 526 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab('2D Powder Image','mpl',newImage=False) 527 Page.ImgObj.set_clim([data['range'][1][0],data['range'][1][1]]) 528 Page.canvas.draw_idle() 523 529 524 530 G2frame.prevMaxValue = None … … 554 560 Page.ImgObj.set_clim([data['range'][1][0],data['range'][1][1]]) 555 561 Page.canvas.draw_idle() 562 def OnAutoSet(event): 563 '''Responds to a button labeled 95%, etc; Sets the Imax and Imin values 564 for the image so that 95% (etc.) of pixels are inside the color map limits. 565 An equal number of pixels are dropped at the minimum and maximum levels. 566 ''' 567 val = int(event.GetEventObject().GetLabel()[:-1]) # get value from button 568 margin = (100-val)/2. 569 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab('2D Powder Image','mpl',newImage=False) 570 data['range'][1][0] = int(np.percentile(Page.ImgObj.get_array().compressed(),margin)) 571 data['range'][1][1] = int(np.percentile(Page.ImgObj.get_array().compressed(),100-margin)) 572 DeltOne = data['range'][1][1]-max(0.0,data['range'][0][0]) 573 sqrtDeltOne = math.sqrt(DeltOne) 574 maxSel.SetValue(int(100*sqrtDeltOne/sqrtDeltZero)) 575 minSel.SetValue(int(100*(data['range'][1][0]/DeltOne))) 576 maxVal.SetValue(int(data['range'][1][1])) 577 minVal.SetValue(int(data['range'][1][0])) 578 Page.ImgObj.set_clim([data['range'][1][0],data['range'][1][1]]) 579 Page.canvas.draw_idle() 556 580 557 maxSizer = wx.FlexGridSizer(0, 3,0,5)581 maxSizer = wx.FlexGridSizer(0,4,0,5) 558 582 maxSizer.AddGrowableCol(1,1) 559 583 maxSizer.SetFlexibleDirection(wx.HORIZONTAL) … … 566 590 maxSizer.Add(maxSel,1,wx.EXPAND) 567 591 maxSel.Bind(wx.EVT_SLIDER, OnMaxSlider) 568 maxVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['range'][1],1,min=data['range'][ 1][0]+1,569 max=data['range'][ 1][1]-1,typeHint=int,OnLeave=OnMaxVal)592 maxVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['range'][1],1,min=data['range'][0][0]+1, 593 max=data['range'][0][1]-1,typeHint=int,OnLeave=OnMaxVal) 570 594 maxSizer.Add(maxVal,0,WACV) 595 b99 = wx.Button(G2frame.dataDisplay,-1,'99%',style=wx.BU_EXACTFIT) 596 b99.Bind(wx.EVT_BUTTON,OnAutoSet) 597 maxSizer.Add(b99,0,WACV) 571 598 maxSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Min intensity'),0,WACV) 572 599 minSel = wx.Slider(parent=G2frame.dataDisplay,style=wx.SL_HORIZONTAL, … … 577 604 max=data['range'][0][1],typeHint=int,OnLeave=OnMinVal) 578 605 maxSizer.Add(minVal,0,WACV) 606 b95 = wx.Button(G2frame.dataDisplay,-1,'95%',style=wx.BU_EXACTFIT) 607 b95.Bind(wx.EVT_BUTTON,OnAutoSet) 608 maxSizer.Add(b95,0,WACV) 579 609 return maxSizer 580 610 … … 1260 1290 frame = data['Frames'] #3+ x,y pairs 1261 1291 Arcs = data['Arcs'] #radius, start/end azimuth, thickness 1262 1292 1293 ###################################################################### 1294 CId = G2gd.GetPatternTreeItemId(G2frame,G2frame.Image,'Image Controls') 1295 controlData = G2frame.PatternTree.GetItemPyData(CId) 1296 def OnMaxVal(invalid,value,tc): 1297 DeltOne = controlData['range'][1][1]-max(0.0,controlData['range'][0][0]) 1298 sqrtDeltOne = math.sqrt(DeltOne) 1299 maxSel.SetValue(int(100*sqrtDeltOne/sqrtDeltZero)) 1300 minSel.SetValue(int(100*(controlData['range'][1][0]/DeltOne))) 1301 #wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event) 1302 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab('2D Powder Image','mpl',newImage=False) 1303 Page.ImgObj.set_clim([controlData['range'][1][0],controlData['range'][1][1]]) 1304 Page.canvas.draw_idle() 1305 1306 def OnMinVal(invalid,value,tc): 1307 minSel.SetValue(int(100*(controlData['range'][1][0]-max(0.0,controlData['range'][0][0]))/DeltOne)) 1308 #wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=tc.event) 1309 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab('2D Powder Image','mpl',newImage=False) 1310 Page.ImgObj.set_clim([controlData['range'][1][0],controlData['range'][1][1]]) 1311 Page.canvas.draw_idle() 1312 1313 G2frame.prevMaxValue = None 1314 def OnMaxSlider(event): 1315 if G2frame.prevMaxValue == maxSel.GetValue(): # if this val has been processed, no need to repeat 1316 return 1317 G2frame.prevMaxValue = maxSel.GetValue() 1318 sqrtDeltZero = math.sqrt(controlData['range'][0][1]) 1319 imax = int(maxSel.GetValue())*sqrtDeltZero/100. 1320 controlData['range'][1][1] = imax**2 1321 controlData['range'][1][0] = max(0.0,min(controlData['range'][1][1]-1,controlData['range'][1][0])) 1322 DeltOne = max(1.0,controlData['range'][1][1]-controlData['range'][1][0]) 1323 minSel.SetValue(int(100*(controlData['range'][1][0]/DeltOne))) 1324 maxVal.SetValue(int(controlData['range'][1][1])) 1325 #wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event) # replace with code below for more speed 1326 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab('2D Powder Image','mpl',newImage=False) 1327 Page.ImgObj.set_clim([controlData['range'][1][0],controlData['range'][1][1]]) 1328 Page.canvas.draw_idle() 1329 1330 G2frame.prevMinValue = None 1331 def OnMinSlider(event): 1332 if G2frame.prevMinValue == minSel.GetValue(): # if this val has been processed, no need to repeat 1333 return 1334 G2frame.prevMinValue = minSel.GetValue() 1335 DeltOne = controlData['range'][1][1]-controlData['range'][1][0] 1336 imin = int(minSel.GetValue())*DeltOne/100. 1337 controlData['range'][1][0] = max(0.0,min(controlData['range'][1][1]-1,imin)) 1338 minVal.SetValue(int(controlData['range'][1][0])) 1339 #wx.CallAfter(G2plt.PlotExposedImage,G2frame,event=event) # replace with code below for more speed 1340 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab('2D Powder Image','mpl',newImage=False) 1341 Page.ImgObj.set_clim([controlData['range'][1][0],controlData['range'][1][1]]) 1342 Page.canvas.draw_idle() 1343 def OnAutoSet(event): 1344 '''Responds to a button labeled 95%, etc; Sets the Imax and Imin values 1345 for the image so that 95% (etc.) of pixels are inside the color map limits. 1346 An equal number of pixels are dropped at the minimum and maximum levels. 1347 ''' 1348 val = int(event.GetEventObject().GetLabel()[:-1]) # get value from button 1349 margin = (100-val)/2. 1350 new,plotNum,Page,Plot,lim = G2frame.G2plotNB.FindPlotTab('2D Powder Image','mpl',newImage=False) 1351 controlData['range'][1][0] = int(np.percentile(Page.ImgObj.get_array().compressed(),margin)) 1352 controlData['range'][1][1] = int(np.percentile(Page.ImgObj.get_array().compressed(),100-margin)) 1353 DeltOne = controlData['range'][1][1]-max(0.0,controlData['range'][0][0]) 1354 sqrtDeltOne = math.sqrt(DeltOne) 1355 maxSel.SetValue(int(100*sqrtDeltOne/sqrtDeltZero)) 1356 minSel.SetValue(int(100*(controlData['range'][1][0]/DeltOne))) 1357 maxVal.SetValue(int(controlData['range'][1][1])) 1358 minVal.SetValue(int(controlData['range'][1][0])) 1359 Page.ImgObj.set_clim([controlData['range'][1][0],controlData['range'][1][1]]) 1360 Page.canvas.draw_idle() 1361 1362 maxSizer = wx.FlexGridSizer(0,4,0,5) 1363 maxSizer.AddGrowableCol(1,1) 1364 maxSizer.SetFlexibleDirection(wx.HORIZONTAL) 1365 sqrtDeltZero = max(1.0,math.sqrt(controlData['range'][0][1]-max(0.0,controlData['range'][0][0]))) 1366 DeltOne = max(1.0,controlData['range'][1][1]-max(0.0,controlData['range'][0][0])) 1367 sqrtDeltOne = math.sqrt(DeltOne) 1368 maxSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Max intensity'),0,WACV) 1369 maxSel = wx.Slider(parent=G2frame.dataDisplay,style=wx.SL_HORIZONTAL, 1370 value=int(100*sqrtDeltOne/sqrtDeltZero),size=[300,-1]) 1371 maxSizer.Add(maxSel,1,wx.EXPAND) 1372 maxSel.Bind(wx.EVT_SLIDER, OnMaxSlider) 1373 maxVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,controlData['range'][1],1,min=controlData['range'][0][0]+1, 1374 max=controlData['range'][0][1]-1,typeHint=int,OnLeave=OnMaxVal) 1375 maxSizer.Add(maxVal,0,WACV) 1376 b99 = wx.Button(G2frame.dataDisplay,-1,'99%',style=wx.BU_EXACTFIT) 1377 b99.Bind(wx.EVT_BUTTON,OnAutoSet) 1378 maxSizer.Add(b99,0,WACV) 1379 maxSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Min intensity'),0,WACV) 1380 minSel = wx.Slider(parent=G2frame.dataDisplay,style=wx.SL_HORIZONTAL, 1381 value=int(100*(controlData['range'][1][0]-max(0.0,controlData['range'][0][0]))/DeltOne)) 1382 maxSizer.Add(minSel,1,wx.EXPAND) 1383 minSel.Bind(wx.EVT_SLIDER, OnMinSlider) 1384 minVal = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,controlData['range'][1],0, 1385 max=controlData['range'][0][1],typeHint=int,OnLeave=OnMinVal) 1386 maxSizer.Add(minVal,0,WACV) 1387 b95 = wx.Button(G2frame.dataDisplay,-1,'95%',style=wx.BU_EXACTFIT) 1388 b95.Bind(wx.EVT_BUTTON,OnAutoSet) 1389 maxSizer.Add(b95,0,WACV) 1390 mainSizer.Add(maxSizer,0,wx.ALIGN_LEFT|wx.EXPAND) 1391 1263 1392 littleSizer = wx.FlexGridSizer(0,3,0,5) 1264 1393 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Lower/Upper limits '),0,WACV)
Note: See TracChangeset
for help on using the changeset viewer.