Skip to content

Commit d2e0c57

Browse files
committed
fixes to multi gaim map - masks now work
1 parent a02a242 commit d2e0c57

File tree

2 files changed

+30
-30
lines changed

2 files changed

+30
-30
lines changed

GSASII/GSASIIimage.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1470,14 +1470,15 @@ def MakeUseMask(data,masks,blkSize=128):
14701470
useMask.append(useMaskj)
14711471
return useMask
14721472

1473-
def MakeGainMap(image,Ix,Iy,data,blkSize=128):
1473+
def MakeGainMap(image,Ix,Iy,data,mask,blkSize=128):
14741474
Iy /= npcosd(Ix[:-1]) #undo parallax
14751475
Iy *= (1000./data['distance'])**2 #undo r^2 effect
14761476
Iy /= np.array(G2pwd.Polarization(data['PolaVal'][0],Ix[:-1],0.)[0]) #undo polarization
14771477
if data['Oblique'][1]:
14781478
Iy *= G2pwd.Oblique(data['Oblique'][0],Ix[:-1]) #undo penetration
14791479
IyInt = scint.interp1d(Ix[:-1],Iy[0],bounds_error=False)
14801480
GainMap = np.zeros_like(image,dtype=float)
1481+
Mask = np.zeros_like(image,dtype=bool)
14811482
#do interpolation on all points - fills in the empty bins; leaves others the same
14821483
Nx,Ny = data['size']
14831484
nXBlks = (Nx-1)//blkSize+1
@@ -1489,10 +1490,12 @@ def MakeGainMap(image,Ix,Iy,data,blkSize=128):
14891490
jBeg = jBlk*blkSize
14901491
jFin = min(jBeg+blkSize,Nx)
14911492
TA = Make2ThetaAzimuthMap(data,(iBeg,iFin),(jBeg,jFin)) #2-theta & azimuth arrays & create position mask
1493+
tam = MakeMaskMap(data,mask,(iBeg,iFin),(jBeg,jFin))
14921494
Ipix = IyInt(TA[0])
1493-
GainMap[iBeg:iFin,jBeg:jFin] = image[iBeg:iFin,jBeg:jFin]/(Ipix*TA[3])
1495+
Mask[iBeg:iFin,jBeg:jFin] = tam
1496+
GainMap[iBeg:iFin,jBeg:jFin] = np.array(image[iBeg:iFin,jBeg:jFin]/(Ipix*TA[3]))
14941497
GainMap /= np.nanmedian(GainMap)
1495-
return 1./GainMap
1498+
return 1./GainMap,Mask
14961499

14971500
def AzimuthIntegrate(image,data,masks,ringId,blkSize=1024):
14981501
''' Integrate by azimuth around the ring masked region in 0.5 deg steps

GSASII/GSASIIimgGUI.py

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,8 @@ def OnMultiGainMap(event):
378378
G2frame.Image = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,name)
379379
Npix,imagefile,imagetag = G2IO.GetCheckImageFile(G2frame,G2frame.Image)
380380
pth = os.path.split(os.path.abspath(imagefile))[0]
381-
ImDat = copy.deepcopy(G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.Image,'Image Controls')))
381+
ImDat = copy.deepcopy(G2frame.GPXtree.GetItemPyData(
382+
G2gd.GetGPXtreeItemId(G2frame,G2frame.Image,'Image Controls')))
382383
sumImg = GetImageZ(G2frame,ImDat)
383384
#force defaults for GainMap calc
384385
ImDat['IOtth'] = [0.1,60.0]
@@ -392,36 +393,25 @@ def OnMultiGainMap(event):
392393
G2gd.GetGPXtreeItemId(G2frame,G2frame.Image,'Masks')))
393394
Integrate = G2img.ImageIntegrate(sumImg,ImDat,ImMsk,blkSize)
394395
Iy,azms,Ix = Integrate[:3]
395-
GainMap = G2img.MakeGainMap(sumImg,Ix,Iy,ImDat,blkSize)*1000.
396-
GainMap = np.where(GainMap > 1200,0,GainMap)
397-
GainMap = np.where(GainMap < 800,0,GainMap)
396+
GainMap,Mask = G2img.MakeGainMap(sumImg,Ix,Iy,ImDat,ImMsk,blkSize)
397+
if ImDat['invert_x']:
398+
Mask = np.flip(Mask,1)
399+
if ImDat['invert_y']:
400+
Mask = np.flip(Mask,0)
401+
GainMap *= 1000
402+
GainMap = ma.array(GainMap,mask=Mask)
403+
GainMap = ma.where(GainMap > 1200,0,GainMap)
404+
GainMap = ma.where(GainMap < 800,0,GainMap)
405+
Mask = ma.getmask(GainMap)
398406
ImDat['formatName'] = 'GSAS-II image'
399407
ImDat['range'] = [(500,2000),[800,1200]]
400408
if First:
401409
First = False
402-
GMsum = np.where(GainMap>0,GainMap,0.0)
403-
pixels = np.where(GainMap>0,1,0)
410+
GMsum = np.where(Mask,0.0,GainMap)
411+
pixels = np.where(Mask,0,1)
404412
else:
405-
GMsum += np.where(GainMap>0,GainMap,0.0)
406-
pixels += np.where(GainMap >0,1,0)
407-
#leave for possible diagnostics?
408-
# ImMsk['Thresholds'] = [(500.,2000.),[800.,1200.]]
409-
# GMname = os.path.splitext(imagefile)[0]+'_GM.G2img'
410-
# G2IO.PutG2Image(GMname,[],ImDat,Npix,GainMap)
411-
# Name = 'IMG '+os.path.split(GMname)[1]
412-
# Id = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,Name)
413-
# if not Id:
414-
# Id = G2frame.GPXtree.AppendItem(parent=G2frame.root,text=Name)
415-
# G2frame.GPXtree.SetItemPyData(Id,[Npix,GMname])
416-
# G2frame.GPXtree.SetItemPyData(G2frame.GPXtree.AppendItem(Id,text='Comments'),[])
417-
# G2frame.GPXtree.SetItemPyData(G2frame.GPXtree.AppendItem(Id,text='Image Controls'),ImDat)
418-
# G2frame.GPXtree.SetItemPyData(G2frame.GPXtree.AppendItem(Id,text='Masks'),ImMsk)
419-
# else:
420-
# G2frame.GPXtree.SetItemPyData(Id,[Npix,GMname])
421-
# G2frame.GPXtree.SetItemPyData(G2gd.GetGPXtreeItemId(G2frame,Id,'Comments'),[])
422-
# G2frame.GPXtree.SetItemPyData(G2gd.GetGPXtreeItemId(G2frame,Id,'Image Controls'),ImDat)
423-
# G2frame.GPXtree.SetItemPyData(G2gd.GetGPXtreeItemId(G2frame,Id,'Masks'),ImMsk)
424-
#end of diagnostic block
413+
GMsum += np.where(Mask,0.0,GainMap)
414+
pixels += np.where(Mask,0,1)
425415
finally:
426416
dlg.Destroy()
427417
GMsum = np.where(pixels>0,GMsum/pixels,0)
@@ -434,7 +424,14 @@ def OnMultiGainMap(event):
434424
if dlg.ShowModal() == wx.ID_OK:
435425
newimagefile = dlg.GetPath()
436426
newimagefile = G2IO.FileDlgFixExt(dlg,newimagefile)
437-
ImMsk['Thresholds'] = [(500.,2000.),[800.,1200.]]
427+
ImSize = ImDat['size']
428+
pixSize = ImDat['pixelSize']
429+
ImDat.update({'tilt':0.0,'rotation':0.0,'distance':1000.0,'showLines':False,
430+
'calibrant':' ',
431+
'center':[500.*ImSize[0]/pixSize[0],500.*ImSize[1]/pixSize[1]]})
432+
ImMsk = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Frames':[],
433+
'Thresholds':[(500.,2000.),[800.,1200.]],
434+
'SpotMask':{'esdMul':2.,'spotMask':None}} #remove all masks
438435
G2IO.PutG2Image(newimagefile,[],ImDat,Npix,GMsum)
439436
Name = 'IMG '+os.path.split(newimagefile)[1]
440437
Id = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,Name)

0 commit comments

Comments
 (0)