Skip to content

Commit 8dfa93b

Browse files
committed
fix & display as grid the results of MV search
1 parent 70833a7 commit 8dfa93b

File tree

2 files changed

+36
-27
lines changed

2 files changed

+36
-27
lines changed

GSASII/GSASIIindex.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ def sortCells(cells,col):
245245
X.append(D[key])
246246
return X
247247

248-
def findMV(peaks,controls,ssopt,Inst,dlg):
248+
def findMV(peaks,controls,ssopt,Inst,deltM,dlg):
249249

250250
def Val2Vec(vec,Vref,values):
251251
Vec = []
@@ -294,7 +294,7 @@ def TSSfunc(values,peaks,dmin,Inst,SGData,SSGData,vec,Vref,maxH,A,difC,Z,dlg=Non
294294
Vref = [True if x in ssopt['ssSymb'] else False for x in ['a','b','g']]
295295
values = []
296296
ranges = []
297-
dT = 0.01 #seems to be a good choice
297+
dT = deltM #seems to be a good choice
298298
for v,r in zip(ssopt['ModVec'],Vref):
299299
if r:
300300
ranges += [slice(dT,1.-dT,dT),] #NB: unique part for (00g) & (a0g); (abg)?

GSASII/GSASIIpwdGUI.py

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4345,9 +4345,6 @@ def OnHklShow(event=None,Print=True,Plot=True,indexFrom=''):
43454345
result = None
43464346
PatternId = G2frame.PatternId
43474347
peaks = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Index Peak List'))
4348-
controls,bravais,cells,dminx,ssopt,magcells = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Unit Cells List'))
4349-
Inst = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))[0]
4350-
Limits = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.PatternId, 'Limits'))[1]
43514348
if 'T' in Inst['Type'][0]:
43524349
dmin = G2lat.Pos2dsp(Inst,Limits[0])
43534350
else:
@@ -6088,7 +6085,7 @@ def OnFindOneMV(event):
60886085
dlg = wx.ProgressDialog('Elapsed time','Modulation vector search',
60896086
style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE)
60906087
try:
6091-
ssopt['ModVec'],result = G2indx.findMV(Peaks,controls,ssopt,Inst,dlg)
6088+
ssopt['ModVec'],result = G2indx.findMV(Peaks,controls,ssopt,Inst,deltM,dlg)
60926089
if len(result[0]) == 2:
60936090
G2plt.PlotXYZ(G2frame,result[2],1./result[3],labelX='a',labelY='g',newPlot=True,
60946091
Title='Modulation vector search for %s%s'%(controls[13],ssopt['ssSymb']),
@@ -6119,17 +6116,18 @@ def OnFindMV(event):
61196116
dlg = wx.ProgressDialog('Elapsed time','Modulation vector search with %s'%ssSym,
61206117
style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_CAN_ABORT)
61216118
try:
6122-
ssopt['ModVec'],result = G2indx.findMV(Peaks,controls,ssopt,Inst,dlg)
6123-
ssopt['SSgResults'].append([ssSym,ssopt['ModVec'],])
6124-
OnHklShow(event,indexFrom=' Indexing from best modulation vector')
6119+
ssopt['ModVec'],result = G2indx.findMV(Peaks,controls,ssopt,Inst,deltM,dlg)
6120+
M20,X20 = OnHklShow(event,indexFrom=' Indexing from best modulation vector')[2:4]
6121+
Ma,Mb,Mg = ssopt['ModVec']
6122+
ssopt['SSgResults'].append([ssSym,False,M20,X20,Ma,Mb,Mg,])
61256123
finally:
61266124
dlg.Destroy()
61276125
if result[1] < best:
61286126
bestSS = ssSym
61296127
best = result[1]
61306128
if bestSS != '':
61316129
ssopt['ssSymb'] = bestSS
6132-
ssopt['ModVec'],result = G2indx.findMV(Peaks,controls,ssopt,Inst,dlg=None)
6130+
ssopt['ModVec'],result = G2indx.findMV(Peaks,controls,ssopt,Inst,deltM,dlg=None)
61336131
G2plt.PlotXY(G2frame,[[result[2],1./result[3]],],labelX='k',labelY='fit',
61346132
newPlot=True,Title='Modulation vector search for %s'%bestSS)
61356133

@@ -6432,6 +6430,7 @@ def OnAxHklShow():
64326430
shiftSel = wx.Choice(G2frame.dataWindow,choices=shiftChoices)
64336431
unitSizerWidgetList.append(shiftSel)
64346432
shiftSel.SetSelection(3)
6433+
deltM = float(shiftChoices[shiftSel.GetSelection()][:-1])/100.
64356434
vcSizer.Add(shiftSel)
64366435
hSizer.Add(vcSizer,0,WACV)
64376436
if not ssopt.get('Use',False): #zero for super lattice doesn't work!
@@ -6607,8 +6606,7 @@ def OnSelectSgrp(event):
66076606
OnHklShow(event,True,indexFrom=' Space group selection %s #%d'%(controls[13],r))
66086607

66096608
SpGrpGrid = wx.BoxSizer(wx.VERTICAL)
6610-
lbl = (' Space group search results from "Try all"'+
6611-
'\n '+ssopt.get('SgSettings',''))
6609+
lbl = (' Space group search results from "Try all"'+ssopt.get('SgSettings',''))
66126610
SpGrpGrid.Add(wx.StaticText(parent=G2frame.dataWindow,label=lbl))
66136611
colLabels = ['Sp Grp','show','M20','X20','Nhkl','fr. found']
66146612
Types = [wg.GRID_VALUE_STRING,wg.GRID_VALUE_BOOL,wg.GRID_VALUE_FLOAT+':10,2',wg.GRID_VALUE_NUMBER,
@@ -6644,30 +6642,36 @@ def OnSelectSSG(event):
66446642
clearShowFlags()
66456643
r = event.GetRow()
66466644
for i in range(len(ssopt['SSgResults'])):
6647-
ssopt['SSgResults'][i][1] = False
6645+
results[i][1] = False
66486646
SSgTable.SetValue(i,1,False)
66496647
SSgTable.SetValue(r,1,True)
6650-
# controls[13] = ssopt['SgResults'][r][0]
6648+
ssopt['ModVec'] = results[r][4:]
6649+
ssopt['ssSymb'] = results[r][0]
6650+
result = results[r]
66516651
else:
6652-
for r in range(len(ssopt['SSgResults'])):
6653-
if ssopt['SSgResults'][r][1]:
6654-
# controls[13] = ssopt['SSgResults'][r][0]
6652+
for r,result in enumerate(results):
6653+
if result[1]:
6654+
ssopt['ModVec'] = result[4:]
6655+
ssopt['ssSymb'] = result[0]
66556656
break
6656-
SSDisplay.ForceRefresh()
6657-
# ssopt['SGData'] = G2spc.SpcGroup(controls[13])[1]
6658-
# G2frame.dataWindow.RefineCell.Enable(True)
6659-
OnHklShow(event,True,indexFrom=' Super Space group selection %s #%d'%(controls[13],r))
6657+
# SSDisplay.ForceRefresh() #repaints the grids only
6658+
OnHklShow(event,True,indexFrom=' Super Space group selection %s #%d'%(controls[13]+result[0],r))
66606659

66616660
SSGrpGrid = wx.BoxSizer(wx.VERTICAL)
6662-
lbl = (' Super Space group search results from "Try all"'+
6663-
'\n '+ssopt.get('SgSettings',''))
6661+
lbl = (' Super Space group search results for '+controls[5])
66646662
SSGrpGrid.Add(wx.StaticText(parent=G2frame.dataWindow,label=lbl))
6665-
colLabels = ['SSp Grp','show','M20','X20','Nhkl','fr. found']
6666-
Types = [wg.GRID_VALUE_STRING,wg.GRID_VALUE_BOOL,wg.GRID_VALUE_FLOAT+':10,2',wg.GRID_VALUE_NUMBER,
6667-
wg.GRID_VALUE_NUMBER,wg.GRID_VALUE_FLOAT+':10,3']
6663+
results = ssopt['SSgResults']
6664+
if len(results[0]) == 6:
6665+
colLabels = ['SSp Grp','show','M20','X20','Nhkl','fr. found']
6666+
Types = [wg.GRID_VALUE_STRING,wg.GRID_VALUE_BOOL,wg.GRID_VALUE_FLOAT+':10,2',wg.GRID_VALUE_NUMBER,
6667+
wg.GRID_VALUE_NUMBER,wg.GRID_VALUE_FLOAT+':10,3']
6668+
else:
6669+
colLabels = ['SSp Grp','show','M20','X20','\u03B1','\u03B2','\u03B3']
6670+
Types = [wg.GRID_VALUE_STRING,wg.GRID_VALUE_BOOL,wg.GRID_VALUE_FLOAT+':10,2',wg.GRID_VALUE_NUMBER,
6671+
wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3',wg.GRID_VALUE_FLOAT+':10,3']
66686672
rowLabels = []
66696673
table = []
6670-
for result in ssopt['SSgResults']:
6674+
for result in results:
66716675
rowLabels.append('')
66726676
row = result
66736677
table.append(row)
@@ -7164,6 +7168,10 @@ def OnRefreshKeep(event):
71647168
setGrid = gridDisplay
71657169
gridDisplay.SetCellValue(setRow,2,'True') # set flag in grid
71667170
disableCellEntries()
7171+
7172+
# G@ Modulation vector results list
7173+
if len(ssopt['SSgResults']):
7174+
mainSizer.Add(SSGrid())
71677175

71687176
# Subgroup/magnetic s.g. search results
71697177
if magcells and len(controls) > 16:
@@ -7173,6 +7181,7 @@ def OnRefreshKeep(event):
71737181
G2frame.Contour = False
71747182
if New:
71757183
OnHklShow(None,indexFrom=' Indexing from unit cell & symmetry settings')
7184+
New = False
71767185
G2frame.dataWindow.SetDataSize()
71777186
if callSeaResSelected:
71787187
SeaResSelected(None) # select 1st item in table

0 commit comments

Comments
 (0)