Changeset 3686 for trunk/GSASIIphsGUI.py


Ignore:
Timestamp:
Oct 22, 2018 8:58:53 AM (3 years ago)
Author:
vondreele
Message:

install new use of Bilbao site - call SUBGROUPS for making subgroup phase selections from parent structure
some modifications to mag subgroup stuff to accommodate

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r3682 r3686  
    590590    '''Get user selected magnetic atoms after cell transformation
    591591    '''
    592     def __init__(self,parent,Name,Atoms,atCodes,atMxyz,ifOK=False,ifDelete=False):
    593         wx.Dialog.__init__(self,parent,wx.ID_ANY,'Magnetic atom selection',
     592    def __init__(self,parent,Name,Atoms,atCodes,atMxyz,ifMag=True,ifOK=False,ifDelete=False):
     593        title = 'Subgroup atom list'
     594        if ifMag:
     595            title = 'Magnetic atom selection'
     596        wx.Dialog.__init__(self,parent,wx.ID_ANY,title,
    594597            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
    595         self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     598        self.panel = wxscroll.ScrolledPanel(self)         #just a dummy - gets destroyed in Draw!
     599#        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
    596600        self.Name = Name
    597601        self.Atoms = Atoms
    598602        self.atCodes = atCodes
    599603        self.atMxyz = atMxyz
     604        self.ifMag = ifMag
    600605        self.ifOK = ifOK
    601606        self.ifDelete = ifDelete
     
    612617       
    613618        self.panel.Destroy()
    614         self.panel = wx.Panel(self)
     619        self.panel = wxscroll.ScrolledPanel(self,style = wx.DEFAULT_DIALOG_STYLE)
    615620        Indx = {}
    616621        Mstr = [' Mx',' My',' Mz']
     622        Xstr = ['X','Y','Z']
    617623        mainSizer = wx.BoxSizer(wx.VERTICAL)
    618624        mainSizer.Add(wx.StaticText(self.panel,label='For: %s'%self.Name),0,WACV)
    619625       
    620         mainSizer.Add(wx.StaticText(self.panel,label='        Name, x, y, z, allowed moments, mag. site sym:'),0,WACV)
     626        if self.ifMag:
     627            mainSizer.Add(wx.StaticText(self.panel,label='        Name, x, y, z, allowed moments, mag. site sym:'),0,WACV)
     628        else:
     629            mainSizer.Add(wx.StaticText(self.panel,label='        Name, x, y, z, allowed xyz, site sym:'),0,WACV)
    621630        atmSizer = wx.FlexGridSizer(0,2,5,5)
    622631        for iuse,[use,atom,mxyz] in enumerate(zip(self.Use,self.Atoms,self.atMxyz)):
     
    624633            for i,mx in enumerate(mxyz[1]):
    625634                if mx:
    626                     mstr[i] = Mstr[i]
    627             useChk = wx.CheckBox(self.panel,label='Use?')
    628             Indx[useChk.GetId()] = iuse
    629             useChk.SetValue(use)
    630             useChk.Bind(wx.EVT_CHECKBOX, OnUseChk)
    631             atmSizer.Add(useChk,0,WACV)
     635                    if self.ifMag:
     636                        mstr[i] = Mstr[i]
     637                    else:
     638                        mstr[i] = Xstr[i]
     639            if self.ifMag:
     640                useChk = wx.CheckBox(self.panel,label='Use?')
     641                Indx[useChk.GetId()] = iuse
     642                useChk.SetValue(use)
     643                useChk.Bind(wx.EVT_CHECKBOX, OnUseChk)
     644                atmSizer.Add(useChk,0,WACV)
     645            else:
     646                atmSizer.Add((2,2),0)
    632647            text = '  %5s %10.5f %10.5f %10.5f (%s,%s,%s) %s   '%(atom[0],atom[3],atom[4],atom[5],mstr[0],mstr[1],mstr[2],mxyz[0])
    633648            atmSizer.Add(wx.StaticText(self.panel,label=text),0,WACV)
     
    657672        mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
    658673        self.panel.SetSizer(mainSizer)
    659         self.panel.Fit()
    660         self.Fit()
     674        size = np.array(self.GetSize())
     675        self.panel.SetupScrolling()
     676        self.panel.SetAutoLayout(1)
     677        size = [size[0]-5,size[1]-20]       #this fiddling is needed for older wx!
     678        self.panel.SetSize(size)
    661679       
    662680    def GetSelection(self):
     
    24422460                    if not '_' in BNSlatt:
    24432461                        SGData['SGSpin'] = G2spc.GetSGSpin(SGData,SGData['MagSpGrp'])
    2444                        
    2445                        
    2446                        
    24472462                else:
    24482463                    return
     
    24632478            else:
    24642479                phaseName = newPhase['General']['Name']
    2465                
    2466                
    24672480                newPhase,atCodes = G2lat.TransformPhase(data,newPhase,Trans,Uvec,Vvec,ifMag)
    24682481                detTrans = np.abs(nl.det(Trans))
     
    25172530        magIds = []
    25182531        magchoices = []
     2532        ifMag = False
    25192533        for mid,magdata in enumerate(magData):
    25202534            if magdata['Keep']:
     2535                if 'magAtms' in magdata:
     2536                    ifMag = True
    25212537                magdata['No.'] = mid+1
    25222538                trans = G2spc.Trans2Text(magdata['Trans'])
     
    25262542                magchoices.append('(%d) %s; (%s) + (%s)'%(mid+1,magdata['Name'],trans,vec))
    25272543        if not len(magKeep):
    2528             G2frame.ErrorDialog('Magnetic phase selection error','No magnetic phases found; be sure to "Keep" some')
     2544            G2frame.ErrorDialog('Subgroup/magnetic phase selection error','No magnetic phases found; be sure to "Keep" some')
    25292545            return
    2530         dlg = wx.SingleChoiceDialog(G2frame,'Select magnetic space group','Make new magnetic phase',magchoices)
     2546        if ifMag:
     2547            dlg = wx.SingleChoiceDialog(G2frame,'Select magnetic space group','Make new magnetic phase',magchoices)
     2548        else:
     2549            dlg = wx.SingleChoiceDialog(G2frame,'Select subgroup','Make new subgroup phase',magchoices)
    25312550        opt = dlg.ShowModal()
    25322551        if opt == wx.ID_OK:
     
    25342553            magchoice = magKeep[sel]
    25352554            magId = magIds[sel]
    2536             phaseName = '%s mag_%d'%(data['General']['Name'],magchoice['No.'])
     2555            if ifMag:
     2556                phaseName = '%s mag_%d'%(data['General']['Name'],magchoice['No.'])
     2557            else:
     2558                phaseName = '%s sub_%d'%(data['General']['Name'],magchoice['No.'])
    25372559            newPhase = copy.deepcopy(data)
    25382560            newPhase['ranId'] = ran.randint(0,sys.maxsize),
     
    25442566            SGData = generalData['SGData']
    25452567            vvec = np.array([0.,0.,0.])
    2546             newPhase,atCodes = G2lat.TransformPhase(data,newPhase,magchoice['Trans'],magchoice['Uvec'],vvec,True)
     2568            newPhase,atCodes = G2lat.TransformPhase(data,newPhase,magchoice['Trans'],magchoice['Uvec'],vvec,ifMag)
    25472569            Atoms = newPhase['Atoms']
    25482570            Atms = []
     
    25502572            atMxyz = []
    25512573            for ia,atom in enumerate(Atoms):
    2552                 if not len(G2elem.GetMFtable([atom[1],],[2.0,])):
     2574                if ifMag and not len(G2elem.GetMFtable([atom[1],],[2.0,])):
    25532575                    continue
    25542576                atom[0] += '_%d'%ia
     2577                atom[2] = ''                    #clear away refinement flags
    25552578                SytSym,Mul,Nop,dupDir = G2spc.SytSym(atom[3:6],SGData)
    2556                 CSI = G2spc.GetCSpqinel(SGData['SpnFlp'],dupDir)
    25572579                Atms.append(atom)
    25582580                AtCods.append(atCodes[ia])
    2559                 MagSytSym = G2spc.MagSytSym(SytSym,dupDir,SGData)
    2560                 atMxyz.append([MagSytSym,CSI[0]])
    2561             dlg = UseMagAtomDialog(G2frame,magchoices[sel],Atms,AtCods,atMxyz,ifDelete=True)
     2581                if ifMag:
     2582                    MagSytSym = G2spc.MagSytSym(SytSym,dupDir,SGData)
     2583                    CSI = G2spc.GetCSpqinel(SGData['SpnFlp'],dupDir)
     2584                    atMxyz.append([MagSytSym,CSI[0]])
     2585                else:
     2586                    CSI = G2spc.GetCSxinel(SytSym)
     2587                    atMxyz.append([SytSym,CSI[0]])
     2588            dlg = UseMagAtomDialog(G2frame,magchoices[sel],Atms,AtCods,atMxyz,ifMag=ifMag,ifDelete=True)
    25622589            try:
    25632590                opt = dlg.ShowModal()
     
    25882615        G2frame.GPXtree.SetItemPyData(sub,newPhase)
    25892616        newPhase['Drawing'] = []
    2590         G2cnstG.TransConstraints(G2frame,data,newPhase,magchoice['Trans'],vvec,atCodes)     #data is old phase
    2591         G2frame.newGPXfile = phaseName+'.gpx'
    2592         UCdata[5] = []      #clear away other mag choices from chem phase in new project
    2593         G2frame.GPXtree.SetItemPyData(UnitCellsId,UCdata)
    2594         G2frame.OnFileSaveas(event)
     2617        if ifMag:
     2618            G2cnstG.TransConstraints(G2frame,data,newPhase,magchoice['Trans'],vvec,atCodes)     #data is old phase
     2619            G2frame.newGPXfile = phaseName+'.gpx'
     2620            UCdata[5] = []      #clear away other mag choices from chem phase in new project
     2621            G2frame.GPXtree.SetItemPyData(UnitCellsId,UCdata)
     2622            G2frame.OnFileSaveas(event)
    25952623        G2frame.GPXtree.SelectItem(sub)
    25962624       
Note: See TracChangeset for help on using the changeset viewer.