source: trunk/testSSymbols.py @ 3423

Last change on this file since 3423 was 3423, checked in by vondreele, 3 years ago

fix chemical composition restraint. Wasn't updating with new fracs after each cycle. Now OK.
new routine GetAtomFracById? in G2math called in G2strMath
fix a wx.wx.... bug in G2ctrlGUI!
fix G2testplot to use wx-Phoenix; ditto testSSymbols

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Author Revision URL Id
File size: 6.6 KB
Line 
1#test
2import sys
3import wx
4import GSASIIpath
5GSASIIpath.SetBinaryPath()
6import GSASIIspc as G2spc
7import GSASIIctrlGUI as G2G
8
9   
10[wxID_FILEEXIT, 
11] = [wx.NewId() for _init_coll_File_Items in range(1)]
12WACV = wx.ALIGN_CENTER_VERTICAL
13laueSS = {'2/m':['(a0g)','(a1/2g)','(0b0)','(1/2b0)','(0b1/2)','(1/2b1/2)'],
14        'mmm':['(a00)','(a1/20)','(a01/2)','(a1/21/2)','(a10)','(a01)',
15               '(0b0)','(1/2b0)','(0b1/2)','(1/2b1/2)','(1b0)','(0b1)',
16               '(00g)','(1/20g)','(01/2g)','(1/21/2g)','(10g)','(01g)']}
17       
18laueTS = {'2/m':['','s','s0','0s','ss'],
19          'mmm':['000','s00','0s0','00s','ss0','s0s','0ss','q00','0q0','00q','0qq','q0q','qq0'],
20          }
21
22class testSSymbols(wx.Frame):
23
24    def _init_ctrls(self, parent):
25        wx.Frame.__init__(self, name='testSSymbols', parent=parent,
26            size=wx.DefaultSize,style=wx.DEFAULT_FRAME_STYLE, title='Test SS symbols')
27        self.testSSMenu = wx.MenuBar()
28        self.File = wx.Menu(title='')
29        self.File.Append(wxID_FILEEXIT,'Exit','Exit from testSS')
30        self.Bind(wx.EVT_MENU, self.OnFileExit, id=wxID_FILEEXIT)
31        self.testSSMenu.Append(menu=self.File, title='Run')
32        self.SetMenuBar(self.testSSMenu)
33        self.testSSPanel = wx.Window(self)       
34       
35    def __init__(self, parent):
36        self._init_ctrls(parent)
37        self.Bind(wx.EVT_CLOSE, self.ExitMain)   
38        self.dataFrame = None
39        Data = {'SGData':G2spc.SpcGroup('P 1')[1],'SuperSg':'(abg)',}
40        self.UpdateData(Data)
41
42    def ExitMain(self, event):
43        sys.exit()
44       
45    def OnFileExit(self,event):
46        if self.dataFrame:
47            self.dataFrame.Clear() 
48            self.dataFrame.Destroy()
49        self.Close()
50       
51    def UpdateData(self,Data):
52       
53        def OnExhaustive(event):
54            SSList = G2spc.SSChoice(Data['SGData'])
55            print(SSList)           
56       
57        def OnSpaceGroup(event):
58            Flds = SGTxt.GetValue().split()
59            #get rid of extra spaces between fields first
60            for fld in Flds: fld = fld.strip()
61            SpcGp = ' '.join(Flds)
62            # try a lookup on the user-supplied name
63            SpGrpNorm = G2spc.StandardizeSpcName(SpcGp)
64            if SpGrpNorm:
65                SGErr,SGData = G2spc.SpcGroup(SpGrpNorm)
66            else:
67                SGErr,SGData = G2spc.SpcGroup(SpcGp)
68            if SGErr:
69                text = [G2spc.SGErrors(SGErr)+'\nSpace Group set to previous']
70                SGTxt.SetValue(Data['SGData']['SpGrp'])
71                msg = 'Space Group Error'
72                Style = wx.ICON_EXCLAMATION
73                Text = '\n'.join(text)
74                wx.MessageBox(Text,caption=msg,style=Style)
75            else:
76                text,table = G2spc.SGPrint(SGData)
77                Data['SGData'] = SGData
78                SGTxt.SetValue(Data['SGData']['SpGrp'])
79                msg = 'Space Group Information'
80                G2G.SGMessageBox(self,msg,text,table).Show()
81            SSChoice = G2spc.SSChoice(Data['SGData'])
82            Data['SuperSg'] = SSChoice[0]
83            self.UpdateData(Data)
84
85        def OnSuperGp(event):
86            SSymbol = superGp.GetValue()
87            SpGrp = Data['SGData']['SpGrp']
88            if Data['SGData']['SGGray']: SpGrp += " 1'"
89            print('Try: %s%s'%(Data['SGData']['SpGrp'],SSymbol))
90            if Data['SGData']['SGGray']: SSymbol = SSymbol[:-1]
91            E,SSGData = G2spc.SSpcGroup(Data['SGData'],SSymbol)
92            if SSGData:
93                text,table = G2spc.SSGPrint(Data['SGData'],SSGData)
94                Data['SSGData'] = SSGData
95                Data['SuperSg'] = SSymbol
96                msg = 'Superspace Group Information'
97                G2G.SGMessageBox(self,msg,text,table).Show()
98                print('Super spacegroup operators for '+SSGData['SSpGrp'])
99                for Op in SSGData['SSGOps']:
100                    print(G2spc.SSMT2text(Op).replace(' ',''))
101                if SGData['SGInv']:                                 
102                    for Op in SSGData['SSGOps']:
103                        Op = [-Op[0],-Op[1]%1.]
104                        print(G2spc.SSMT2text(Op).replace(' ',''))
105            else:
106                text = [E+'\nSuperspace Group set to previous']
107                superGp.SetValue(Data['SuperSg'])
108                msg = 'Superspace Group Error'
109                Style = wx.ICON_EXCLAMATION
110                Text = '\n'.join(text)
111                wx.MessageBox(Text,caption=msg,style=Style)
112            wx.CallAfter(self.UpdateData,Data)
113       
114        SGData = G2spc.SpcGroup(Data['SGData']['SpGrp'])[1]
115       
116        self.testSSPanel.DestroyChildren()
117        mainSizer = wx.FlexGridSizer(0,2,5,5)
118        mainSizer.Add(wx.StaticText(self.testSSPanel,-1,'  Space group: '),0,WACV)
119        SpGrp = Data['SGData']['SpGrp']
120        if Data['SGData']['SGGray']: SpGrp += " 1'"
121        SGTxt = wx.TextCtrl(self.testSSPanel,-1,value=SpGrp,style=wx.TE_PROCESS_ENTER)
122        SGTxt.Bind(wx.EVT_TEXT_ENTER,OnSpaceGroup)
123        mainSizer.Add(SGTxt,0,WACV)
124        mainSizer.Add(wx.StaticText(self.testSSPanel,label=' Superspace group: '+SpGrp),0,WACV)
125        ssChoice = G2spc.SSChoice(Data['SGData'])
126        if Data['SGData']['SGGray']: ssChoice = [G2spc.fixGray(Data['SGData'],item) for item in ssChoice]
127        ssSym = Data['SuperSg']
128        if Data['SGData']['SGGray']: ssSym = G2spc.fixGray(SGData,ssSym)
129        if ssChoice:
130            superGp = wx.ComboBox(self.testSSPanel,value=ssSym,choices=ssChoice,style=wx.CB_DROPDOWN)   #wx.CB_READONLY|
131            superGp.Bind(wx.EVT_COMBOBOX,OnSuperGp)
132            superGp.Bind(wx.EVT_TEXT_ENTER,OnSuperGp)
133        else:   #nonstandard space group symbol not in my dictionary
134            superGp = wx.TextCtrl(self.testSSPanel,value=ssSym,style=wx.TE_PROCESS_ENTER)
135            superGp.Bind(wx.EVT_TEXT_ENTER,OnSuperGp)                       
136        mainSizer.Add(superGp,0,WACV)
137        mainSizer.Add(wx.StaticText(self.testSSPanel,-1,' Exhaustive try: '),0,WACV)
138        ESStry = wx.Button(self.testSSPanel,-1,'OK') 
139        ESStry.Bind(wx.EVT_BUTTON,OnExhaustive)
140        mainSizer.Add(ESStry,0,WACV)
141        self.testSSPanel.SetSizer(mainSizer)
142        Size = mainSizer.Fit(self.testSSPanel)
143        Size[0] = 800
144        Size[1] = max(Size[1],350)
145        self.testSSPanel.SetSize(Size)
146           
147class testSSmain(wx.App):
148    def OnInit(self):
149        self.main = testSSymbols(None)
150        self.main.Show()
151        self.SetTopWindow(self.main)
152        return True
153
154def main():
155    'Starts main application to compute and plot derivatives'
156    application = testSSmain(0)
157    application.MainLoop()
158   
159if __name__ == '__main__':
160    main()
161           
162       
Note: See TracBrowser for help on using the repository browser.