Changeset 1121
- Timestamp:
- Oct 23, 2013 3:14:27 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r1117 r1121 1409 1409 self.ifGetRing = False 1410 1410 self.setPoly = False 1411 self.setFrame = False 1411 1412 arg = sys.argv 1412 1413 if len(arg) > 1: … … 1573 1574 Data['range'] = [(Imin,Imax),[Imin,Imax]] 1574 1575 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Image Controls'),Data) 1575 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],' Thresholds':[(Imin,Imax),[Imin,Imax]]}1576 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Frames':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]} 1576 1577 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Masks'),Masks) 1577 1578 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Stress/Strain'), … … 1996 1997 Data['range'] = [(Imin,Imax),[Imin,Imax]] 1997 1998 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Image Controls'),Data) 1998 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],' Thresholds':[(Imin,Imax),[Imin,Imax]]}1999 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Frames':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]} 1999 2000 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Masks'),Masks) 2000 2001 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Stress/Strain'),{}) -
trunk/GSASIIimage.py
r1120 r1121 701 701 nJ = jLim[1]-jLim[0] 702 702 #make position masks here 703 spots = masks['Points'] 703 frame = masks['Frames'] 704 tam = ma.make_mask_none((nI,nJ)) 705 if frame: 706 tamp = ma.make_mask_none((1024*1024)) 707 tamp = ma.make_mask(pm.polymask(nI*nJ,tax.flatten(), 708 tay.flatten(),len(frame),frame,tamp)[:nI*nJ])-True #switch to exclude around frame 709 tam = ma.mask_or(tam.flatten(),tamp) 704 710 polygons = masks['Polygons'] 705 tam = ma.make_mask_none((nI,nJ))706 711 for polygon in polygons: 707 712 if polygon: 708 tamp = ma.make_mask_none(( nI*nJ))713 tamp = ma.make_mask_none((1024*1024)) 709 714 tamp = ma.make_mask(pm.polymask(nI*nJ,tax.flatten(), 710 tay.flatten(),len(polygon),polygon,tamp) )715 tay.flatten(),len(polygon),polygon,tamp)[:nI*nJ]) 711 716 tam = ma.mask_or(tam.flatten(),tamp) 712 717 if tam.shape: tam = np.reshape(tam,(nI,nJ)) 718 spots = masks['Points'] 713 719 for X,Y,diam in spots: 714 720 tamp = ma.getmask(ma.masked_less((tax-X)**2+(tay-Y)**2,(diam/2.)**2)) … … 744 750 import histogram2d as h2d 745 751 print 'Begin image integration' 746 blkSize = 128 #this seems to be optimal752 blkSize = 128 #this seems to be optimal; will break in polymask if >1024 747 753 LUtth = data['IOtth'] 748 754 LRazm = np.array(data['LRazimuth'],dtype=np.float64) -
trunk/GSASIIimgGUI.py
r1057 r1121 133 133 except TypeError: #missing Masks 134 134 Imin,Imax = Data['Range'] 135 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],' Thresholds':[(Imin,Imax),[Imin,Imax]]}135 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Frames':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]} 136 136 G2frame.PatternTree.SetItemPyData( 137 137 G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Masks'),Masks) … … 905 905 G2plt.PlotExposedImage(G2frame,event=event) 906 906 907 def OnDeleteFrame(event): 908 data['Frames'] = [] 909 UpdateMasks(G2frame,data) 910 G2plt.PlotExposedImage(G2frame,event=event) 911 907 912 def OnCopyMask(event): 908 913 import copy … … 950 955 File = open(filename,'w') 951 956 save = {} 952 keys = ['Points','Rings','Arcs','Polygons',' Thresholds']957 keys = ['Points','Rings','Arcs','Polygons','Frames','Thresholds'] 953 958 for key in keys: 954 959 File.write(key+':'+str(data[key])+'\n') … … 972 977 continue 973 978 [key,val] = S[:-1].split(':') 974 if key in ['Points','Rings','Arcs','Polygons',' Thresholds']:979 if key in ['Points','Rings','Arcs','Polygons','Frames','Thresholds']: 975 980 save[key] = eval(val) 976 981 if key == 'Thresholds': … … 994 999 if not G2frame.dataFrame.GetStatusBar(): 995 1000 Status = G2frame.dataFrame.CreateStatusBar() 996 Status.SetStatusText("To add mask: On 2D Powder Image, key a:arc, r:ring, s:spot, p:polygon ")1001 Status.SetStatusText("To add mask: On 2D Powder Image, key a:arc, r:ring, s:spot, p:polygon, f:frame") 997 1002 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 998 1003 mainSizer = wx.BoxSizer(wx.VERTICAL) … … 1003 1008 rings = data['Rings'] #radius, thickness 1004 1009 polygons = data['Polygons'] #3+ x,y pairs 1010 if 'Frames' not in data: 1011 data['Frames'] = [] 1012 frame = data['Frames'] #3+ x,y pairs 1005 1013 arcs = data['Arcs'] #radius, start/end azimuth, thickness 1006 1014 … … 1127 1135 polyIds = [] 1128 1136 delPolyId = [] 1137 delFrameId = [] 1129 1138 if polygons: 1130 1139 littleSizer = wx.FlexGridSizer(len(polygons)+2,2,0,5) … … 1144 1153 littleSizer.Add(polyDelete,0,wx.ALIGN_CENTER_VERTICAL) 1145 1154 mainSizer.Add(littleSizer,0,) 1155 if frame: 1156 littleSizer = wx.FlexGridSizer(3,2,0,5) 1157 littleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Frame mask:'),0, 1158 wx.ALIGN_CENTER_VERTICAL) 1159 littleSizer.Add((5,0),0) 1160 frameList = [] 1161 for x,y in frame: 1162 frameList.append("%.2f, %.2f"%(x,y)) 1163 frameText = wx.ComboBox(G2frame.dataDisplay,value=frameList[0],choices=frameList,style=wx.CB_READONLY) 1164 littleSizer.Add(frameText,0,wx.ALIGN_CENTER_VERTICAL) 1165 frameDelete = wx.CheckBox(parent=G2frame.dataDisplay,label='delete?') 1166 frameDelete.Bind(wx.EVT_CHECKBOX,OnDeleteFrame) 1167 delFrameId.append(frameDelete) 1168 littleSizer.Add(frameDelete,0,wx.ALIGN_CENTER_VERTICAL) 1169 mainSizer.Add(littleSizer,0,) 1146 1170 mainSizer.Layout() 1147 1171 G2frame.dataDisplay.SetSizer(mainSizer) 1148 1172 G2frame.dataDisplay.SetSize(mainSizer.Fit(G2frame.dataFrame)) 1149 G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame)) 1173 Size = mainSizer.Fit(G2frame.dataFrame) 1174 Size[0] = 450 1175 G2frame.dataFrame.setSizePosLeft(Size) 1150 1176 1151 1177 ################################################################################ -
trunk/GSASIIplot.py
r1107 r1121 2133 2133 tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data) 2134 2134 Q = 2.*math.pi/dsp 2135 if G2frame.setPoly :2136 G2frame.G2plotNB.status.SetFields(['','Polygon mask pick - LB next point, RB close polygon'])2135 if G2frame.setPoly or G2frame.setFrame: 2136 G2frame.G2plotNB.status.SetFields(['','Polygon/frame mask pick - LB next point, RB close polygon']) 2137 2137 else: 2138 2138 G2frame.G2plotNB.status.SetFields(\ … … 2162 2162 Masks['Polygons'].append([]) 2163 2163 G2frame.G2plotNB.status.SetFields(['','Polygon mask active - LB pick next point, RB close polygon']) 2164 elif event.key == 'f': 2165 G2frame.setFrame = True 2166 Masks['Frames'] = [] 2167 G2frame.G2plotNB.status.SetFields(['','Frame mask active - LB pick next point, RB close polygon']) 2164 2168 G2imG.UpdateMasks(G2frame,Masks) 2165 2169 elif PickName == 'Image Controls': … … 2208 2212 G2frame.G2plotNB.status.SetFields(['','New polygon point: %.1f,%.1f'%(xpos,ypos)]) 2209 2213 polygon.append([xpos,ypos]) 2214 G2imG.UpdateMasks(G2frame,Masks) 2215 elif G2frame.setFrame: 2216 frame = Masks['Frames'] 2217 xpos,ypos = event.mouseevent.xdata,event.mouseevent.ydata 2218 if xpos and ypos: #point inside image 2219 if len(frame) > 2 and event.mouseevent.button == 3: 2220 x0,y0 = frame[0] 2221 frame.append([x0,y0]) 2222 G2frame.setFrame = False 2223 G2frame.G2plotNB.status.SetFields(['','Frame closed - RB drag a vertex to change shape']) 2224 else: 2225 G2frame.G2plotNB.status.SetFields(['','New frame point: %.1f,%.1f'%(xpos,ypos)]) 2226 frame.append([xpos,ypos]) 2210 2227 G2imG.UpdateMasks(G2frame,Masks) 2211 2228 else: … … 2308 2325 arcs = Masks['Arcs'] 2309 2326 polygons = Masks['Polygons'] 2327 frame = Masks['Frames'] 2310 2328 for ring in G2frame.ringList: 2311 2329 if Obj == ring[0]: … … 2334 2352 if np.allclose(np.array([xy]),oldPos,atol=1.0): 2335 2353 polygons[pN][i] = xpos,ypos 2354 if frame: 2355 oldPos = np.array([G2frame.mousePicked.xdata,G2frame.mousePicked.ydata]) 2356 for i,xy in enumerate(frame): 2357 if np.allclose(np.array([xy]),oldPos,atol=1.0): 2358 frame[i] = xpos,ypos 2336 2359 G2imG.UpdateMasks(G2frame,Masks) 2337 2360 # else: #keep for future debugging … … 2349 2372 Page.figure.clf() 2350 2373 Plot = Page.figure.gca() #get a fresh plot after clf() 2351 2352 2374 except ValueError: 2353 2375 Plot = G2frame.G2plotNB.addMpl('2D Powder Image').gca() … … 2419 2441 Img = Plot.imshow(A,aspect='equal',cmap=acolor, 2420 2442 interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Ymax,0]) 2421 if G2frame.setPoly :2443 if G2frame.setPoly or G2frame.setFrame: 2422 2444 Img.set_picker(True) 2423 2445 … … 2487 2509 arcs = Masks['Arcs'] 2488 2510 polygons = Masks['Polygons'] 2511 if 'Frames' not in Masks: 2512 Masks['Frames'] = [] 2513 frame = Masks['Frames'] 2489 2514 for x,y,d in spots: 2490 2515 Plot.add_artist(Circle((x,y),radius=d/2,fc='none',ec='r',picker=3)) … … 2510 2535 G2frame.polyList.append([Plot.plot(x,y,'r+',picker=10),ipoly]) 2511 2536 Plot.plot(x,y,'r') 2537 G2frame.frameList = [] 2538 if frame: 2539 x,y = np.hsplit(np.array(frame),2) 2540 G2frame.frameList.append([Plot.plot(x,y,'g+',picker=10),0]) 2541 Plot.plot(x,y,'g') 2512 2542 if newImage: 2513 2543 colorBar = Page.figure.colorbar(Img) -
trunk/fsource/polymask.for
r282 r1121 10 10 Cf2py depend(M) POLY 11 11 Cf2py intent(in,out) MASK 12 Cf2py depend(N) MASK13 12 14 13 IMPLICIT NONE … … 16 15 REAL*4 X(0:N-1),Y(0:N-1) 17 16 REAL*8 POLY(0:M-1,0:1) 18 LOGICAL*1 MASK(0: N-1)17 LOGICAL*1 MASK(0:1024*1024-1) 19 18 20 19 INTEGER*4 I,K
Note: See TracChangeset
for help on using the changeset viewer.