Changeset 3560


Ignore:
Timestamp:
Aug 13, 2018 1:43:10 PM (3 years ago)
Author:
vondreele
Message:

fix index problem in Unit Cells List
a bit more mag transform mods

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIdataGUI.py

    r3554 r3560  
    27052705        self.ExpandingAll = False
    27062706        self.SeqTblHideList = None
     2707        self.MagPhases = False      #will contain possible magnetic phases from Bilbao MAXMAGN
    27072708        self.lastSelectedPhaseTab = None # track the last tab pressed on a phase window
    27082709       
  • trunk/GSASIIphsGUI.py

    r3558 r3560  
    278278   
    279279    :param wx.Frame parent: reference to parent frame (or None)
    280     :param phase: phase data
     280    :param phase: parent phase data
    281281   
    282282    #NB: commonNames & commonTrans defined in GSASIIdataGUI = G2gd
    283283    '''
    284     def __init__(self,parent,phase,Trans=np.eye(3),Uvec=np.zeros(3),Vvec=np.zeros(3),ifMag=False,newSpGrp='',BNSlatt=''):
     284    def __init__(self,parent,phases,Trans=np.eye(3),Uvec=np.zeros(3),Vvec=np.zeros(3),ifMag=False,newSpGrp='',BNSlatt=''):
    285285        wx.Dialog.__init__(self,parent,wx.ID_ANY,'Setup phase transformation',
    286286            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
    287287        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
     288        self.Phases = phases
     289        phase = self.Phases['parent']
    288290        self.Phase = copy.deepcopy(phase)   #will be a new phase!
    289291#        self.Super = phase['General']['Super']
     
    405407            self.Mtrans = Obj.GetValue()
    406408           
     409        def OnNewBilbao(event):
     410            del self.oldSGdata['MAXMAGN']
     411            self.BNSlatt = ''
     412            self.Phases = self.Phases['parent']
     413            self.ifMag = False
     414            wx.CallAfter(self.Draw)
     415           
    407416        def OnBilbao(event):
    408417            import MAXMAGN
     
    422431                    self.oldSGdata['MAXMAGN'] = MAXMAGN.MAXMAGN(SGNo,self.kvec)
    423432                    wx.EndBusyCursor()
     433                    for result in self.oldSGdata['MAXMAGN']:
     434                        phase = {}
     435                        numbs = [eval(item+'.') for item in result[2].split()]
     436                        phase['Name'] = self.Phases['parent']['General']['Name']+' mag: '+result[0]
     437                        phase['Uvec'] = np.array(numbs[3::4])
     438                        phase['Trans'] = np.array([numbs[:3],numbs[4:7],numbs[8:11]])
     439                        SpGp = result[0].replace("'",'')
     440                        SpGrp = G2spc.StandardizeSpcName(SpGp)
     441                        phase['newSpGrp'] = SpGrp
     442                        phase['SGData'] = G2spc.SpcGroup(SpGrp)[1]
     443                        G2spc.GetSGSpin(phase['SGData'],result[0])
     444                        phase['BNSlatt'] = phase['SGData']['SGLatt']
     445                        if result[1]:
     446                            phase['BNSlatt'] += '_'+result[1]
     447                            BNSsym = G2spc.GetGenSym(phase['SGData'])[2]
     448                            phase['SGData']['BNSlattsym'] = [phase['BNSlatt'],BNSsym[phase['BNSlatt']]]
     449                            G2spc.ApplyBNSlatt(phase['SGData'],phase['SGData']['BNSlattsym'])
     450           
     451                        phase['SGData']['GenSym'],phase['SGData']['GenFlg'],BNSsym = G2spc.GetGenSym(phase['SGData'])
     452                        phase['SGData']['MagSpGrp'] = G2spc.MagSGSym(phase['SGData'])
     453                        OprNames,phase['SGData']['SpnFlp'] = G2spc.GenMagOps(phase['SGData'])   
     454                        self.Phases[result[0]] = phase
    424455                    self.Bilbao = ''
    425456            wx.CallAfter(self.Draw)
     
    427458        def OnBilbaoSG(event):
    428459            Obj = event.GetEventObject()
    429             result = self.oldSGdata['MAXMAGN'][Obj.GetSelection()]
    430             self.Bilbao = result[0]
    431             numbs = [eval(item+'.') for item in result[2].split()]
    432             self.Uvec = np.array(numbs[3::4])
    433             self.Trans = np.array([numbs[:3],numbs[4:7],numbs[8:11]])
    434 
    435             SpGp = result[0].replace("'",'')
    436             SpGrp = G2spc.StandardizeSpcName(SpGp)
    437             self.newSpGrp = SpGrp
    438             self.SGData = G2spc.SpcGroup(SpGrp)[1]
    439             G2spc.GetSGSpin(self.SGData,result[0])
    440             self.BNSlatt = self.SGData['SGLatt']
    441             if result[1]:
    442                 self.BNSlatt += '_'+result[1]
    443                 BNSsym = G2spc.GetGenSym(self.SGData)[2]
    444                 self.SGData['BNSlattsym'] = [self.BNSlatt,BNSsym[self.BNSlatt]]
    445                 G2spc.ApplyBNSlatt(self.SGData,self.SGData['BNSlattsym'])
    446 
    447             self.SGData['GenSym'],self.SGData['GenFlg'],BNSsym = G2spc.GetGenSym(self.SGData)
    448             self.SGData['MagSpGrp'] = G2spc.MagSGSym(self.SGData)
    449             OprNames,self.SGData['SpnFlp'] = G2spc.GenMagOps(self.SGData)                   
     460            result = Obj.GetValue()
     461            self.Bilbao = result
     462            phase = self.Phases[result]
     463            self.Uvec = phase['Uvec']
     464            self.Trans = phase['Trans']
     465            self.newSpGrp = phase['newSpGrp']
     466            self.SGData = phase['SGData']
     467            self.BNSlatt = phase['BNSlatt']
     468            OprNames = G2spc.GenMagOps(self.SGData)[0]                   
    450469                   
    451470            msg = 'Space Group Information'
     
    511530        MatSizer.Add(transSizer)
    512531        mainSizer.Add(MatSizer)
    513         if self.ifMag and not self.oldSGdata.get('MAXMAGN',[]):
     532        if self.ifMag:
    514533            MagSizer = wx.BoxSizer(wx.HORIZONTAL)
    515             Mtrans = wx.CheckBox(self.panel,label=' Use matrix transform?')
    516             Mtrans.SetValue(self.Mtrans)
    517             Mtrans.Bind(wx.EVT_CHECKBOX,OnMtrans)
    518             MagSizer.Add(Mtrans,0,WACV)
    519             Bilbao = wx.Button(self.panel,label='Run Bilbao MAXMAGN')
    520             Bilbao.Bind(wx.EVT_BUTTON,OnBilbao)
    521             MagSizer.Add(Bilbao,0,WACV)
     534            if not self.oldSGdata.get('MAXMAGN',[]):
     535                Mtrans = wx.CheckBox(self.panel,label=' Use matrix transform?')
     536                Mtrans.SetValue(self.Mtrans)
     537                Mtrans.Bind(wx.EVT_CHECKBOX,OnMtrans)
     538                MagSizer.Add(Mtrans,0,WACV)
     539                Bilbao = wx.Button(self.panel,label='Run Bilbao MAXMAGN')
     540                Bilbao.Bind(wx.EVT_BUTTON,OnBilbao)
     541                MagSizer.Add(Bilbao,0,WACV)
     542            else:
     543                Bilbao = wx.Button(self.panel,label='Clear MAXMAGN')
     544                Bilbao.Bind(wx.EVT_BUTTON,OnNewBilbao)
     545                MagSizer.Add(Bilbao,0,WACV)
    522546            mainSizer.Add(MagSizer,0,WACV)
    523547        mainSizer.Add(wx.StaticText(self.panel,label=' Old lattice parameters:'),0,WACV)
     
    599623        if self.Mtrans:
    600624            self.Phase['General']['Cell'][1:] = G2lat.TransformCell(self.oldCell[:6],self.Trans.T)           
    601             return self.Phase,self.Trans.T,self.Uvec,self.Vvec,self.ifMag,self.ifConstr,self.Common
     625            return self.Phase,self.Trans.T,self.Uvec,self.Vvec,self.ifMag,self.ifConstr,self.Common,self.Phases
    602626        else:
    603627            self.Phase['General']['Cell'][1:] = G2lat.TransformCell(self.oldCell[:6],self.Trans)           
    604             return self.Phase,self.Trans,self.Uvec,self.Vvec,self.ifMag,self.ifConstr,self.Common
     628            return self.Phase,self.Trans,self.Uvec,self.Vvec,self.ifMag,self.ifConstr,self.Common,self.Phases
    605629
    606630    def OnOk(self,event):
     
    24262450        newSpGrp = ''
    24272451        BNSlatt = ''
     2452        if not G2frame.MagPhases:
     2453            G2frame.MagPhases = {'parent':data}
     2454        else:
     2455            G2frame.MagPhases['parent'] = data
    24282456        while True:
    2429             dlg = TransformDialog(G2frame,data,Trans,Uvec,Vvec,ifMag,newSpGrp,BNSlatt)
     2457            dlg = TransformDialog(G2frame,G2frame.MagPhases,Trans,Uvec,Vvec,ifMag,newSpGrp,BNSlatt)
    24302458            try:
    24312459                if dlg.ShowModal() == wx.ID_OK:
    2432                     newPhase,Trans,Uvec,Vvec,ifMag,ifConstr,Common = dlg.GetSelection()
     2460                    newPhase,Trans,Uvec,Vvec,ifMag,ifConstr,Common,MagPhases = dlg.GetSelection()
     2461                    G2frame.MagPhases = MagPhases
    24332462                    newSpGrp = newPhase['General']['SGData']['SpGrp']
    24342463                    if ifMag:
  • trunk/GSASIIpwdGUI.py

    r3558 r3560  
    30143014    def CopyUnitCell(event):
    30153015        controls,bravais,cells,dminx,ssopt = G2frame.GPXtree.GetItemPyData(UnitCellsId)
     3016        controls = controls[:5]+10*[0.,]
    30163017        for Cell in cells:
    30173018            if Cell[-2]:
     
    30213022        controls[5] = bravaisSymb[cell[0]]
    30223023        controls[6:13] = cell[1:8]
    3023         controls[12] = G2lat.calc_V(G2lat.cell2A(controls[6:12]))
     3024#        controls[12] = G2lat.calc_V(G2lat.cell2A(controls[6:12]))
    30243025        controls[13] = spaceGroups[bravaisSymb.index(controls[5])]
    30253026        G2frame.GPXtree.SetItemPyData(UnitCellsId,[controls,bravais,cells,dmin,ssopt])
     
    30293030    def LoadUnitCell(event):
    30303031        controls,bravais,cells,dminx,ssopt = G2frame.GPXtree.GetItemPyData(UnitCellsId)
     3032        controls = controls[:5]+10*[0.,]
    30313033        pId = G2gd.GetGPXtreeItemId(G2frame,G2frame.root, 'Phases')
    30323034        if not pId: return
     
    30463048        controls[6:13] = Cell[1:8]
    30473049        controls[13] = SGData['SpGrp']
    3048 #        G2frame.GPXtree.SetItemPyData(UnitCellsId,[controls,bravais,cells,dmin,ssopt])
    30493050        G2frame.dataWindow.RefineCell.Enable(True)
    30503051        OnHklShow(None)
     
    30533054    def ImportUnitCell(event):
    30543055        controls,bravais,cells,dminx,ssopt = G2frame.GPXtree.GetItemPyData(UnitCellsId)
     3056        controls = controls[:5]+10*[0.,]
    30553057        reqrdr = G2frame.dataWindow.ReImportMenuId.get(event.GetId())
    30563058        rdlist = G2frame.OnImportGeneric(reqrdr,
     
    33393341        E,SGData = G2spc.SpcGroup(controls[13])
    33403342        phase = {'General':{'Name':'','Type':Type,'Cell':['',]+controls[6:13],'SGData':SGData}}
    3341         dlg = G2phsG.TransformDialog(G2frame,phase,Trans,Uvec,Vvec,ifMag,newSpGrp,BNSlatt)
     3343        if not G2frame.MagPhases:
     3344            G2frame.MagPhases = {'parent':phase}
     3345        else:
     3346            G2frame.MagPhases['parent'] = phase         #do I want to do this or reverse??
     3347        dlg = G2phsG.TransformDialog(G2frame,G2frame.MagPhases,Trans,Uvec,Vvec,ifMag,newSpGrp,BNSlatt)
    33423348        try:
    33433349            if dlg.ShowModal() == wx.ID_OK:
    3344                 newPhase,Trans,Uvec,Vvec,ifMag,ifConstr,Common = dlg.GetSelection()
     3350                newPhase,Trans,Uvec,Vvec,ifMag,ifConstr,Common,MagPhases = dlg.GetSelection()
     3351                G2frame.MagPhases = MagPhases
    33453352                sgData = newPhase['General']['SGData']
    33463353                controls[5] = sgData['SGLatt']+sgData['SGLaue']
     
    33523359        finally:
    33533360            dlg.Destroy()
     3361        OnHklShow(None)
    33543362        wx.CallAfter(UpdateUnitCellsGrid,G2frame,data)
    33553363       
     
    33653373       
    33663374    controls,bravais,cells,dminx,ssopt = data
    3367     if len(controls) < 13:              #add cell volume & space group if missing
     3375    if len(controls) < 13:              #add cell volume if missing
    33683376        controls.append(G2lat.calc_V(G2lat.cell2A(controls[6:12])))
     3377    if len(controls) < 14:              #add space group if missing
    33693378        controls.append(spaceGroups[bravaisSymb.index(controls[5])])
    3370     controls,bravais,cells,dminx,ssopt = data
    33713379    SGData = ssopt.get('SGData',G2spc.SpcGroup(controls[13])[1])
    33723380    G2frame.GPXtree.SetItemPyData(UnitCellsId,data)            #update with volume
Note: See TracChangeset for help on using the changeset viewer.