Skip to content

Commit 35b6a4c

Browse files
committed
add save of bond & angle histograms to csv file, also clear B&A histograms
make RMCProfile T&O csv files better
1 parent 70ce148 commit 35b6a4c

File tree

2 files changed

+42
-14
lines changed

2 files changed

+42
-14
lines changed

GSASII/GSASIIdataGUI.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7158,8 +7158,8 @@ def _makemenu(): # routine to create menu when first used
71587158
G2G.Define_wxId('wxID_ATOMSEDITADD', 'wxID_ATOMSEDITINSERT', 'wxID_ATOMSEDITDELETE',
71597159
'wxID_ATOMSMODIFY', 'wxID_ATOMSTRANSFORM', 'wxID_ATOMSVIEWADD', 'wxID_ATOMVIEWINSERT',
71607160
'wxID_RELOADDRAWATOMS', 'wxID_ATOMSDISAGL', 'wxID_ATOMMOVE', 'wxID_MAKEMOLECULE',
7161-
'wxID_ATOMSPDISAGL', 'wxID_ISODISP', 'wxID_ADDHATOM', 'wxID_UPDATEHATOM',
7162-
'wxID_ATOMSROTATE', 'wxID_ATOMSDENSITY','wxID_ATOMSBNDANGLHIST',
7161+
'wxID_ATOMSPDISAGL', 'wxID_ISODISP', 'wxID_ADDHATOM', 'wxID_UPDATEHATOM','wxID_ATOMSCLEARHIST',
7162+
'wxID_ATOMSROTATE', 'wxID_ATOMSDENSITY','wxID_ATOMSBNDANGLHIST','wxID_ATOMSSAVEHIST',
71637163
'wxID_ATOMSSETALL', 'wxID_ATOMSSETSEL','wxID_ATOMFRACSPLIT','wxID_COLLECTATOMS',
71647164
'wxID_ATOMSSETVP', 'wxID_ATOMSSETLST')
71657165
self.AtomsMenu = wx.MenuBar()
@@ -7201,6 +7201,8 @@ def _makemenu(): # routine to create menu when first used
72017201
self.AtomCompute.Append(G2G.wxID_ATOMSDISAGL,'Show Distances && Angles','Compute distances & angles for selected atoms')
72027202
self.AtomCompute.Append(G2G.wxID_ATOMSPDISAGL,'Save Distances && Angles','Compute distances & angles for selected atoms')
72037203
self.AtomCompute.Append(G2G.wxID_ATOMSBNDANGLHIST,'Histogram Bonds && Angles','Histogram bonds & angles for selected atoms')
7204+
self.AtomCompute.Append(G2G.wxID_ATOMSSAVEHIST,'Save all B&&A histograms','Save all bond & angle histograms')
7205+
self.AtomCompute.Append(G2G.wxID_ATOMSCLEARHIST,'Clear all B&&A histograms','Clear all bond & angle histograms')
72047206
self.AtomCompute.Append(G2G.wxID_ATOMFRACSPLIT,'Apportion atom frac','2 atom type site fraction apportion')
72057207
self.AtomCompute.Append(G2G.wxID_ATOMSDENSITY,'Density','Compute density for current phase')
72067208
self.AtomCompute.ISOcalc = self.AtomCompute.Append(G2G.wxID_ISODISP,'ISODISTORT mode values',

GSASII/GSASIIphsGUI.py

Lines changed: 38 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2791,25 +2791,24 @@ def OnSaveDist(event):
27912791
pName = generalData['Name']
27922792
fName = os.path.abspath(os.path.splitext(G2frame.GSASprojectfile)[0]+'_TOdist.csv')
27932793
fp = open(fName,'w')
2794-
fp.write('Phase name: %s\n'%pName)
2794+
fp.write('Phase name: %s,'%pName)
27952795
Oatoms = generalData['Compare']['Oatoms']
27962796
Tatoms = generalData['Compare']['Tatoms']
27972797
bName = '%s-%s'%(Oatoms,Tatoms)
27982798
Bonds = generalData['Compare']['Bonds'][bName]
2799-
Vects = generalData['Compare']['Vects'][bName]
2800-
dVects = generalData['Compare']['dVects'][bName]
2799+
# Vects = generalData['Compare']['Vects'][bName]
2800+
# dVects = generalData['Compare']['dVects'][bName]
28012801
if len(Bonds['Obonds']):
2802-
fp.write('%s-%s Octahedral bond lengths'%(Oatoms,Tatoms))
2802+
fp.write('\n%s-%s Octahedral bond lengths,\n'%(Oatoms,Tatoms))
28032803
for ib,bond in enumerate(Bonds['Obonds']):
28042804
fp.write('%7.4f,'%bond)
28052805
if not (ib+1)%10: fp.write('\n')
28062806

28072807
if len(Bonds['Tbonds']):
2808-
fp.write('%s-%s Tetrahedral bond lengths\n'%(Oatoms,Tatoms))
2808+
fp.write('\n%s-%s Tetrahedral bond lengths,\n'%(Oatoms,Tatoms))
28092809
for ib,bond in enumerate(Bonds['Tbonds']):
28102810
fp.write('%7.4f,'%bond)
28112811
if not (ib+1)%10: fp.write('\n')
2812-
28132812
fp.close()
28142813
print(' %s written'%fName)
28152814

@@ -5502,6 +5501,35 @@ def OnDistAnglePrt(event):
55025501

55035502
def OnDistAngleHist(event):
55045503
OnDistAngle(event,hist=True)
5504+
5505+
def OnSaveDAHist(event):
5506+
Bonds = data.get('Bonds',{})
5507+
Angles = data.get('Angles',{})
5508+
if not len(Bonds) and not len(Angles):
5509+
print('No bond or angle histograms to save!')
5510+
return
5511+
generalData = data['General']
5512+
pName = generalData['Name']
5513+
fName = os.path.abspath(os.path.splitext(G2frame.GSASprojectfile)[0]+'_BAdist.csv')
5514+
fp = open(fName,'w')
5515+
fp.write('Phase name: %s,'%pName)
5516+
for Atypes in Bonds:
5517+
fp.write('\nBond distances for %s, \n'%Atypes)
5518+
for ib,bond in enumerate(Bonds[Atypes]):
5519+
fp.write('%7.4f,'%bond)
5520+
if not (ib+1)%10: fp.write('\n')
5521+
for Atypes in Angles:
5522+
fp.write('\nBond angles about %s, \n'%Atypes)
5523+
for ib,angle in enumerate(Angles[Atypes]):
5524+
fp.write('%7.2f,'%angle)
5525+
if not (ib+1)%10: fp.write('\n')
5526+
fp.close()
5527+
print(' %s written'%fName)
5528+
5529+
def OnClearDAHist(event):
5530+
data['Bonds'] = {}
5531+
data['Angles'] = {}
5532+
print('Bond & Angle histograms now empty')
55055533

55065534
def OnDistAngle(event,fp=None,hist=False):
55075535
'''Compute distances and angles in response to a menu command
@@ -5572,8 +5600,8 @@ def OnDistAngle(event,fp=None,hist=False):
55725600
DisAglData['covData'] = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.root, 'Covariance'))
55735601
try:
55745602
if hist:
5575-
Bonds = DisAglData['Bonds'] = DisAglData.get('Bonds',{})
5576-
Angles = DisAglData['Angles'] = DisAglData.get('Angles',{})
5603+
Bonds = data['Bonds'] = data.get('Bonds',{})
5604+
Angles = data['Angles'] = data.get('Angles',{})
55775605
pgbar = wx.ProgressDialog('Distance Angle calculation','Atoms done=',len(Oxyz)+1,
55785606
style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE)
55795607
AtomLabels,DistArray,AngArray = G2stMn.RetDistAngle(DisAglCtls,DisAglData,pgbar)
@@ -5594,10 +5622,6 @@ def OnDistAngle(event,fp=None,hist=False):
55945622
Angles[Atypes] = angles
55955623

55965624
elif fp:
5597-
#from importlib import reload
5598-
#reload(G2stMn)
5599-
#reload(G2mth)
5600-
#print('reloading G2stMn & G2mth')
56015625
G2stMn.PrintDistAngle(DisAglCtls,DisAglData,fp)
56025626
else:
56035627
G2stMn.PrintDistAngle(DisAglCtls,DisAglData)
@@ -16878,6 +16902,8 @@ def FillMenus():
1687816902
G2frame.Bind(wx.EVT_MENU, OnDistAngle, id=G2G.wxID_ATOMSDISAGL)
1687916903
G2frame.Bind(wx.EVT_MENU, OnDistAnglePrt, id=G2G.wxID_ATOMSPDISAGL)
1688016904
G2frame.Bind(wx.EVT_MENU, OnDistAngleHist, id=G2G.wxID_ATOMSBNDANGLHIST)
16905+
G2frame.Bind(wx.EVT_MENU, OnSaveDAHist, id=G2G.wxID_ATOMSSAVEHIST)
16906+
G2frame.Bind(wx.EVT_MENU, OnClearDAHist, id=G2G.wxID_ATOMSCLEARHIST)
1688116907
G2frame.Bind(wx.EVT_MENU, OnFracSplit, id=G2G.wxID_ATOMFRACSPLIT)
1688216908
G2frame.Bind(wx.EVT_MENU, OnDensity, id=G2G.wxID_ATOMSDENSITY)
1688316909
G2frame.Bind(wx.EVT_MENU, OnShowIsoDistortCalc, id=G2G.wxID_ISODISP)

0 commit comments

Comments
 (0)