Changeset 87
- Timestamp:
- Jun 15, 2010 1:21:20 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/GSASII.py ¶
r85 r87 415 415 Data['range'] = [(Imin,Imax),[Imin,Imax]] 416 416 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Image Controls'),Data) 417 Masks = {' Spots':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]}417 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]} 418 418 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Masks'),Masks) 419 419 self.PatternTree.SetItemPyData(Id,[Size,imagefile]) … … 774 774 self.PatternTree.SelectItem(Id) 775 775 self.PatternTree.Expand(Id) 776 Masks = {' Spots':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]}776 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]} 777 777 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Masks'),Masks) 778 778 self.PickId = G2gd.GetPatternTreeItemId(self,self.root,outname) -
TabularUnified trunk/GSASIIimage.py ¶
r85 r87 434 434 return True 435 435 436 def Make2ThetaAzimuthMap(data, imageN):436 def Make2ThetaAzimuthMap(data,masks,imageN): 437 437 #transforms 2D image from x,y space to 2-theta,azimuth space based on detector orientation 438 438 pixelSize = data['pixelSize'] … … 442 442 tax = np.asfarray(tax*scalex,dtype=np.float32) 443 443 tay = np.asfarray(tay*scaley,dtype=np.float32) 444 return GetTthAzm(tay,tax,data) #2-theta & azimuth arrays 444 #make position masks here 445 XY = np.dstack((tax,tay)) 446 return GetTthAzm(tay,tax,data),0 #2-theta & azimuth arrays & position mask 445 447 446 def Fill2ThetaAzimuthMap(masks,TA, image):448 def Fill2ThetaAzimuthMap(masks,TA,tam,image): 447 449 import numpy.ma as ma 448 450 Zlim = masks['Thresholds'][1] … … 481 483 dlg.Update(0) 482 484 imageN = len(self.ImageZ) 483 TA = Make2ThetaAzimuthMap(data,imageN) #2-theta & azimuth arrays485 TA,tam = Make2ThetaAzimuthMap(data,masks,imageN) #2-theta & azimuth arrays & create position mask 484 486 dlg.Update(1) 485 487 print 'Fill map with 2-theta/azimuth values' 486 tax,tay,taz = Fill2ThetaAzimuthMap(masks,TA, self.ImageZ)488 tax,tay,taz = Fill2ThetaAzimuthMap(masks,TA,tam,self.ImageZ) #and apply masks 487 489 del TA 488 490 dlg.Update(2) … … 496 498 dlg.Update(4) 497 499 t1 = time.time() 500 print "Elapsed time:","%8.3f"%(t1-t0), "s" 498 501 print 'Integration complete' 499 print "Elapsed time:","%8.3f"%(t1-t0), "s"500 502 finally: 501 503 dlg.Destroy() -
TabularUnified trunk/GSASIIplot.py ¶
r85 r87 11 11 import GSASIIIO as G2IO 12 12 import GSASIIpwdGUI as G2pdG 13 import GSASIIimgGUI as G2imG 13 14 from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas 14 15 from matplotlib.backends.backend_wxagg import NavigationToolbar2Wx as Toolbar … … 49 50 self.status = parent.CreateStatusBar() 50 51 self.status.SetFieldsCount(2) 51 self.status.SetStatusWidths([ -1,120])52 self.status.SetStatusWidths([125,-1]) 52 53 self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED, self.OnPageChanged) 53 54 … … 99 100 print i 100 101 HKLtxt = '(%3d,%3d,%3d %10.2f %6.3f %10.2f)'%(h,k,l,Fosq,sig,Fcsq) 101 self.G2plotNB.status.SetFields([' HKL, Fosq, sig, Fcsq = '+HKLtxt,''])102 self.G2plotNB.status.SetFields(['','HKL, Fosq, sig, Fcsq = '+HKLtxt]) 102 103 103 104 … … 272 273 if abs(xpos) > 0.: #avoid possible singularity at beam center 273 274 dsp = wave/(2.*sind(abs(xpos)/2.0)) 274 self.G2plotNB.status.SetStatusText('2-theta =%9.3f d =%9.5f Intensity =%9.1f'%(xpos,dsp,ypos), 0)275 self.G2plotNB.status.SetStatusText('2-theta =%9.3f d =%9.5f Intensity =%9.1f'%(xpos,dsp,ypos),1) 275 276 if self.itemPicked: 276 277 Page.canvas.SetToolTipString('%9.3f'%(xpos)) 277 278 except TypeError: 278 self.G2plotNB.status.SetStatusText('Select PWDR powder pattern first', 0)279 self.G2plotNB.status.SetStatusText('Select PWDR powder pattern first',1) 279 280 280 281 def OnRelease(event): … … 325 326 choices=(' key press','d: offset down','u: offset up','c: toggle contour','s: toggle single plot')) 326 327 cb.Bind(wx.EVT_COMBOBOX, OnKeyBox) 327 rect = self.G2plotNB.status.GetFieldRect(1)328 cb.SetPosition((rect.x,rect.y))329 328 cb.SetValue(' key press') 330 329 … … 433 432 if xpos: #avoid out of frame mouse position 434 433 Page.canvas.SetCursor(wx.CROSS_CURSOR) 435 self.G2plotNB.status.SetFields([' 2-theta =%9.3f '%(xpos,),''])434 self.G2plotNB.status.SetFields(['','2-theta =%9.3f '%(xpos,)]) 436 435 437 436 try: … … 562 561 563 562 def PlotImage(self,newPlot=False): 564 from matplotlib.patches import Ellipse,Arc 563 from matplotlib.patches import Ellipse,Arc,Circle 565 564 import numpy.ma as ma 566 565 … … 569 568 size = len(self.ImageZ) 570 569 if event.xdata and event.ydata: #avoid out of frame errors 571 Data = self.PatternTree.GetItemPyData( \572 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))573 570 Page.canvas.SetCursor(wx.CROSS_CURSOR) 574 571 item = self.itemPicked … … 597 594 if (0 <= xpix <= size) and (0 <= ypix <= size): 598 595 Int = self.ImageZ[ypix][xpix] 599 # Page.canvas.SetToolTipString('%4x'%((ypix*2048+xpix)*2+4096))600 596 tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data) 601 597 Q = 2.*math.pi/dsp 602 598 self.G2plotNB.status.SetFields(\ 603 [' Detector 2-th =%9.2fdeg, dsp =%9.3fA, Q = %6.3fA-1, azm = %7.2fdeg, I = %6d'%(tth,dsp,Q,azm,Int),''])599 ['','Detector 2-th =%9.2fdeg, dsp =%9.3fA, Q = %6.3fA-1, azm = %7.2fdeg, I = %6d'%(tth,dsp,Q,azm,Int)]) 604 600 605 601 def OnImPlotKeyPress(event): 606 if self.PatternTree.GetItemText(self.PickId) == 'Image Controls': 607 Data = self.PatternTree.GetItemPyData(self.PickId) 608 pixelSize = Data['pixelSize'] 609 size = len(self.ImageZ) 602 if self.PatternTree.GetItemText(self.PickId) == 'Masks': 603 Mask = self.PatternTree.GetItemPyData(self.PickId) 610 604 Xpos = event.xdata 611 605 if not Xpos: #got point out of frame 612 606 return 613 607 Ypos = event.ydata 614 if event.key == 'm': 615 print 'mask = ',Xpos,Ypos 608 if event.key == 's': 609 print 'spot mask @ ',Xpos,Ypos 610 Mask['Points'].append([Xpos,Ypos,1]) 611 elif event.key == 'r': 612 print 'ring mask @ ',Xpos,Ypos 613 elif event.key == 'a': 614 print 'arc mask @ ', Xpos,Ypos 615 G2imG.UpdateMasks(self,Mask) 616 PlotImage(self) 616 617 617 618 def OnImPick(event): 618 if self.PatternTree.GetItemText(self.PickId) != 'Image Controls':619 if self.PatternTree.GetItemText(self.PickId) not in ['Image Controls','Masks']: 619 620 return 620 621 if self.itemPicked is not None: return … … 623 624 624 625 def OnImRelease(event): 625 if self.PatternTree.GetItemText(self.PickId) != 'Image Controls': 626 PickName = self.PatternTree.GetItemText(self.PickId) 627 if PickName not in ['Image Controls','Masks']: 626 628 return 627 Data = self.PatternTree.GetItemPyData(self.PickId)628 629 pixelSize = Data['pixelSize'] 629 630 scalex = 1000./pixelSize[0] 630 631 scaley = 1000./pixelSize[1] 631 if self.itemPicked is None :632 if self.itemPicked is None and PickName == 'Image Controls': 632 633 size = len(self.ImageZ) 633 634 Xpos = event.xdata … … 660 661 else: 661 662 tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data) 662 if 'Line2D' in str(self.itemPicked): 663 itemPicked = str(self.itemPicked) 664 if 'Line2D' in itemPicked and PickName == 'Image Controls': 663 665 if 'line1' in str(self.itemPicked): 664 666 Data['IOtth'][0] = tth … … 679 681 self.Lazim.SetValue("%6d" % (Data['LRazimuth'][0])) 680 682 self.Razim.SetValue("%6d" % (Data['LRazimuth'][1])) 683 elif 'Circle' in itemPicked and PickName == 'Masks': 684 spots = Masks['Points'] 685 newPos = itemPicked.split(')')[0].split('(')[2].split(',') 686 newPos = np.array([float(newPos[0]),float(newPos[1])]) 687 for spot in spots: 688 if np.allclose(np.array([spot[:2]]),newPos): 689 spot[:2] = xpos,ypos 690 G2imG.UpdateMasks(self,Masks) 681 691 else: 682 print event.xdata,event.ydata,event.button692 print str(self.itemPicked),event.xdata,event.ydata,event.button 683 693 PlotImage(self) 684 694 self.itemPicked = None … … 711 721 Masks = self.PatternTree.GetItemPyData( 712 722 G2gd.GetPatternTreeItemId(self,self.Image, 'Masks')) 723 713 724 imScale = 1 714 725 if len(self.ImageZ) > 1024: … … 728 739 #need "applyMask" routine here 729 740 Zlim = Masks['Thresholds'][1] 741 spots = Masks['Points'] 730 742 MA = ma.masked_greater(ma.masked_less(self.ImageZ,Zlim[0]),Zlim[1]) 731 743 MaskA = ma.getmaskarray(MA) … … 737 749 Img = Plot.imshow(A,aspect='equal',cmap=acolor, 738 750 interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Xmax,0]) 751 for x,y,d in spots: 752 Plot.add_artist(Circle((x,y),radius=d/2,fc='r',ec='r',picker=3)) 739 753 740 754 Plot.plot(xcent,ycent,'x') … … 800 814 if azm and tth: 801 815 self.G2plotNB.status.SetFields(\ 802 [' Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm),''])816 ['','Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm)]) 803 817 804 818 try: … … 865 879 if azm and tth: 866 880 self.G2plotNB.status.SetFields(\ 867 [' Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm),''])881 ['','Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm)]) 868 882 869 883 try:
Note: See TracChangeset
for help on using the changeset viewer.