Changeset 3335


Ignore:
Timestamp:
Apr 4, 2018 9:47:03 AM (4 years ago)
Author:
vondreele
Message:

fix display of magnetic symmetry operators with colors ("Show spins")

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r3329 r3335  
    7474    ''' Special version of MessageBox that displays magnetic spin text
    7575    '''
    76     def __init__(self,parent,title,text,table,Cents,names,spins,):
     76    def __init__(self,parent,title,text,table,Cents,names,spins,ifGray):
    7777        wx.Dialog.__init__(self,parent,wx.ID_ANY,title,pos=wx.DefaultPosition,
    7878            style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER,size=wx.Size(420,350))
     
    8282        Nnames = len(self.names)
    8383        self.spins = spins
     84        self.ifGray = ifGray
    8485        self.PrintTable = [' Magnetic symmetry operations for %s:'%self.text[0].split(':')[1],]
    8586        self.panel = wxscroll.ScrolledPanel(self)
     
    9293        for line in self.text:
    9394            mainSizer.Add(wx.StaticText(self.panel,label='     %s     '%(line)),0,WACV)
     95            if 'equivalent' in line:
     96                break
    9497        ncol = self.table[0].count(',')+2
    95         for ic,cent in enumerate(cents):
    96             Cent = np.array(Cents[ic])
    97             if ic:
    98                 cent = cent.strip(' (').strip(')+\n')
    99                 mainSizer.Add(wx.StaticText(self.panel,label='      for (%s)+'%(cent)),0,WACV)
    100             tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0)
    101             j = 0
    102             for item in self.table:
    103                 if 'for' in item:
    104                     mainSizer.Add(tableSizer,0,WACV)
    105                     mainSizer.Add(wx.StaticText(self.panel,label=item),0,WACV)
    106                     tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0)
    107                     continue
    108                 flds = item.split(')')[1]
    109                 tableSizer.Add(wx.StaticText(self.panel,label='  (%2d)  '%(j+1)),0,WACV)           
    110                 flds = flds.replace(' ','').split(',')
    111                 for i,fld in enumerate(flds):
    112                     if i < ncol-1:
    113                         text = wx.StaticText(self.panel,label='%s, '%(fld))
    114                         tableSizer.Add(text,0,WACV)
     98        nBlk = 0
     99        nG = 1
     100        if self.ifGray:
     101            nG = 2
     102        for ng in range(nG):
     103            for ic,cent in enumerate(cents):
     104                Cent = np.array(Cents[ic])
     105                if ic:
     106                    if cent: cent = cent.strip(' (').strip(')+\n')
     107                    label = '      for (%s)+'%(cent)
     108                    if ng or self.spins[nBlk*lentable] < 0:     #test for gray operators
     109                        label += "1'"
     110                    mainSizer.Add(wx.StaticText(self.panel,label=label),0,WACV)
     111                tableSizer = wx.FlexGridSizer(0,2*ncol+3,0,0)
     112                j = 0
     113                for item in self.table:
     114                    flds = item.split(')')[1]
     115                    tableSizer.Add(wx.StaticText(self.panel,label='  (%2d)  '%(j+1)),0,WACV)           
     116                    flds = flds.replace(' ','').split(',')
     117                    for i,fld in enumerate(flds):
     118                        if i < ncol-1:
     119                            text = wx.StaticText(self.panel,label='%s, '%(fld))
     120                            tableSizer.Add(text,0,WACV)
     121                        else:
     122                            text = wx.StaticText(self.panel,label='%s '%(fld))
     123                            tableSizer.Add(text,0,WACV)
     124                    text = wx.StaticText(self.panel,label=' (%s) '%(self.names[j%Nnames]))
     125                    try:
     126                        if self.spins[j+nBlk*lentable] < 0:
     127                            text.SetForegroundColour('Red')
     128                            item += ',-1'
     129                        else:
     130                            item += ',+1'
     131                    except IndexError:
     132                        print(self.spins,j,ic,lentable,self.names[j%Nnames])
     133                        item += ',+1'
     134                    M,T,S = G2spc.MagText2MTS(item.split(')')[1].replace(' ',''),CIF=False)
     135                    T = (T+Cent)%1.
     136                    item = G2spc.MT2text([M,T],reverse=True)
     137                    if S > 0:
     138                        item += ',+1'
    115139                    else:
    116                         text = wx.StaticText(self.panel,label='%s '%(fld))
    117                         tableSizer.Add(text,0,WACV)
    118                 text = wx.StaticText(self.panel,label=' (%s) '%(self.names[j%Nnames]))
    119                 try:
    120                     if self.spins[j+ic*lentable] < 0:
    121                         text.SetForegroundColour('Red')
    122140                        item += ',-1'
    123                     else:
    124                         item += ',+1'
    125                 except IndexError:
    126                     print(self.spins,j,ic,lentable,self.names[j%Nnames])
    127                     item += ',+1'
    128                 M,T,S = G2spc.MagText2MTS(item.split(')')[1].replace(' ',''),CIF=False)
    129                 T = (T+Cent)%1.
    130                 item = G2spc.MT2text([M,T],reverse=True)
    131                 if S > 0:
    132                     item += ',+1'
    133                 else:
    134                     item += ',-1'
    135                 self.PrintTable.append(item.replace(' ','').lower())
    136                 tableSizer.Add(text,0,WACV)
    137                 if not j%2:
    138                     tableSizer.Add((20,0))
    139                 j += 1               
    140             mainSizer.Add(tableSizer,0,WACV)
     141                    self.PrintTable.append(item.replace(' ','').lower())
     142                    tableSizer.Add(text,0,WACV)
     143                    if not j%2:
     144                        tableSizer.Add((20,0))
     145                    j += 1
     146                nBlk += 1
     147                mainSizer.Add(tableSizer,0,WACV)
     148           
    141149           
    142150        def OnPrintOps(event):
     
    14931501                    wx.MessageBox(Text,caption=msg,style=wx.ICON_EXCLAMATION)
    14941502                else:
     1503                    if generalData['Type'] == 'magnetic':
     1504                        Nops = len(SGData['SGOps'])*len(SGData['SGCen'])
     1505                        if SGData['SGInv']:
     1506                            Nops *= 2
     1507                        SGData['SpnFlp'] = Nops*[1,]
     1508                    if generalData['Modulated']:
     1509                        generalData['SuperSg'] = SetDefaultSSsymbol()
     1510                        generalData['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1]
     1511                        if SGData['SGGray']:
     1512                            SGData['SpnFlp'] += Nops*[-1,]
    14951513                    text,table = G2spc.SGPrint(SGData)
    14961514                    generalData['SGData'] = SGData
     
    14981516                    msg = 'Space Group Information'
    14991517                    G2G.SGMessageBox(General,msg,text,table).Show()
    1500                 if generalData['Type'] == 'magnetic':
    1501                     Nops = len(SGData['SGOps'])*len(SGData['SGCen'])
    1502                     if SGData['SGInv']:
    1503                         Nops *= 2
    1504                     SGData['SpnFlp'] = Nops*[1,]
    1505                 if generalData['Modulated']:
    1506                     generalData['SuperSg'] = SetDefaultSSsymbol()
    1507                     generalData['SSGData'] = G2spc.SSpcGroup(generalData['SGData'],generalData['SuperSg'])[1]
    15081518                Atoms = data['Atoms']
    15091519                cx,ct,cs,cia = generalData['AtomPtrs']
     
    18491859                    text[0] += " 1'"
    18501860                    text[3] += "1'"
    1851                 SGMagSpinBox(General,msg,text,table,SGData['SGCen'],OprNames,SpnFlp).Show()
     1861                SGMagSpinBox(General,msg,text,table,SGData['SGCen'],OprNames,
     1862                    SGData['SpnFlp'],SGData['SGGray']& (not SGData['SGFixed'])).Show()
    18521863                               
    18531864            SGData = generalData['SGData']           
  • trunk/GSASIIspc.py

    r3334 r3335  
    435435            IOpr = [-Opr[0],-Opr[1]]
    436436            SGTable.append('(%2d) %s'%(i+1,MT2text(IOpr)))       
    437     if SGData.get('SGGray',False) and not SGData.get('SGFixed',False):
    438         SGTable.append("     for 1'")
    439         for i,Opr in enumerate(SGData['SGOps']):
    440             SGTable.append('(%2d) %s'%(i+1,MT2text(Opr)))
    441         if AddInv and SGData['SGInv']:
    442             for i,Opr in enumerate(SGData['SGOps']):
    443                 IOpr = [-Opr[0],-Opr[1]]
    444                 SGTable.append('(%2d) %s'%(i+1,MT2text(IOpr)))       
     437#    if SGData.get('SGGray',False) and not SGData.get('SGFixed',False):
     438#        SGTable.append("     for 1'")
     439#        for i,Opr in enumerate(SGData['SGOps']):
     440#            SGTable.append('(%2d) %s'%(i+1,MT2text(Opr)))
     441#        if AddInv and SGData['SGInv']:
     442#            for i,Opr in enumerate(SGData['SGOps']):
     443#                IOpr = [-Opr[0],-Opr[1]]
     444#                SGTable.append('(%2d) %s'%(i+1,MT2text(IOpr)))       
    445445    return SGText,SGTable
    446446
  • trunk/imports/G2phase_CIF.py

    r3334 r3335  
    282282                        SSGData['SSGCen'].append(C)
    283283                        SGData['SGCen'].append(C[:3])
    284 #                        if not C[3]:
    285 #                            SGData['SGCen'].append(C[:3])
    286284                        censpn += list(np.array(spnflp)*S)
    287285                    self.MPhase['General']['SSGData'] = SSGData
Note: See TracChangeset for help on using the changeset viewer.