Changeset 5352


Ignore:
Timestamp:
Oct 20, 2022 9:56:41 PM (5 months ago)
Author:
toby
Message:

add ability to merge chem and magnetic phases in a quick CIF

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIctrlGUI.py

    r5341 r5352  
    60236023    return BlockSelector(ChoiceList,ParentFrame,title,
    60246024        size,header)
     6025
     6026def XformMatrix(panel,Trans,Uvec,Vvec,OnLeave=None,OnLeaveArgs={}):
     6027    '''Display a transformation matrix and two vectors'''
     6028    Trmat = wx.FlexGridSizer(4,6,0,0)
     6029    Trmat.Add((10,0),0)
     6030    Trmat.Add(wx.StaticText(panel,label='      M'),wx.ALIGN_CENTER)
     6031    Trmat.Add((10,0),0)
     6032    Trmat.Add((10,0),0)
     6033    Trmat.Add(wx.StaticText(panel,label='      U'),wx.ALIGN_CENTER)
     6034    Trmat.Add(wx.StaticText(panel,label='      V'),wx.ALIGN_CENTER)
     6035       
     6036    for iy,line in enumerate(Trans):
     6037        for ix,val in enumerate(line):
     6038            item = ValidatedTxtCtrl(panel,Trans[iy],ix,nDig=(10,3),size=(65,25),
     6039                                    OnLeave=OnLeave,OnLeaveArgs=OnLeaveArgs)
     6040            Trmat.Add(item)
     6041        Trmat.Add((25,0),0)
     6042        vec = ValidatedTxtCtrl(panel,Uvec,iy,nDig=(10,3),size=(65,25),
     6043                                    OnLeave=OnLeave,OnLeaveArgs=OnLeaveArgs)
     6044        Trmat.Add(vec)
     6045        vec = ValidatedTxtCtrl(panel,Vvec,iy,nDig=(10,3),size=(65,25),
     6046                                    OnLeave=OnLeave,OnLeaveArgs=OnLeaveArgs)
     6047        Trmat.Add(vec)
     6048    return Trmat
     6049
     6050def showUniqueCell(frame,cellSizer,row,cell,SGData=None,
     6051                       editAllowed=False,OnCellChange=None):
     6052    '''function to put cell values into a GridBagSizer.
     6053    First column (#0) is reserved for labels etc.
     6054    if editAllowed is True, values are placed in a wx.TextCtrl and if needed
     6055    two rows are used in the table.
     6056    '''
     6057    cellGUIlist = [
     6058        [['m3','m3m'],[" Unit cell: a = "],["{:.5f}"],[0]],
     6059        [['3R','3mR'],[" a = ",u" \u03B1 = "],["{:.5f}","{:.3f}"],[0,3]],
     6060        [['3','3m1','31m','6/m','6/mmm','4/m','4/mmm'],[" a = "," c = "],
     6061             ["{:.5f}","{:.5f}"],[0,2]],
     6062        [['mmm'],[" a = "," b = "," c = "],["{:.5f}","{:.5f}","{:.5f}"],
     6063            [0,1,2]],
     6064        [['2/m'+'a'],[" a = "," b = "," c = ",u" \u03B1 = "],
     6065            ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[0,1,2,3]],
     6066        [['2/m'+'b'],[" a = "," b = "," c = ",u" \u03B2 = "],
     6067            ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[0,1,2,4]],
     6068        [['2/m'+'c'],[" a = "," b = "," c = ",u" \u03B3 = "],
     6069            ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[0,1,2,5]],
     6070        [['-1'],[" a = "," b = "," c = ",u" \u03B1 = ",u" \u03B2 = ",u" \u03B3 = "],
     6071             ["{:.5f}","{:.5f}","{:.5f}","{:.3f}","{:.3f}","{:.3f}"],[0,1,2,3,4,5]]
     6072        ]
     6073    VERY_LIGHT_GREY = wx.Colour(235,235,235)
     6074    cellList = []
     6075    if SGData is None:
     6076        laue = '-1'
     6077    else:
     6078        laue = SGData['SGLaue']
     6079        if laue == '2/m': laue += SGData['SGUniq']
     6080    for cellGUI in cellGUIlist:
     6081        if laue in cellGUI[0]:
     6082            useGUI = cellGUI
     6083            break
     6084    for txt,fmt,indx in zip(*useGUI[1:]):
     6085        col = 1+2*indx
     6086        cellrow = row
     6087        if editAllowed and indx > 2:
     6088            cellrow = row + 1
     6089            col = 1+2*(indx-3)
     6090        cellSizer.Add(wx.StaticText(frame,label=txt),(cellrow,col))
     6091        if editAllowed:
     6092            Fmt = (10,5)
     6093            if '.3' in fmt: Fmt = (10,3)
     6094            cellVal = ValidatedTxtCtrl(frame,cell,indx,
     6095                    xmin=0.1,xmax=500.,nDig=Fmt,OnLeave=OnCellChange)
     6096            cellSizer.Add(cellVal,(cellrow,col+1))
     6097            cellList.append(cellVal.GetId())
     6098        else:
     6099            cellSizer.Add(wx.StaticText(frame,label=fmt.format(cell[indx])),(cellrow,col+1))
     6100    #volume
     6101    volCol = 13
     6102    if editAllowed:
     6103        volCol = 8
     6104    cellSizer.Add(wx.StaticText(frame,label=' Vol = '),(row,volCol))
     6105    if editAllowed:
     6106        volVal = wx.TextCtrl(frame,value=('{:.2f}'.format(cell[6])),style=wx.TE_READONLY)
     6107        volVal.SetBackgroundColour(VERY_LIGHT_GREY)
     6108        cellSizer.Add(volVal,(row,volCol+1))
     6109    else:
     6110        cellSizer.Add(wx.StaticText(frame,label='{:.2f}'.format(cell[6])),(row,volCol+1))
     6111    return cellrow,cellList
     6112
    60256113
    60266114################################################################################
  • trunk/GSASIIphsGUI.py

    r5343 r5352  
    487487        commonSizer.Add(common,0,WACV)
    488488        transSizer.Add(commonSizer)
    489         Trmat = wx.FlexGridSizer(4,6,0,0)
    490         Trmat.Add((10,0),0)
    491         Trmat.Add(wx.StaticText(self.panel,label='      M'),wx.ALIGN_CENTER)
    492         Trmat.Add((10,0),0)
    493         Trmat.Add((10,0),0)
    494         Trmat.Add(wx.StaticText(self.panel,label='      U'),wx.ALIGN_CENTER)
    495         Trmat.Add(wx.StaticText(self.panel,label='      V'),wx.ALIGN_CENTER)
    496        
    497         for iy,line in enumerate(self.Trans):
    498             for ix,val in enumerate(line):
    499                 item = G2G.ValidatedTxtCtrl(self.panel,self.Trans[iy],ix,nDig=(10,3),size=(65,25))
    500                 Trmat.Add(item)
    501             Trmat.Add((25,0),0)
    502             vec = G2G.ValidatedTxtCtrl(self.panel,self.Uvec,iy,nDig=(10,3),size=(65,25))
    503             Trmat.Add(vec)
    504             vec = G2G.ValidatedTxtCtrl(self.panel,self.Vvec,iy,nDig=(10,3),size=(65,25))
    505             Trmat.Add(vec)
    506         transSizer.Add(Trmat)
     489        transSizer.Add(G2G.XformMatrix(self.panel,self.Trans,self.Uvec,self.Vvec))
    507490        MatSizer.Add((10,0),0)
    508491        MatSizer.Add(transSizer)
     
    30443027       
    30453028    def OnUseBilbao(event):
     3029        '''Select and apply a transformation matrix from the Bilbao web site
     3030        to create a new phase
     3031        '''
    30463032        PatternName = data['magPhases']
    30473033        PatternId = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,PatternName)
     
    30963082            SGData = generalData['SGData']
    30973083            vvec = np.array([0.,0.,0.])
     3084            newPhase['MagXform'] = (magchoice['Trans'],magchoice['Uvec'],vvec)
    30983085            newPhase,atCodes = G2lat.TransformPhase(data,newPhase,magchoice['Trans'],magchoice['Uvec'],vvec,ifMag)
    30993086            Atoms = newPhase['Atoms']
  • trunk/GSASIIpy3.py

    r4534 r5352  
    1919
    2020# formatting for unique cell parameters by Laue type
    21 cellGUIlist = [[['m3','m3m'],4,[" Unit cell: a = "],["{:.5f}"],[True],[0]],
    22 [['3R','3mR'],6,[" a = ",u" \u03B1 = "],["{:.5f}","{:.3f}"],[True,True],[0,3]],
    23 [['3','3m1','31m','6/m','6/mmm','4/m','4/mmm'],6,[" a = "," c = "],["{:.5f}","{:.5f}"],[True,True],[0,2]],
    24 [['mmm'],8,[" a = "," b = "," c = "],["{:.5f}","{:.5f}","{:.5f}"],
    25     [True,True,True],[0,1,2]],
    26 [['2/m'+'a'],10,[" a = "," b = "," c = ",u" \u03B1 = "],
    27     ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[True,True,True,True,],[0,1,2,3]],
    28 [['2/m'+'b'],10,[" a = "," b = "," c = ",u" \u03B2 = "],
    29     ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[True,True,True,True,],[0,1,2,4]],
    30 [['2/m'+'c'],10,[" a = "," b = "," c = ",u" \u03B3 = "],
    31     ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[True,True,True,True,],[0,1,2,5]],
    32 [['-1'],7,[" a = "," b = "," c = ",u" \u03B1 = ",u" \u03B2 = ",u" \u03B3 = "],
    33     ["{:.5f}","{:.5f}","{:.5f}","{:.3f}","{:.3f}","{:.3f}"],
    34     [True,True,True,False,True,True,True],[0,1,2,3,4,5]]]
     21cellGUIlist = [
     22    [['m3','m3m'],4,[" Unit cell: a = "],["{:.5f}"],[True],[0]],
     23    [['3R','3mR'],6,[" a = ",u" \u03B1 = "],["{:.5f}","{:.3f}"],[True,True],[0,3]],
     24    [['3','3m1','31m','6/m','6/mmm','4/m','4/mmm'],6,[" a = "," c = "],["{:.5f}","{:.5f}"],[True,True],[0,2]],
     25    [['mmm'],8,[" a = "," b = "," c = "],["{:.5f}","{:.5f}","{:.5f}"],
     26        [True,True,True],[0,1,2]],
     27    [['2/m'+'a'],10,[" a = "," b = "," c = ",u" \u03B1 = "],
     28        ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[True,True,True,True,],[0,1,2,3]],
     29    [['2/m'+'b'],10,[" a = "," b = "," c = ",u" \u03B2 = "],
     30        ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[True,True,True,True,],[0,1,2,4]],
     31    [['2/m'+'c'],10,[" a = "," b = "," c = ",u" \u03B3 = "],
     32        ["{:.5f}","{:.5f}","{:.5f}","{:.3f}"],[True,True,True,True,],[0,1,2,5]],
     33    [['-1'],7,[" a = "," b = "," c = ",u" \u03B1 = ",u" \u03B2 = ",u" \u03B3 = "],
     34         ["{:.5f}","{:.5f}","{:.5f}","{:.3f}","{:.3f}","{:.3f}"],
     35         [True,True,True,True,True,True],[0,1,2,3,4,5]]
     36    ]
    3537
    3638def FormulaEval(string):
  • trunk/exports/G2export_CIF.py

    r5232 r5352  
    3232import copy
    3333import re
     34interactive = False
    3435try:
    3536    import wx
    3637    import wx.lib.scrolledpanel as wxscroll
    3738    import wx.lib.resizewidget as rw
     39    interactive = True
    3840except ImportError:
    3941    # Avoid wx dependency for CLI
     
    5961import GSASIIstrMain as G2stMn
    6062import GSASIIstrIO as G2stIO       
    61 import GSASIImapvars as G2mv
     63#import GSASIImapvars as G2mv
    6264import GSASIIElem as G2el
    6365import GSASIIpy3 as G2py3
     
    32203222            WriteCIFitem(self.fp, '\n# STRUCTURE FACTOR TABLE')
    32213223            # compute maximum intensity reflection
    3222             Imax = 0
     3224            #Imax = 0
    32233225            phaselist = []
    32243226            for phasenam in histblk['Reflection Lists']:
    3225                 try:
    3226                     scale = self.Phases[phasenam]['Histograms'][histlbl]['Scale'][0]
    3227                 except KeyError: # reflection table from removed phase?
    3228                     continue
     3227                #try:
     3228                #    scale = self.Phases[phasenam]['Histograms'][histlbl]['Scale'][0]
     3229                #except KeyError: # reflection table from removed phase?
     3230                #    continue
    32293231                phaselist.append(phasenam)
    3230                 refList = np.asarray(histblk['Reflection Lists'][phasenam]['RefList'])
    3231                 I100 = scale*refList.T[8]*refList.T[11]
     3232                #refList = np.asarray(histblk['Reflection Lists'][phasenam]['RefList'])
     3233                #I100 = scale*refList.T[8]*refList.T[11]
    32323234                #Icorr = np.array([refl[13] for refl in histblk['Reflection Lists'][phasenam]])[0]
    32333235                #FO2 = np.array([refl[8] for refl in histblk['Reflection Lists'][phasenam]])
     
    32613263            dmin = None
    32623264            for phasenam in phaselist:
    3263                 scale = self.Phases[phasenam]['Histograms'][histlbl]['Scale'][0]
     3265                #scale = self.Phases[phasenam]['Histograms'][histlbl]['Scale'][0]
    32643266                phaseid = self.Phases[phasenam]['pId']
    32653267                refcount += len(histblk['Reflection Lists'][phasenam]['RefList'])
    3266                 refList = np.asarray(histblk['Reflection Lists'][phasenam]['RefList'])
    3267                 I100 = scale*refList.T[8]*refList.T[11]
     3268                #refList = np.asarray(histblk['Reflection Lists'][phasenam]['RefList'])
     3269                #I100 = scale*refList.T[8]*refList.T[11]
    32683270                for j,ref in enumerate(histblk['Reflection Lists'][phasenam]['RefList']):
    32693271                    if DEBUG:
     
    45774579        self.author = ''
    45784580
     4581    def mergeMag(self,G2frame,ChemPhase,MagPhase):
     4582        if not interactive: return   # if wx is not loaded then merge is not an option
     4583        dlg = wx.MessageDialog(self.G2frame,'Do you want to merge chemical and magentic phases?',
     4584            'Confirm phase merge',wx.YES|wx.NO)
     4585        try:
     4586            dlg.CenterOnParent()
     4587            result = dlg.ShowModal()
     4588        finally:
     4589            dlg.Destroy()
     4590        if result != wx.ID_YES: return
     4591        dlg = wx.Dialog(G2frame,wx.ID_ANY,'Merge criteria',
     4592            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER)
     4593        dlg.CenterOnParent()
     4594        import imp
     4595        imp.reload(G2G)
     4596        def onChange(*args,**kwargs):
     4597            #wx.CallAfter(showMergeMag)
     4598            wx.CallLater(100,showMergeMag)
     4599        def showMergeMag():
     4600            if dlg.GetSizer():
     4601                mainSizer = dlg.GetSizer()
     4602                mainSizer.Clear(True)
     4603            else:
     4604                mainSizer = wx.BoxSizer(wx.VERTICAL)
     4605                dlg.SetSizer(mainSizer)
     4606            mainSizer.Add(wx.StaticText(dlg,label=' Define transformation'),
     4607                              0,wx.ALIGN_CENTER)
     4608            mainSizer.Add(G2G.XformMatrix(dlg,Trans,Uvec,Vvec,OnLeave=onChange))
     4609            newCell = G2lat.TransformCell(self.Phases[ChemPhase]['General']['Cell'][1:7],Trans)
     4610            cellSizer = wx.GridBagSizer()
     4611            G2G.showUniqueCell(dlg,cellSizer,0,
     4612                                   self.Phases[ChemPhase]['General']['Cell'][1:],
     4613                                   self.Phases[ChemPhase]['General']['SGData'])
     4614            cellSizer.Add(wx.StaticText(dlg,label=' Chem cell '),(0,0))
     4615            G2G.showUniqueCell(dlg,cellSizer,1,
     4616                                   self.Phases[MagPhase]['General']['Cell'][1:],
     4617                                   self.Phases[MagPhase]['General']['SGData'])
     4618            cellSizer.Add(wx.StaticText(dlg,label=' Mag cell '),(1,0))
     4619            G2G.showUniqueCell(dlg,cellSizer,2,newCell)
     4620            cellSizer.Add(wx.StaticText(dlg,label=' Xform cell '),(2,0))
     4621            mainSizer.Add(cellSizer)
     4622            cellsSame = True
     4623            diff = 0.01
     4624            for i in range(6):
     4625                if i == 3: diff = 0.1
     4626                if abs(self.Phases[MagPhase]['General']['Cell'][i+1]-newCell[i]) > diff:
     4627                    cellsSame = False
     4628                    break
     4629                   
     4630            if cellsSame:
     4631                tmpPhase['Atoms'] = copy.deepcopy(self.Phases[ChemPhase]['Atoms'])
     4632                _,atCodes = G2lat.TransformPhase(self.Phases[ChemPhase],
     4633                                                        tmpPhase,Trans,Uvec,Vvec,False) # xforms atoms not cell
     4634                mainSizer.Add((0,15))
     4635                atomSizer = wx.BoxSizer(wx.HORIZONTAL)
     4636
     4637                atomSubSizer = wx.BoxSizer(wx.VERTICAL)
     4638                atomSubSizer.Add(wx.StaticText(dlg,label='Magnetic phase contents'))
     4639                G2G.HorizontalLine(atomSubSizer,dlg)
     4640                atompnl = wxscroll.ScrolledPanel(dlg,size=(250,250))
     4641                atomBox = wx.FlexGridSizer(0, 4, 2, 2)  # rows, cols, vgap, hgap
     4642                for atom in self.Phases[MagPhase]['Atoms']:
     4643                    atomBox.Add(wx.StaticText(atompnl,label=atom[ctM-1]))
     4644                    for x in atom[cxM:cxM+3]:
     4645                        atomBox.Add(wx.StaticText(atompnl,label='{:.3f}'.format(x)))
     4646                atompnl.SetSizer(atomBox)
     4647                atompnl.SetAutoLayout(1)
     4648                atompnl.SetupScrolling()
     4649                atompnl.Layout()
     4650                atomSubSizer.Add(atompnl)
     4651                atomSizer.Add(atomSubSizer)
     4652               
     4653                cellsSame = False  # at least one atom must match
     4654                atomSubSizer = wx.BoxSizer(wx.VERTICAL)
     4655                atomSubSizer.Add(wx.StaticText(dlg,label='Chemical phase transformed'))
     4656                G2G.HorizontalLine(atomSubSizer,dlg)
     4657                atompnl = wxscroll.ScrolledPanel(dlg,size=(310,250))
     4658                atomBox = wx.FlexGridSizer(0, 5, 2, 2)  # rows, cols, vgap, hgap
     4659                for atom in tmpPhase['Atoms']:
     4660                    atomBox.Add(wx.StaticText(atompnl,label=atom[ctT-1]))
     4661                    for x in atom[cxT:cxT+3]:
     4662                        atomBox.Add(wx.StaticText(atompnl,label='{:.3f}'.format(x)))
     4663                    match = False
     4664                    for Matom in self.Phases[MagPhase]['Atoms']:
     4665                        if atom[ctT] == Matom[ctM]:
     4666                            for i in range(3):
     4667                                if abs(atom[cxT+i]-Matom[cxM+i]) > 0.005:
     4668                                    break
     4669                            else:
     4670                                cellsSame = True
     4671                                match = Matom[ctM-1]
     4672                                break
     4673                    if match:
     4674                        atomBox.Add(wx.StaticText(atompnl,label='  matches '+match))
     4675                    else:
     4676                        atomBox.Add((-1,-1))
     4677                atompnl.SetSizer(atomBox)
     4678                atompnl.SetAutoLayout(1)
     4679                atompnl.SetupScrolling()
     4680                atompnl.Layout()
     4681                atomSubSizer.Add(atompnl)
     4682                atomSizer.Add(atomSubSizer)               
     4683                mainSizer.Add(atomSizer)
     4684            mainSizer.Add((0,15))
     4685            OkBtn = wx.Button(dlg,wx.ID_ANY,"Merge phases")
     4686            OkBtn.Bind(wx.EVT_BUTTON, lambda x: dlg.EndModal(wx.ID_OK))
     4687            OkBtn.Enable(cellsSame)
     4688            cancelBtn = wx.Button(dlg,wx.ID_ANY,"Cancel")
     4689            cancelBtn.Bind(wx.EVT_BUTTON, lambda x: dlg.EndModal(wx.ID_CANCEL))
     4690            btnSizer = wx.BoxSizer(wx.HORIZONTAL)
     4691            btnSizer.Add((20,20),1)
     4692            btnSizer.Add(OkBtn)
     4693            btnSizer.Add((20,20),1)
     4694            btnSizer.Add(cancelBtn)
     4695            btnSizer.Add((20,20),1)
     4696       
     4697            mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
     4698            dlg.Fit()
     4699            wx.CallAfter(dlg.SendSizeEvent)
     4700
     4701        Trans = np.eye(3)
     4702        Uvec = np.zeros(3)
     4703        Vvec = np.zeros(3)
     4704        if 'MagXform' in self.Phases[MagPhase]:
     4705           Trans,Uvec,Vvec = self.Phases[MagPhase]['MagXform']
     4706        tmpPhase = copy.deepcopy(self.Phases[MagPhase])
     4707        cxM,ctM,csM,ciaM = self.Phases[MagPhase]['General']['AtomPtrs']
     4708        cxT,ctT,csT,ciaT = self.Phases[ChemPhase]['General']['AtomPtrs']
     4709       
     4710        showMergeMag()
     4711       
     4712        if dlg.ShowModal() != wx.ID_OK:
     4713            dlg.Destroy()
     4714            return None
     4715        dlg.Destroy()
     4716        # restore atom type info from chemical phase but keep the mag cell & sym, etc.
     4717        combinedPhase = copy.deepcopy(self.Phases[MagPhase])
     4718        combinedPhase['General'] = copy.deepcopy(self.Phases[ChemPhase]['General'])
     4719        combinedPhase['General']['Name'] += ' - merged'
     4720        for k in 'SGData','Cell','AtomPtrs','Lande g','MagDmin','Type':
     4721            if k not in self.Phases[MagPhase]['General']: continue
     4722            combinedPhase['General'][k] = copy.deepcopy(self.Phases[MagPhase]['General'][k])
     4723
     4724        for atom in tmpPhase['Atoms']:
     4725            for x in atom[cxT:cxT+3]:
     4726                match = False
     4727                for Matom in self.Phases[MagPhase]['Atoms']:
     4728                    if atom[ctT] == Matom[ctM]:
     4729                        for i in range(3):
     4730                            if abs(atom[cxT+i]-Matom[cxM+i]) > 0.005:
     4731                                break
     4732                        else:
     4733                            match = True
     4734                            break
     4735            if not match:  # add atom to merged phase
     4736                combinedPhase['Atoms'].append(atom[:cxT+4]+[0.,0.,0.]+atom[cxT+4:])               
     4737        return combinedPhase
     4738   
    45794739    def Exporter(self,event=None):
    45804740        # get a phase and file name
     
    45884748        self.currentExportType = 'phase'
    45894749        if self.ExportSelect('ask'): return
    4590         self.OpenFile()
     4750        self.OpenFile(delayOpen=True)
     4751        MagPhase = None
     4752        ChemPhase = None
     4753           
     4754        if len(self.phasenam) == 2:
     4755            for name in self.phasenam:
     4756                if self.Phases[name]['General']['Type'] == 'nuclear':
     4757                    ChemPhase = name
     4758                if self.Phases[name]['General']['Type'] == 'magnetic':
     4759                    MagPhase = name
     4760            if MagPhase and ChemPhase:
     4761                newPhase = self.mergeMag(self.G2frame,ChemPhase,MagPhase)
     4762                if newPhase is not None:
     4763                    self.openDelayed()
     4764                    newName = ChemPhase + '_merged'
     4765                    self.Phases = {newName:newPhase}
     4766                    self._Exporter(event=event,phaseOnly=newName)
     4767                    self.CloseFile()
     4768                    return
    45914769        for name in self.phasenam:
    4592             self._Exporter(event=event,phaseOnly=name)  #TODO: repeat for magnetic phase
     4770            self.openDelayed()
     4771            self._Exporter(event=event,phaseOnly=name)
    45934772        self.CloseFile()
    45944773
Note: See TracChangeset for help on using the changeset viewer.