Changeset 1578 for trunk/GSASIIpwdGUI.py


Ignore:
Timestamp:
Nov 21, 2014 3:25:30 PM (8 years ago)
Author:
vondreele
Message:

add wx.Yield in RefineBox?
refactor indexing for normal & superlattice PeaksPrint?
remove splitter window in Unit Cells Data display - didn't work in newer wxPythons

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwdGUI.py

    r1572 r1578  
    932932               
    933933    if G2frame.dataDisplay:
    934 #        G2frame.dataFrame.Clear()
    935934        G2frame.dataFrame.DestroyChildren()
    936935    G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)
     
    20332032    tree item.
    20342033    '''
     2034    bravaisSymb = ['Fm3m','Im3m','Pm3m','R3-H','P6/mmm','I4/mmm',
     2035        'P4/mmm','Fmmm','Immm','Cmmm','Pmmm','C2/m','P2/m','P1']
    20352036    IndexId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Index Peak List')
    20362037    Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))[0]
     
    20942095    if len(data[0]):
    20952096        G2frame.dataFrame.IndexPeaks.Enable(True)
    2096         cells = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Unit Cells List'))
    2097         if cells:   #what if SS?
    2098             cellist = cells[2]
    2099             dmin = cells[3]
     2097        Unit = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Unit Cells List'))
     2098        if Unit:
     2099            if len(Unit) == 4:  #patch
     2100                Unit.append({})
     2101            controls,bravais,cellist,dmin,ssopt = Unit
    21002102            G2frame.HKL = []
    2101 #        if ssopt.get('Use',False):
    2102 #            SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb'])
    2103 #            Vec = ssopt['ModVec']
    2104 #            maxH = ssopt['maxH']
    2105 #            G2frame.HKL = G2pwd.getHKLMpeak(dmin,SGData,SSGData,Vec,maxH,A)
    2106             for i,cell in enumerate(cellist):
    2107                 if cell[-1]:        #selected cell from table - no SS
    2108                     ibrav = cell[2]
    2109                     A = G2lat.cell2A(cell[3:9])
    2110                     G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A)
    2111                     peaks = G2indx.IndexPeaks(data[0],G2frame.HKL)[1]
    2112                     for hkl in G2frame.HKL:
    2113                         hkl.append(G2lat.Dsp2pos(Inst,hkl[3]))
     2103            if ssopt.get('Use',False):
     2104                cell = controls[6:12]
     2105                A = G2lat.cell2A(cell)
     2106                ibrav = bravaisSymb.index(controls[5])
     2107                spc = controls[13]
     2108                SGData = G2spc.SpcGroup(spc)[1]
     2109                SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb'])
     2110                Vec = ssopt['ModVec']
     2111                maxH = ssopt['maxH']
     2112                G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,Vec,maxH,A)
     2113                data[0] = G2indx.IndexSSPeaks(data[0],G2frame.HKL)[1]
     2114            else:        #select cell from table - no SS
     2115                for i,cell in enumerate(cellist):
     2116                    if cell[-2]:
     2117                        ibrav = cell[2]
     2118                        A = G2lat.cell2A(cell[3:9])
     2119                        G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A)
     2120                        for hkl in G2frame.HKL:
     2121                            hkl.insert(4,G2lat.Dsp2pos(Inst,hkl[3]))
     2122                        data[0] = G2indx.IndexPeaks(data[0],G2frame.HKL)[1]
     2123                        break
    21142124    rowLabels = []
    21152125    for i in range(len(data[0])): rowLabels.append(str(i+1))
     
    23492359            Vec = ssopt['ModVec']
    23502360            maxH = ssopt['maxH']
    2351             G2frame.HKL = G2pwd.getHKLMpeak(dmin,SGData,SSGData,Vec,maxH,A)
     2361            G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,Vec,maxH,A)
     2362            peaks = [G2indx.IndexSSPeaks(peaks[0],G2frame.HKL)[1],peaks[1]]   #keep esds from peak fit
    23522363        else:
    2353             G2frame.HKL = G2pwd.getHKLpeak(dmin,SGData,A)
    2354         peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]]   #keep esds from peak fit
     2364            G2frame.HKL = G2pwd.getHKLpeak(dmin,Inst,SGData,A)
     2365            peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]]   #keep esds from peak fit
    23552366        G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Index Peak List'),peaks)
    2356         for hkl in G2frame.HKL:
    2357             hkl.append(G2lat.Dsp2pos(Inst,hkl[-2])+controls[1])
    23582367        if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId):
    23592368            G2plt.PlotPowderLines(G2frame)
     
    23942403            Vol = G2lat.calc_V(A)
    23952404            if ibrav in [0,1,2]:
    2396                 print "%s%10.6f" % ('a =',cell[0])
     2405                print " %s%10.6f" % ('a =',cell[0])
    23972406            elif ibrav in [3,4,5,6]:
    2398                 print "%s%10.6f %s%10.6f %s%12.3f" % ('a =',cell[0],' c =',cell[2],' volume =',Vol)
     2407                print " %s%10.6f %s%10.6f %s%12.3f" % ('a =',cell[0],' c =',cell[2],' volume =',Vol)
    23992408            elif ibrav in [7,8,9,10]:
    2400                 print "%s%10.6f %s%10.6f %s%10.6f %s%12.3f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2],' volume =',Vol)
     2409                print " %s%10.6f %s%10.6f %s%10.6f %s%12.3f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2],' volume =',Vol)
    24012410            elif ibrav in [11,12]:
    2402                 print "%s%10.6f %s%10.6f %s%10.6f %s%8.3f %s%12.3f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2],'beta =',cell[4],' volume =',Vol)
     2411                print " %s%10.6f %s%10.6f %s%10.6f %s%8.3f %s%12.3f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2],'beta =',cell[4],' volume =',Vol)
    24032412            else:
    2404                 print "%s%10.6f %s%10.6f %s%10.6f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2])
    2405                 print "%s%8.3f %s%8.3f %s%8.3f %s%12.3f" % ('alpha =',cell[3],'beta =',cell[4],'gamma =',cell[5],' volume =',Vol)
     2413                print " %s%10.6f %s%10.6f %s%10.6f" % ('a =',cell[0],'b =',cell[1],'c =',cell[2])
     2414                print " %s%8.3f %s%8.3f %s%8.3f %s%12.3f" % ('alpha =',cell[3],'beta =',cell[4],'gamma =',cell[5],' volume =',Vol)
     2415               
     2416        def vecPrint(Vec):
     2417            print ' %s %10.5f %10.5f %10.5f'%('Modulation vector:',Vec[0],Vec[1],Vec[2])
    24062418             
    24072419        PatternId = G2frame.PatternId
     
    24112423            G2frame.ErrorDialog('No peaks!', 'Nothing to refine!')
    24122424            return       
    2413         print 'Refine cell'
     2425        print ' Refine cell'
    24142426        controls,bravais,cells,dmin,ssopt = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'))
    24152427        cell = controls[6:12]
     
    24182430        SGData = G2spc.SpcGroup(controls[13])[1]
    24192431        dmin = G2indx.getDmin(peaks[0])-0.005
    2420         G2frame.HKL = G2pwd.getHKLpeak(dmin,SGData,A)
    2421         peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]]   #put peak fit esds back in peaks
    24222432        if 'C' in Inst['Type'][0]:
    2423             Lhkl,M20,X20,Aref,Zero = G2indx.refinePeaksZ(peaks[0],wave,ibrav,A,controls[1],controls[0])
     2433            if ssopt.get('Use',False):
     2434                vecFlags = [True if x in ssopt['ssSymb'] else False for x in ['a','b','g']]
     2435                SSGData = G2spc.SSpcGroup(SGData,ssopt['ssSymb'])
     2436                G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,ssopt['ModVec'],ssopt['maxH'],A)
     2437                peaks = [G2indx.IndexSSPeaks(peaks[0],G2frame.HKL)[1],peaks[1]]   #put peak fit esds back in peaks
     2438                Lhkl,M20,X20,Aref,Vec,Zero = \
     2439                    G2indx.refinePeaksZSS(peaks[0],wave,Inst,SGData,SSGData,ssopt['maxH'],ibrav,A,ssopt['ModVec'],vecFlags,controls[1],controls[0])
     2440            else:
     2441                G2frame.HKL = G2pwd.getHKLpeak(dmin,Inst,SGData,A)
     2442                peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]]   #put peak fit esds back in peaks
     2443                Lhkl,M20,X20,Aref,Zero = G2indx.refinePeaksZ(peaks[0],wave,ibrav,A,controls[1],controls[0])
    24242444        else:   #'T'OF - doesn't seem to work
     2445            G2frame.HKL = G2pwd.getHKLpeak(dmin,Inst,SGData,A)
     2446            peaks = [G2indx.IndexPeaks(peaks[0],G2frame.HKL)[1],peaks[1]]   #put peak fit esds back in peaks
    24252447            Lhkl,M20,X20,Aref,Zero = G2indx.refinePeaksT(peaks[0],difC,ibrav,A,controls[1],controls[0])           
    24262448        controls[1] = Zero
    24272449        controls[6:12] = G2lat.A2cell(Aref)
    24282450        controls[12] = G2lat.calc_V(Aref)
    2429         data = [controls,bravais,cells,dmin,ssopt]
    24302451        cells = G2frame.PatternTree.GetItemPyData(UnitCellsId)[2]
    24312452        for cell in cells:
    24322453            cell[-2] = False
    24332454        cells.insert(0,[M20,X20,ibrav]+controls[6:13]+[True,False])
    2434         data[2] = cells
     2455        if ssopt.get('Use',False):
     2456            ssopt['ModVec'] = Vec
     2457            G2frame.HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,ssopt['ModVec'],ssopt['maxH'],A)
     2458        else:
     2459            G2frame.HKL = G2pwd.getHKLpeak(dmin,Inst,SGData,A)
     2460        data = [controls,bravais,cells,dmin,ssopt]
    24352461        G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'),data)
    2436         G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,Aref)
    2437         print "%s%10.3f" % ('refinement M20 = ',M20)
    2438         print 'unindexed lines = ',X20
     2462        print " %s%10.3f" % ('refinement M20 = ',M20)
     2463        print ' unindexed lines = ',X20
    24392464        cellPrint(ibrav,Aref)
     2465        ip = 4
     2466        if ssopt.get('Use',False):
     2467            vecPrint(Vec)
     2468            ip = 5
    24402469        for hkl in G2frame.HKL:
    2441             hkl.append(G2lat.Dsp2pos(Inst,hkl[3])+controls[1])
     2470            hkl[ip] = G2lat.Dsp2pos(Inst,hkl[ip-1])+controls[1]
    24422471        if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId):
    24432472            G2plt.PlotPowderLines(G2frame)
     
    24762505                G2frame.HKL = G2lat.GenHBravais(dmin,bestCell[2],G2lat.cell2A(bestCell[3:9]))
    24772506                for hkl in G2frame.HKL:
    2478                     hkl.append(G2lat.Dsp2pos(Inst,hkl[3])+controls[1])
     2507                    hkl.insert(4,G2lat.Dsp2pos(Inst,hkl[3])+controls[1])
    24792508                if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId):
    24802509                    G2plt.PlotPowderLines(G2frame)
     
    25022531                G2frame.HKL = G2lat.GenHBravais(dmin,ibrav,A)
    25032532                for hkl in G2frame.HKL:
    2504                     hkl.append(G2lat.Dsp2pos(Inst,hkl[3])+controls[1])
     2533                    hkl.insert(4,G2lat.Dsp2pos(Inst,hkl[3])+controls[1])
    25052534                if 'PKS' in G2frame.PatternTree.GetItemText(G2frame.PatternId):
    25062535                    G2plt.PlotPowderLines(G2frame)
     
    25422571           
    25432572    if G2frame.dataDisplay:
    2544         G2frame.dataFrame.Clear()
     2573        G2frame.dataFrame.DestroyChildren()
     2574#    G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)
     2575    G2frame.dataDisplay = wxscroll.ScrolledPanel(G2frame.dataFrame)
    25452576    G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.IndexMenu)
    25462577    if not G2frame.dataFrame.GetStatusBar():
     
    25712602   
    25722603    G2frame.dataFrame.SetLabel('Unit Cells List')
    2573     G2frame.sp = wx.SplitterWindow(G2frame.dataFrame)
    2574     G2frame.dataDisplay = wx.Panel(G2frame.sp, style=wx.SUNKEN_BORDER)
    25752604    G2frame.dataFrame.IndexPeaks.Enable(False)
    25762605    peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Index Peak List'))
     
    25832612    G2frame.dataFrame.MakeNewPhase.Enable(False)       
    25842613    if cells:
    2585         G2frame.bottom = wx.Panel(G2frame.sp, style=wx.SUNKEN_BORDER)
    2586         G2frame.sp.SplitHorizontally(G2frame.dataDisplay,G2frame.bottom,0)
    25872614        G2frame.dataFrame.CopyCell.Enable(True)
    25882615        G2frame.dataFrame.MakeNewPhase.Enable(True)       
     
    27252752        mainSizer.Add(ssSizer,0)
    27262753
    2727     mainSizer.Layout()   
    2728     G2frame.dataDisplay.SetSizer(mainSizer)
    2729     topSize = mainSizer.Fit(G2frame.dataFrame)
    2730     G2frame.dataDisplay.SetSize(topSize)
    27312754    if cells:
    2732         if ibrav == 13:
    2733             topSize[1] += 230
    2734         else:
    2735             topSize[1] += 200
    2736     G2frame.dataFrame.setSizePosLeft(topSize)   
    2737    
    2738     if cells:
    2739         bottomSize = topSize        #screwy but bottom doesn't have a size in linux!
    2740         bottomSize[0] -= 20         #to reveal slider
    2741         if ibrav == 13:
    2742             bottomSize[1] -= 240
    2743         else:
    2744             bottomSize[1] -= 210
    2745         wx.StaticText(parent=G2frame.bottom,label=' Indexing Result ')
     2755        mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='\n Indexing Result:'),0,WACV)
    27462756        rowLabels = []
    27472757        colLabels = ['M20','X20','use','Bravais','a','b','c','alpha','beta','gamma','Volume','Keep']
     
    27582768                G2frame.HKL = G2lat.GenHBravais(dmin,cell[2],A)
    27592769                for hkl in G2frame.HKL:
    2760                     hkl.append(G2lat.Dsp2pos(Inst,hkl[3])+controls[1])
     2770                    hkl.insert(4,G2lat.Dsp2pos(Inst,hkl[3])+controls[1])
    27612771            table.append(row)
    27622772        UnitCellsTable = G2gd.Table(table,rowLabels=rowLabels,colLabels=colLabels,types=Types)
    2763         gridDisplay = G2gd.GSGrid(G2frame.bottom)
     2773        gridDisplay = G2gd.GSGrid(G2frame.dataDisplay)
    27642774        gridDisplay.SetPosition(wx.Point(0,20))               
    27652775        gridDisplay.SetTable(UnitCellsTable, True)
     
    27762786                else:
    27772787                    gridDisplay.SetReadOnly(r,c,isReadOnly=True)
    2778         gridDisplay.SetSize(bottomSize)
    2779 
     2788        mainSizer.Add(gridDisplay,0,WACV)
     2789    mainSizer.Layout()   
     2790    G2frame.dataDisplay.SetSizer(mainSizer)
     2791    G2frame.dataDisplay.SetAutoLayout(1)
     2792    G2frame.dataDisplay.SetupScrolling()
     2793    Size = mainSizer.Fit(G2frame.dataFrame)
     2794    Size[0] += 25
     2795    G2frame.dataDisplay.SetSize(Size)
     2796    G2frame.dataFrame.setSizePosLeft(Size)   
     2797   
    27802798################################################################################
    27812799#####  Reflection list
     
    33503368                ISample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Sample Parameters'))
    33513369                ILimits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Limits'))
    3352                 IInst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id, 'Instrument Parameters'))
    33533370                IfOK,result,varyList,sig,Rvals,covMatrix,parmDict,Msg = G2sasd.ModelFit(IProfile,IProfDict,ILimits,ISample,IModel)
    33543371                JModel = copy.deepcopy(IModel)
     
    38323849    Sample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Sample Parameters'))
    38333850    Limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Limits'))
    3834     Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
    38353851    Substances = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Substances'))
    38363852    ProfDict,Profile = G2frame.PatternTree.GetItemPyData(G2frame.PatternId)[:2]
Note: See TracChangeset for help on using the changeset viewer.