Skip to content

Commit e2830d6

Browse files
committed
Add option to fix HKLF when incorrectly import F^2 data as F. Converts "F^4" to "F^2"
fix Sph Harm texture bugs from newest python/numpy
1 parent 4b9f952 commit e2830d6

File tree

4 files changed

+49
-7
lines changed

4 files changed

+49
-7
lines changed

GSASII/GSASIIdataGUI.py

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6627,7 +6627,7 @@ def _makemenu(): # routine to create menu when first used
66276627
self.PWDRMenu = _makemenu
66286628

66296629
# HKLF - many wxIDs defined in PWDR & SASD above
6630-
G2G.Define_wxId('wxID_3DALLHKLPLOT','wxID_MERGEHKL')
6630+
G2G.Define_wxId('wxID_3DALLHKLPLOT','wxID_MERGEHKL','wxID_FIXFSQSQDATA')
66316631
def _makemenu(): # routine to create menu when first used
66326632
self.HKLFMenu = wx.MenuBar()
66336633
self.PrefillDataMenu(self.HKLFMenu)
@@ -6638,6 +6638,7 @@ def _makemenu(): # routine to create menu when first used
66386638
self.ErrorAnal.Append(G2G.wxID_1DHKLSTICKPLOT,'Plot 1D HKLs','Plot of HKLs from single crystal data in 1D')
66396639
self.ErrorAnal.Append(G2G.wxID_PWD3DHKLPLOT,'Plot 3D HKLs','Plot HKLs from single crystal data in 3D')
66406640
self.ErrorAnal.Append(G2G.wxID_3DALLHKLPLOT,'Plot all 3D HKLs','Plot HKLs from all single crystal data in 3D')
6641+
self.ErrorAnal.Append(G2G.wxID_FIXFSQSQDATA,'Fix (F^2)^2 data','Fix F^2 data imported as F')
66416642
# self.ErrorAnal.Append(G2G.wxID_PWDCOPY,'Copy params','Copy of HKLF parameters') #unused
66426643
self.PostfillDataMenu()
66436644
SetDataMenuBar(G2frame,self.HKLFMenu)
@@ -8135,6 +8136,47 @@ def OnMergeHKL(event):
81358136
G2frame.GPXtree.SetItemPyData(G2frame.GPXtree.AppendItem(Id,text='Instrument Parameters'),Inst)
81368137
G2frame.GPXtree.SetItemPyData(G2frame.GPXtree.AppendItem(Id,text='Reflection List'),{}) #dummy entry for GUI use
81378138
G2frame.GPXtree.SetItemPyData(Id,newData)
8139+
8140+
def OnFixFsqFsq(event):
8141+
''' Fix HKLF data that had been misimported as F instead of F^2'''
8142+
Name = G2frame.GPXtree.GetItemText(G2frame.PatternId)
8143+
Inst = G2frame.GPXtree.GetItemPyData(GetGPXtreeItemId(G2frame,
8144+
G2frame.PatternId,'Instrument Parameters'))
8145+
CId = GetGPXtreeItemId(G2frame,G2frame.PatternId,'Comments')
8146+
if CId:
8147+
Comments = G2frame.GPXtree.GetItemPyData(CId)
8148+
else:
8149+
Comments = []
8150+
Super = data[1]['Super']
8151+
refList = np.copy(data[1]['RefList'])
8152+
Comments.append(' Changing %d reflection F^2^2 to F^2 from %s'%(len(refList),Name))
8153+
for ih,hkl in enumerate(refList): #undo F--> F^2
8154+
hkl[5+Super] = np.sqrt(hkl[5+Super])
8155+
hkl[6+Super] = hkl[6+Super]/(2.0*hkl[5+Super])
8156+
hkl[7+Super] = np.sqrt(hkl[7+Super])
8157+
HKLFlist = []
8158+
if G2frame.GPXtree.GetCount():
8159+
item, cookie = G2frame.GPXtree.GetFirstChild(G2frame.root)
8160+
while item:
8161+
name = G2frame.GPXtree.GetItemText(item)
8162+
if name.startswith('HKLF ') and name not in HKLFlist:
8163+
HKLFlist.append(name)
8164+
item, cookie = G2frame.GPXtree.GetNextChild(G2frame.root, cookie)
8165+
newName = G2obj.MakeUniqueLabel(Name,HKLFlist)
8166+
newData = copy.deepcopy(data)
8167+
newData[0]['ranId'] = ran.randint(0,sys.maxsize)
8168+
newData[1]['RefList'] = refList
8169+
newData[0]['Nobs'] = refList.shape[0]
8170+
newData[0]['wR'] = 0.0
8171+
keys = list(newData[0].keys())
8172+
for item in keys:
8173+
if ':' in item:
8174+
del newData[0][item]
8175+
Id = G2frame.GPXtree.AppendItem(parent=G2frame.root,text=newName)
8176+
G2frame.GPXtree.SetItemPyData(G2frame.GPXtree.AppendItem(Id,text='Comments'),Comments)
8177+
G2frame.GPXtree.SetItemPyData(G2frame.GPXtree.AppendItem(Id,text='Instrument Parameters'),Inst)
8178+
G2frame.GPXtree.SetItemPyData(G2frame.GPXtree.AppendItem(Id,text='Reflection List'),{}) #dummy entry for GUI use
8179+
G2frame.GPXtree.SetItemPyData(Id,newData)
81388180

81398181
def OnErrorAnalysis(event):
81408182
'''Plots an "Abrams" plot - sorted delta/sig across data set.
@@ -8207,6 +8249,7 @@ def OnEditMag(**args):
82078249
G2frame.Bind(wx.EVT_MENU, OnPlot1DHKL, id=G2G.wxID_1DHKLSTICKPLOT)
82088250
G2frame.Bind(wx.EVT_MENU, OnPlot3DHKL, id=G2G.wxID_PWD3DHKLPLOT)
82098251
G2frame.Bind(wx.EVT_MENU, OnPlotAll3DHKL, id=G2G.wxID_3DALLHKLPLOT)
8252+
G2frame.Bind(wx.EVT_MENU, OnFixFsqFsq, id=G2G.wxID_FIXFSQSQDATA)
82108253
if kind == 'PWDR':
82118254
lbl = 'Powder'
82128255
elif kind == 'SASD':

GSASII/GSASIIlattice.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2662,7 +2662,7 @@ def CrsAng(H,cell,SGData):
26622662
DR = np.inner(H3,np.inner(G,H3))
26632663
DHR = np.inner(H,np.inner(G,H3))
26642664
DHR /= np.sqrt(DR*DH)
2665-
phi = acosd(max(-1,min(DHR,1.)))
2665+
phi = acosd(DHR)
26662666
if Laue == '-1':
26672667
BA = H.T[1]*a/(b-H.T[0]*cosd(ga))
26682668
BB = H.T[0]*sind(ga)**2

GSASII/GSASIIplot.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7252,14 +7252,13 @@ def Draw(caller='',Fade=[],NPkey=False):
72527252
defCtrls = deformationData[-atom[ci]]
72537253
defParms = deformationData[atom[ci]]
72547254
SytSym = G2spc.SytSym(atom[cx:cx+3],SGData)[0]
7255-
if defCtrls.get('showDef',False):
7255+
if defCtrls.get('showDef',False) and defCtrls['Radial'] == 'Slater':
72567256
useAtColor = defCtrls.get('atColor',True)
72577257
atcolor = None
72587258
if useAtColor:
72597259
atcolor = atColor*255
7260-
if defCtrls['Radial'] == 'Slater':
7261-
SHC = defParms[0][1]
7262-
SHC = {item.replace('D','C'):SHC[item] for item in SHC if item not in ['Ne','kappa']}
7260+
SHC = defParms[0][1]
7261+
SHC = {item.replace('D','C'):SHC[item] for item in SHC if item not in ['Ne','kappa']}
72637262
UVMat = defCtrls['UVmat']
72647263
Npsi,Ngam = 90,45
72657264
PSI,GAM = np.mgrid[0:Npsi,0:Ngam] #[azm,pol]

GSASII/GSASIIpwdGUI.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7186,7 +7186,7 @@ def setBackgroundColors(im,it):
71867186
def OnToggleExt(event):
71877187
G2frame.Hide = not G2frame.Hide
71887188
UpdateReflectionGrid(G2frame,data,HKLF=True,Name=Name)
7189-
7189+
71907190
def OnPageChanged(event):
71917191
'''Respond to a press on a phase tab by displaying the reflections. This
71927192
routine is needed because the reflection table may not have been created yet.

0 commit comments

Comments
 (0)