Changeset 2401 for trunk/GSASIIphsGUI.py
- Timestamp:
- Jul 29, 2016 3:52:31 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIphsGUI.py
r2311 r2401 219 219 if 'AtomPtrs' not in generalData: 220 220 generalData['AtomPtrs'] = [3,1,7,9] 221 if generalData['Type'] == 'macromolecular':221 if generalData['Type'] == 'macromolecular': 222 222 generalData['AtomPtrs'] = [6,4,10,12] 223 if generalData['Type'] in ['modulated','magnetic',]: 223 elif generalData['Type'] == 'magnetic': 224 generalData['AtomPtrs'] = [3,1,10,12] 225 if generalData['Type'] in ['modulated',]: 226 generalData['Modulated'] = True 227 generalData['Type'] = 'nuclear' 224 228 if 'Super' not in generalData: 225 229 generalData['Super'] = 1 … … 229 233 generalData['4DmapData'] = mapDefault.copy() 230 234 generalData['4DmapData'].update({'MapType':'Fobs'}) 235 if 'Modulated' not in generalData: 236 generalData['Modulated'] = False 231 237 if 'HydIds' not in generalData: 232 238 generalData['HydIds'] = {} … … 316 322 if General.GetSizer(): 317 323 General.GetSizer().Clear(True) 318 phaseTypes = ['nuclear','m odulated','magnetic','macromolecular','faulted']324 phaseTypes = ['nuclear','magnetic','macromolecular','faulted'] 319 325 SetupGeneral() 320 326 generalData = data['General'] … … 369 375 generalData['Type'] = TypeTxt.GetValue() 370 376 pages = [G2frame.dataDisplay.GetPageText(PageNum) for PageNum in range(G2frame.dataDisplay.GetPageCount())] 371 if generalData['Type'] in ['modulated','magnetic']: 372 if 'SuperSg' not in generalData: 373 generalData['SuperSg'] = SetDefaultSSsymbol() 374 generalData['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1] 375 if 'MC/SA' in pages: 376 pass 377 # G2frame.dataDisplay.DeletePage(pages.index('MC/SA')) #this crashes!! 378 if 'Layers' in pages: 379 pass 380 # G2frame.dataDisplay.DeletePage(pages.index('Layers')) 381 if 'Wave Data' not in pages: 382 G2frame.waveData = wx.ScrolledWindow(G2frame.dataDisplay) 383 G2frame.dataDisplay.InsertPage(3,G2frame.waveData,'Wave Data') 384 Id = wx.NewId() 385 TabSelectionIdDict[Id] = 'Wave Data' 386 wx.CallAfter(UpdateGeneral) 387 elif generalData['Type'] == 'faulted': 377 if generalData['Type'] == 'faulted': 388 378 G2frame.dataFrame.Bind(wx.EVT_MENU, OnLoadDIFFaX, id=G2gd.wxID_LOADDIFFAX) 389 379 G2frame.dataFrame.Bind(wx.EVT_MENU, OnSimulate, id=G2gd.wxID_LAYERSIMULATE) … … 445 435 msg = 'Space Group Information' 446 436 G2gd.SGMessageBox(General,msg,text,table).Show() 447 if generalData[' Type'] in ['modulated',]:437 if generalData['Modulated']: 448 438 generalData['SuperSg'] = SetDefaultSSsymbol() 449 439 generalData['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1] … … 456 446 atom[cx+5] = Mult 457 447 wx.CallAfter(UpdateGeneral) 448 449 def OnModulated(event): 450 if not len(generalData['AtomTypes']): #can change only if no atoms! 451 pages = [G2frame.dataDisplay.GetPageText(PageNum) for PageNum in range(G2frame.dataDisplay.GetPageCount())] 452 if generalData['Type'] in ['nuclear','magnetic']: 453 generalData['Modulated'] = modulated.GetValue() 454 if generalData['Modulated']: 455 if 'SuperSg' not in generalData: 456 generalData['SuperSg'] = SetDefaultSSsymbol() 457 generalData['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1] 458 if 'Super' not in generalData: 459 generalData['Super'] = 1 460 generalData['SuperVec'] = [[0,0,.1],False,4] 461 generalData['SSGData'] = {} 462 if '4DmapData' not in generalData: 463 generalData['4DmapData'] = mapDefault.copy() 464 generalData['4DmapData'].update({'MapType':'Fobs'}) 465 if 'MC/SA' in pages: 466 pass 467 # G2frame.dataDisplay.DeletePage(pages.index('MC/SA')) #this crashes!! 468 if 'Layers' in pages: 469 pass 470 # G2frame.dataDisplay.DeletePage(pages.index('Layers')) 471 if 'Wave Data' not in pages: 472 G2frame.waveData = wx.ScrolledWindow(G2frame.dataDisplay) 473 G2frame.dataDisplay.InsertPage(3,G2frame.waveData,'Wave Data') 474 Id = wx.NewId() 475 TabSelectionIdDict[Id] = 'Wave Data' 476 else: 477 if 'Wave Data' in pages: 478 G2frame.dataDisplay.DeletePage(pages.index('Wave Data')) 479 wx.CallAfter(UpdateGeneral) 480 else: 481 G2frame.ErrorDialog('Modulation type change error','Can change modulation only if there are no atoms') 482 modulated.SetValue(generalData['Modulated']) 458 483 459 484 nameSizer = wx.BoxSizer(wx.HORIZONTAL) … … 472 497 SGTxt.Bind(wx.EVT_TEXT_ENTER,OnSpaceGroup) 473 498 nameSizer.Add(SGTxt,0,WACV) 499 if generalData['Type'] in ['nuclear','magnetic']: 500 modulated = wx.CheckBox(General,label='Modulated? ') 501 modulated.SetValue(generalData['Modulated']) 502 modulated.Bind(wx.EVT_CHECKBOX,OnModulated) 503 nameSizer.Add(modulated,0,WACV) 474 504 return nameSizer 475 505 … … 684 714 denSizer.Add(mattTxt,0,WACV) 685 715 return denSizer,denTxt,mattTxt 716 717 def MagSizer(): 718 719 def OnSpinOp(event): 720 Obj = event.GetEventObject() 721 isym = Indx[Obj.GetId()] 722 SGData['SGSpin'][isym] = Obj.GetValue() 723 wx.CallAfter(UpdateGeneral) 724 725 SGData = generalData['SGData'] 726 Indx = {} 727 MagSym = generalData['SGData']['SpGrp'].split() 728 magSizer = wx.BoxSizer(wx.VERTICAL) 729 magSizer.Add(wx.StaticText(General,label=' Magnetic spin operator selection:'),0,WACV) 730 magSizer.Add(wx.StaticText(General,label='NB: UNDER CONSTRUCTION - DO NOT USE'),0,WACV) 731 if not len(GenSym): 732 magSizer.Add(wx.StaticText(General,label=' No spin inversion allowed'),0,WACV) 733 return magSizer 734 spinSizer = wx.BoxSizer(wx.HORIZONTAL) 735 spinColor = ['black','red'] 736 for isym,sym in enumerate(GenSym): 737 spinSizer.Add(wx.StaticText(General,label='%s: '%(sym.strip())),0,WACV) 738 spinOp = wx.ComboBox(General,value=SGData['SGSpin'][isym],choices=spinColor, 739 style=wx.CB_READONLY|wx.CB_DROPDOWN) 740 Indx[spinOp.GetId()] = isym 741 spinOp.Bind(wx.EVT_COMBOBOX,OnSpinOp) 742 spinSizer.Add(spinOp,0,WACV) 743 MagSym = G2spc.MagSGSym(SGData) 744 spinSizer.Add(wx.StaticText(General,label=' Magnetic space group: '+MagSym),0,WACV) 745 magSizer.Add(spinSizer) 746 return magSizer 686 747 687 748 def PawleySizer(): … … 1188 1249 G2G.HorizontalLine(mainSizer,General) 1189 1250 1190 if generalData['Type'] in ['modulated','magnetic',]: 1251 if generalData['Type'] == 'magnetic': 1252 GenSym,GenFlg = G2spc.GetGenSym(generalData['SGData']) 1253 mainSizer.Add(MagSizer()) 1254 G2G.HorizontalLine(mainSizer,General) 1255 1256 if generalData['Modulated']: 1191 1257 G2frame.dataFrame.GeneralCalc.Enable(G2gd.wxID_SINGLEMCSA,False) 1192 1258 G2frame.dataFrame.GeneralCalc.Enable(G2gd.wxID_MULTIMCSA,False) … … 1227 1293 G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Phases'),text=phaseName) 1228 1294 G2frame.PatternTree.SetItemPyData(sub,newPhase) 1229 # G2gd.MovePatternTreeToGrid(G2frame,sub) #bring up new phase General tab1230 1295 1231 1296 ################################################################################ … … 1247 1312 if Atoms.GetColLabelValue(c) == 'refine': 1248 1313 Type = generalData['Type'] 1249 if Type in ['nuclear','macromolecular',' modulated','faulted',]:1314 if Type in ['nuclear','macromolecular','faulted',]: 1250 1315 choice = ['F - site fraction','X - coordinates','U - thermal parameters'] 1251 1316 elif Type in ['magnetic',]: … … 1398 1463 Atoms.SetCellStyle(r,ci,WHITE,False) 1399 1464 SetupGeneral() 1465 elif Atoms.GetColLabelValue(c) in ['Mx','My','Mz']: 1466 pass 1400 1467 elif Atoms.GetColLabelValue(c) == 'I/A': #note use of text color to make it vanish! 1401 1468 if atomData[r][c] == 'I': … … 1626 1693 wg.GRID_VALUE_CHOICE+AAchoice, 1627 1694 wg.GRID_VALUE_STRING] + Types 1695 elif generalData['Type'] == 'magnetic': 1696 colLabels = colLabels[:7]+['Mx','My','Mz']+colLabels[7:] 1697 Types = Types[:7]+3*[wg.GRID_VALUE_FLOAT+':10,4',]+Types[7:] 1628 1698 SGData = data['General']['SGData'] 1629 1699 G2frame.dataFrame.SetStatusText('') … … 1668 1738 Sytsym,Mult = G2spc.SytSym([x,y,z],SGData) 1669 1739 if generalData['Type'] == 'macromolecular': 1670 atomData.append([0,Name,'',Name,El,'',x,y,z,1 ,Sytsym,Mult,'I',0.10,0,0,0,0,0,0,atId])1740 atomData.append([0,Name,'',Name,El,'',x,y,z,1.,Sytsym,Mult,'I',0.10,0,0,0,0,0,0,atId]) 1671 1741 elif generalData['Type'] in ['nuclear','faulted',]: 1672 atomData.append([Name,El,'',x,y,z,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId]) 1673 elif generalData['Type'] in ['modulated','magnetic',]: 1674 atomData.append([Name,El,'',x,y,z,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId,[],[], 1675 {'SS1':{'waveType':'Fourier','Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}]) 1742 if generalData['Modulated']: 1743 atomData.append([Name,El,'',x,y,z,1.,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId,[],[], 1744 {'SS1':{'waveType':'Fourier','Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}]) 1745 else: 1746 atomData.append([Name,El,'',x,y,z,1.,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId]) 1747 elif generalData['Type'] == 'magnetic': 1748 if generalData['Modulated']: 1749 atomData.append([Name,El,'',x,y,z,1.,0.,0.,0.,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId,[],[], 1750 {'SS1':{'waveType':'Fourier','Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}]) 1751 else: 1752 atomData.append([Name,El,'',x,y,z,1.,0.,0.,0.,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId]) 1753 1676 1754 SetupGeneral() 1677 1755 data['Drawing']['Atoms'] = [] … … 1858 1936 generalData = data['General'] 1859 1937 SGData = generalData['SGData'] 1860 if generalData['Type'] in ['nuclear',' modulated','faulted',]:1938 if generalData['Type'] in ['nuclear','faulted',]: 1861 1939 if oldatom: 1862 1940 opr = oldatom[5] … … 1871 1949 ['',]+[[255,255,255],]+atom[9:]+[[],[]]][0] 1872 1950 ct,cs = [1,8] #type & color 1951 elif generalData['Type'] == 'magnetic': 1952 atomInfo = [atom[:2]+atom[3:6]+atom[7:10]+['1',]+['vdW balls',]+ 1953 ['',]+[[255,255,255],]+atom[12:]+[[],[]]][0] 1954 ct,cs = [1,11] #type & color 1873 1955 elif generalData['Type'] == 'macromolecular': 1874 1956 try: … … 1894 1976 atomData.insert(indx,[0,Name,'',Name,El,'',x,y,z,1,Sytsym,Mult,'I',0.10,0,0,0,0,0,0,atId]) 1895 1977 elif generalData['Type'] in ['nuclear','faulted',]: 1896 atomData.insert(indx,[Name,El,'',x,y,z,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId]) 1897 elif generalData['Type'] in ['modulated','magnetic']: 1898 atomData.insert(indx,[Name,El,'',x,y,z,1,Sytsym,Mult,0,'I',0.01,0,0,0,0,0,0,atId,[],[], 1899 {'SS1':{'waveType':'Fourier','Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}]) 1900 SetupGeneral() 1978 if generalData['Modulated']: 1979 atomData.insert(indx,[Name,El,'',x,y,z,1,Sytsym,Mult,0,'I',0.01,0,0,0,0,0,0,atId,[],[], 1980 {'SS1':{'waveType':'Fourier','Sfrac':[],'Spos':[],'Sadp':[],'Smag':[]}}]) 1981 else: 1982 atomData.insert(indx,[Name,El,'',x,y,z,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,atId]) 1983 SetupGeneral() 1901 1984 data['Drawing']['Atoms'] = [] 1902 1985 UpdateDrawAtoms() … … 3593 3676 drawingData['showRigidBodies'] = True 3594 3677 cx,ct,cs,ci = [0,0,0,0] 3595 if generalData['Type'] in ['nuclear',' modulated','faulted',]:3678 if generalData['Type'] in ['nuclear','faulted',]: 3596 3679 cx,ct,cs,ci = [2,1,6,17] #x, type, style & index 3597 3680 elif generalData['Type'] == 'macromolecular': 3598 3681 cx,ct,cs,ci = [5,4,9,20] #x, type, style & index 3599 3682 elif generalData['Type'] == 'magnetic': 3600 cx,ct,cs,ci = [2,1,6,20] #x, type, style & index 3601 # elif generalData['Type'] == 'modulated': 3602 # ????? for future 3683 cx,ct,cs,ci = [2,1,9,20] #x, type, style & index 3603 3684 drawingData['atomPtrs'] = [cx,ct,cs,ci] 3604 3685 if not drawingData.get('Atoms'): … … 3867 3948 labelChoice = [' ','type','name','number','residue','1-letter','chain'] 3868 3949 Types[9] = wg.GRID_VALUE_CHOICE+": ,type,name,number,residue,1-letter,chain" 3950 elif generalData['Type'] == 'magnetic': 3951 colLabels = colLabels[:5]+['Mx','My','Mz']+colLabels[5:] 3952 Types = Types[:5]+3*[wg.GRID_VALUE_FLOAT+':10,4',]+Types[5:] 3869 3953 table = [] 3870 3954 rowLabels = [] … … 6740 6824 rowLabels = [] 6741 6825 for i in range(len(PawleyPeaks)): rowLabels.append(str(i)) 6742 if generalData[' Type'] in ['modulated','magnetic',]:6826 if generalData['Modulated']: 6743 6827 colLabels = ['h','k','l','m','mul','d','refine','Fsq(hkl)','sig(Fsq)'] 6744 6828 Types = 5*[wg.GRID_VALUE_LONG,]+[wg.GRID_VALUE_FLOAT+':10,4',wg.GRID_VALUE_BOOL,]+ \ … … 6771 6855 PawleyPeaks = [] 6772 6856 HKLd = np.array(G2lat.GenHLaue(dmin,SGData,A)) 6773 if generalData[' Type'] in ['modulated','magnetic',]:6857 if generalData['Modulated']: 6774 6858 Vec,x,maxH = generalData['SuperVec'] 6775 6859 SSGData = G2spc.SSpcGroup(SGData,generalData['SuperSg'])[1] … … 6810 6894 generalData = data['General'] 6811 6895 im = 0 6812 if generalData[' Type'] in ['modulated','magnetic',]:6896 if generalData['Modulated']: 6813 6897 im = 1 6814 6898 HistoNames = filter(lambda a:Histograms[a]['Use']==True,Histograms.keys()) … … 6868 6952 PatternId,'Reflection Lists'))[PhaseName]['RefList'] 6869 6953 im = 0 6870 if data['General'][' Type'] in ['modulated','magnetic',]:6954 if data['General']['Modulated']: 6871 6955 im = 1 6872 6956 Inv = data['General']['SGData']['SGInv'] … … 7096 7180 pgbar.Destroy() 7097 7181 else: 7098 if generalData[' Type'] in ['modulated',]:7182 if generalData['Modulated']: 7099 7183 dim = '4D ' 7100 7184 G2mth.Fourier4DMap(data,ReflData) … … 7354 7438 G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.LayerData) 7355 7439 UpdateLayerData() 7356 elif text == 'Wave Data' and data['General'][' Type'] in ['modulated','magnetic']:7440 elif text == 'Wave Data' and data['General']['Modulated']: 7357 7441 G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.WavesData) 7358 7442 UpdateWavesData() … … 7435 7519 G2frame.dataFrame.Bind(wx.EVT_MENU, OnReImport, id=id) 7436 7520 # Wave Data 7437 if data['General'][' Type'] in ['modulated','magnetic']:7521 if data['General']['Modulated']: 7438 7522 FillSelectPageMenu(TabSelectionIdDict, G2frame.dataFrame.WavesData) 7439 7523 G2frame.dataFrame.Bind(wx.EVT_MENU, OnWaveVary, id=G2gd.wxID_WAVEVARY) … … 7511 7595 if 'dict' in str(type(data['MCSA']['Results'])): 7512 7596 data['MCSA']['Results'] = [] 7597 if 'Modulated' not in data['General']: 7598 data['General']['Modulated'] = False 7599 if 'modulated' in data['General']['Type']: 7600 data['General']['Modulated'] = True 7601 data['General']['Type'] = 'nuclear' 7602 7513 7603 #end patch 7514 7604 … … 7536 7626 G2frame.dataDisplay.AddPage(Atoms,'Atoms') 7537 7627 Pages.append('Atoms') 7538 if data['General'][' Type'] in ['modulated','magnetic']:7628 if data['General']['Modulated']: 7539 7629 G2frame.waveData = wx.ScrolledWindow(G2frame.dataDisplay) 7540 7630 G2frame.dataDisplay.AddPage(G2frame.waveData,'Wave Data') … … 7551 7641 G2frame.dataDisplay.AddPage(drawAtoms,'Draw Atoms') 7552 7642 Pages.append('Draw Atoms') 7553 if data['General']['Type'] not in [' modulated','magnetic','faulted',]:7643 if data['General']['Type'] not in ['faulted',] and not data['General']['Modulated']: 7554 7644 RigidBodies = wx.ScrolledWindow(G2frame.dataDisplay) 7555 7645 G2frame.dataDisplay.AddPage(RigidBodies,'RB Models') … … 7559 7649 G2frame.dataDisplay.AddPage(MapPeaks,'Map peaks') 7560 7650 Pages.append('Map peaks') 7561 if data['General']['Type'] not in [' modulated','magnetic','faulted',]:7651 if data['General']['Type'] not in ['faulted',] and not data['General']['Modulated']: 7562 7652 G2frame.MCSA = wx.ScrolledWindow(G2frame.dataDisplay) 7563 7653 G2frame.dataDisplay.AddPage(G2frame.MCSA,'MC/SA')
Note: See TracChangeset
for help on using the changeset viewer.