Changeset 3186 for trunk/GSASIIimgGUI.py
- Timestamp:
- Dec 9, 2017 8:54:59 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIimgGUI.py
r3184 r3186 19 19 import copy 20 20 import glob 21 import time 21 22 import re 22 23 import math … … 144 145 ################################################################################ 145 146 blkSize = 1024 #this seems to be optimal; will break in polymask if >1024 146 def UpdateImageControls(G2frame,data,masks,useTA=None, IntegrateOnly=False):147 def UpdateImageControls(G2frame,data,masks,useTA=None,useMask=None,IntegrateOnly=False): 147 148 '''Shows and handles the controls on the "Image Controls" 148 149 data tree entry … … 238 239 G2frame.slideSizer.GetChildren()[4].Window.SetValue(Imin) #tricky 239 240 240 def OnIntegrate(event,useTA=None ):241 def OnIntegrate(event,useTA=None,useMask=None): 241 242 '''Integrate image in response to a menu event or from the AutoIntegrate 242 243 dialog. In the latter case, event=None. … … 247 248 wx.BeginBusyCursor() 248 249 try: 249 G2frame.Integrate = G2img.ImageIntegrate(sumImg,data,masks,blkSize,useTA=useTA )250 G2frame.Integrate = G2img.ImageIntegrate(sumImg,data,masks,blkSize,useTA=useTA,useMask=useMask) 250 251 finally: 251 252 wx.EndBusyCursor() … … 270 271 pId = 0 271 272 oldData = {'tilt':0.,'distance':0.,'rotation':0.,'center':[0.,0.],'DetDepth':0.,'azmthOff':0.} 273 oldMhash = 0 272 274 for icnt,item in enumerate(items): 273 275 GoOn = dlgp.Update(icnt) … … 283 285 same = False 284 286 if not same: 285 print('Use new image controls')287 t0 = time.time() 286 288 useTA = G2img.MakeUseTA(Data,blkSize) 289 print(' Use new image controls; new xy -> th,azm time %.3f'%(time.time()-t0)) 287 290 Masks = G2frame.GPXtree.GetItemPyData( 288 291 G2gd.GetGPXtreeItemId(G2frame,G2frame.Image,'Masks')) 292 Mhash = hash(str(Masks)) 293 if Mhash != oldMhash: 294 t0 = time.time() 295 useMask = G2img.MakeUseMask(Data,Masks,blkSize) 296 print(' Use new mask; make mask time: %.3f'%(time.time()-t0)) 297 oldMhash = Mhash 289 298 image = GetImageZ(G2frame,Data) 290 G2frame.Integrate = G2img.ImageIntegrate(image,Data,Masks,blkSize,useTA=useTA )299 G2frame.Integrate = G2img.ImageIntegrate(image,Data,Masks,blkSize,useTA=useTA,useMask=useMask) 291 300 del image #force cleanup 292 301 pId = G2IO.SaveIntegration(G2frame,CId,Data) … … 1193 1202 1194 1203 if IntegrateOnly: 1195 OnIntegrate(None,useTA=useTA )1204 OnIntegrate(None,useTA=useTA,useMask=useMask) 1196 1205 return 1197 1206 … … 2771 2780 self.Pause = True 2772 2781 2773 def IntegrateImage(self,img,useTA=None ):2782 def IntegrateImage(self,img,useTA=None,useMask=None): 2774 2783 '''Integrates a single image. Ids for created PWDR entries (more than one is possible) 2775 2784 are placed in G2frame.IntgOutList … … 2797 2806 # simulate a Image Controls press, since that is where the 2798 2807 # integration is hidden 2799 UpdateImageControls(G2frame,data,masks,useTA=useTA, IntegrateOnly=True)2808 UpdateImageControls(G2frame,data,masks,useTA=useTA,useMask=useMask,IntegrateOnly=True) 2800 2809 G2frame.IntegratedList.append(img) # note this as integrated 2801 2810 # split name and control number … … 2974 2983 This is called only after the "Start" button is pressed (then its label reads "Pause"). 2975 2984 ''' 2976 def AutoIntegrateImage(imgId,useTA=None ):2985 def AutoIntegrateImage(imgId,useTA=None,useMask=None): 2977 2986 '''Integrates an image that has been read into the data tree and updates the 2978 2987 AutoInt window. … … 2992 3001 self.EnableButtons(False) 2993 3002 try: 2994 self.IntegrateImage(img,useTA=useTA )3003 self.IntegrateImage(img,useTA=useTA,useMask=useMask) 2995 3004 finally: 2996 3005 self.EnableButtons(True) … … 3079 3088 # have not yet been processed 3080 3089 oldData = {'tilt':0.,'distance':0.,'rotation':0.,'center':[0.,0.],'DetDepth':0.,'azmthOff':0.} 3081 self.useTA = None 3090 oldMhash = 0 3091 if 'useTA' not in dir(self): #initial definition; reuse if after Resume 3092 self.useTA = None 3093 self.useMask = None 3082 3094 for img in G2gd.GetGPXtreeDataNames(G2frame,['IMG ']): 3083 3095 imgId = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,img) … … 3089 3101 Data = G2frame.GPXtree.GetItemPyData( 3090 3102 G2gd.GetGPXtreeItemId(G2frame,imgId, 'Image Controls')) 3091 same = True3103 sameTA = True 3092 3104 for item in ['tilt','distance','rotation','center','DetDepth','azmthOff']: 3093 3105 if Data[item] != oldData[item]: 3094 same = False3095 if not same :3096 print('Use new image controls')3106 sameTA = False 3107 if not sameTA: 3108 t0 = time.time() 3097 3109 self.useTA = G2img.MakeUseTA(Data,blkSize) 3098 AutoIntegrateImage(imgId,self.useTA) 3110 print(' Use new image controls; xy->th,azm mtime: %.3f'%(time.time()-t0)) 3111 Mask = G2frame.GPXtree.GetItemPyData( 3112 G2gd.GetGPXtreeItemId(G2frame,imgId, 'Masks')) 3113 Mhash = hash(str(Mask)) 3114 if Mhash != oldMhash: 3115 t0 = time.time() 3116 self.useMask = G2img.MakeUseMask(Data,Mask,blkSize) 3117 print(' Use new mask; make mask time: %.3f'%(time.time()-t0)) 3118 oldMhash = Mhash 3119 AutoIntegrateImage(imgId,self.useTA,self.useMask) 3099 3120 oldData = Data 3100 3121 if self.pdfControls: AutoComputePDF(imgId) … … 3107 3128 3108 3129 # loop over image files matching glob, reading in any new ones 3130 if self.useTA is None or self.useMask is None: 3131 print('Integration will not be fast; there is no beginning image controls') #TODO: work this out?? 3109 3132 for newImage in self.currImageList: 3110 3133 if newImage in imageFileList or self.Pause: continue # already read? 3111 3134 for imgId in G2IO.ReadImages(G2frame,newImage): 3112 AutoIntegrateImage(imgId,self.useTA )3135 AutoIntegrateImage(imgId,self.useTA,self.useMask) 3113 3136 if self.pdfControls: AutoComputePDF(imgId) 3114 3137 self.Pause |= G2frame.PauseIntegration
Note: See TracChangeset
for help on using the changeset viewer.