Changeset 1578


Ignore:
Timestamp:
Nov 21, 2014 3:25:30 PM (7 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

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r1574 r1578  
    34453445        finally:
    34463446            dlg.Destroy()
     3447            wx.Yield()
    34473448        oldId =  self.PatternTree.GetSelection()        #retain current selection
    34483449        oldName = self.PatternTree.GetItemText(oldId)
  • trunk/GSASIIindex.py

    r1572 r1578  
    2828GSASIIpath.SetVersionNumber("$Revision$")
    2929import GSASIIlattice as G2lat
     30import GSASIIpwd as G2pwd
    3031import scipy.optimize as so
    3132
     
    198199    return M20,X20
    199200   
     201def calc_M20SS(peaks,HKL):
     202    'needs a doc string'
     203    diff = 0
     204    X20 = 0
     205    for Nobs20,peak in enumerate(peaks):
     206        if peak[3]:
     207            Qobs = 1.0/peak[8]**2
     208            Qcalc = 1.0/peak[9]**2
     209            diff += abs(Qobs-Qcalc)
     210        elif peak[2]:
     211            X20 += 1
     212        if Nobs20 == 19:
     213            d20 = peak[8]
     214            break
     215    else:
     216        d20 = peak[8]
     217        Nobs20 = len(peaks)
     218    for N20,hkl in enumerate(HKL):
     219        if hkl[4] < d20:
     220            break               
     221    eta = diff/Nobs20
     222    Q20 = 1.0/d20**2
     223    if diff:
     224        M20 = Q20/(2.0*diff)
     225    else:
     226        M20 = 0
     227    M20 /= (1.+X20)
     228    return M20,X20
     229   
    200230def sortM20(cells):
    201231    'needs a doc string'
     
    231261    N = len(HKL)
    232262    if N == 0: return False,peaks
    233     hklds = list(np.array(HKL).T[-2])+[1000.0,0.0,]
     263    hklds = list(np.array(HKL).T[3])+[1000.0,0.0,]
    234264    hklds.sort()                                        # ascending sort - upper bound at end
    235265    hklmax = [0,0,0]
    236266    for ipk,peak in enumerate(peaks):
    237267        if peak[2]:
     268            peak[4:7] = [0,0,0]                           #clear old indexing
     269            peak[8] = 0.
    238270            i = bisect.bisect_right(hklds,peak[7])          # find peak position in hkl list
    239             dm = peak[7]-hklds[i-1]                         # peak to neighbor hkls in list
    240             dp = hklds[i]-peak[7]
     271            dm = peak[-2]-hklds[i-1]                         # peak to neighbor hkls in list
     272            dp = hklds[i]-peak[-2]
    241273            pos = N-i                                       # reverse the order
    242274            if dp > dm: pos += 1                            # closer to upper than lower
     
    247279            if hkl[-1] >= 0:                                 # peak already assigned - test if this one better
    248280                opeak = peaks[hkl[-1]]
    249                 dold = abs(opeak[7]-hkl[-2])
     281                dold = abs(opeak[-2]-hkl[3])
    250282                dnew = min(dm,dp)
    251283                if dold > dnew:                             # new better - zero out old
     
    256288            hkl[-1] = ipk
    257289            peak[4:7] = hkl[:3]
    258             peak[8] = hkl[-2]                                # fill in d-calc
     290            peak[8] = hkl[3]                                # fill in d-calc
    259291    for peak in peaks:
    260292        peak[3] = False
    261293        if peak[2]:
    262             if peak[8] > 0.:
     294            if peak[-1] > 0.:
    263295                for j in range(3):
    264296                    if abs(peak[j+4]) > hklmax[j]: hklmax[j] = abs(peak[j+4])
    265297                peak[3] = True
    266298    if hklmax[0]*hklmax[1]*hklmax[2] > 0:
     299        return True,peaks
     300    else:
     301        return False,peaks  #nothing indexed!
     302       
     303def IndexSSPeaks(peaks,HKL):
     304    'needs a doc string'
     305    import bisect
     306    N = len(HKL)
     307    if N == 0: return False,peaks
     308    if len(peaks[0]) == 9:      #add m column if missing
     309        for peak in peaks:
     310            peak.insert(7,0)
     311    hklds = list(np.array(HKL).T[4])+[1000.0,0.0,]
     312    hklds.sort()                                        # ascending sort - upper bound at end
     313    hklmax = [0,0,0,0]
     314    for ipk,peak in enumerate(peaks):
     315        if peak[2]: #Use
     316            peak[4:8] = [0,0,0,0]                           #clear old indexing
     317            peak[9] = 0.
     318            i = bisect.bisect_right(hklds,peak[8])          # find peak position in hkl list
     319            dm = peak[8]-hklds[i-1]                         # peak to neighbor hkls in list
     320            dp = hklds[i]-peak[8]
     321            pos = N-i                                       # reverse the order
     322            if dp > dm: pos += 1                            # closer to upper than lower
     323            if pos >= N:
     324                print pos,N
     325                break
     326            hkl = HKL[pos]                                 # put in hkl
     327            if hkl[-1] >= 0:                                 # peak already assigned - test if this one better
     328                opeak = peaks[hkl[-1]]
     329                dold = abs(opeak[-2]-hkl[4])
     330                dnew = min(dm,dp)
     331                if dold > dnew:                             # new better - zero out old
     332                    opeak[4:8] = [0,0,0,0]
     333                    opeak[9] = 0.
     334                else:                                       # old better - do nothing
     335                    continue
     336            hkl[-1] = ipk
     337            peak[4:8] = hkl[:4]
     338            peak[9] = hkl[4]                                # fill in d-calc
     339    for peak in peaks:
     340        peak[3] = False
     341        if peak[2]:
     342            if peak[-1] > 0.:
     343                for j in range(4):
     344                    if abs(peak[j+4]) > hklmax[j]: hklmax[j] = abs(peak[j+4])
     345                peak[3] = True
     346    if hklmax[0]*hklmax[1]*hklmax[2]*hklmax[3] > 0:
    267347        return True,peaks
    268348    else:
     
    296376    else:
    297377        return A
     378       
     379def Values2Vec(ibrav,vec,Vref,val):
     380    if ibrav in [3,4,5,6]:
     381        Nskip = 2
     382    elif ibrav in [7,8,9,10]:
     383        Nskip = 3
     384    elif ibrav in [11,12]:
     385        Nskip = 4
     386    else:
     387        Nskip = 6
     388    i = 0
     389    for v,r in zip(vec,Vref):
     390        if r:
     391            v = val[i+Nskip]
     392            i += 1
     393    return np.array(vec) 
    298394
    299395def FitHKL(ibrav,peaks,A,Pwr):
     
    338434       
    339435    return True,np.sum(errFit(result[0],ibrav,Peaks[7],Peaks[4:7],Peaks[0],wave,Zref,Pwr)**2),A,Z,result
     436   
     437def FitHKLZSS(wave,ibrav,peaks,A,V,Vref,Z,Zref,Pwr):
     438    'needs a doc string'
     439   
     440    def errFit(values,ibrav,d,H,tth,wave,vec,Vref,Zref,Pwr):
     441        Zero = Z
     442        if Zref:   
     443            Zero = values[-1]
     444        A = Values2A(ibrav,values[:6])
     445        vec = Values2Vec(ibrav,vec,Vref,values)
     446        Qo = 1./d**2
     447        Qc = G2lat.calc_rDsqZSS(H,A,vec,Zero,tth,wave)
     448        return (Qo-Qc)*d**Pwr
     449   
     450    Peaks = np.array(peaks).T
     451   
     452    values = A2values(ibrav,A)
     453    for v,r in zip(V,Vref):
     454        if r:
     455            values.append(v)
     456    if Zref:
     457        values.append(Z)
     458    result = so.leastsq(errFit,values,full_output=True,ftol=0.0001,factor=0.001,
     459        args=(ibrav,Peaks[8],Peaks[4:8],Peaks[0],wave,V,Vref,Zref,Pwr))
     460    A = Values2A(ibrav,result[0])
     461    Vec = Values2Vec(ibrav,V,Vref,result[0])
     462    if Zref:
     463        Z = result[0][-1]
     464    chisq = np.sum(errFit(result[0],ibrav,Peaks[8],Peaks[4:8],Peaks[0],wave,Vec,Vref,Zref,Pwr)**2)
     465    return True,A,Vec,Z,chisq,result
    340466   
    341467def FitHKLT(difC,ibrav,peaks,A,Z,Zref,Pwr):
     
    404530def getDmin(peaks):
    405531    'needs a doc string'
    406     return peaks[-1][7]
     532    return peaks[-1][-2]
    407533   
    408534def getDmax(peaks):
    409535    'needs a doc string'
    410     return peaks[0][7]
     536    return peaks[0][-2]
    411537   
    412538def refinePeaksZ(peaks,wave,ibrav,A,Zero,ZeroRef):
     
    418544    Peaks[8] = 1./np.sqrt(G2lat.calc_rDsqZ(H,Aref,Z,Peaks[0],wave))
    419545    peaks = Peaks.T   
    420     HKL = G2lat.GenHBravais(dmin,ibrav,Aref)
     546    HKL = G2lat.GenHBravais(dmin,ibrav,A)
    421547    M20,X20 = calc_M20(peaks,HKL)
    422548    return len(HKL),M20,X20,Aref,Z
     549   
     550def refinePeaksZSS(peaks,wave,Inst,SGData,SSGData,maxH,ibrav,A,vec,vecRef,Zero,ZeroRef):
     551    'needs a doc string'
     552    dmin = getDmin(peaks)
     553    OK,Aref,Vref,Z,smin,result = FitHKLZSS(wave,ibrav,peaks,A,vec,vecRef,Zero,ZeroRef,0)
     554    Peaks = np.array(peaks).T
     555    H = Peaks[4:8]
     556    Peaks[9] = 1./np.sqrt(G2lat.calc_rDsqZSS(H,Aref,Vref,Z,Peaks[0],wave))  #H,A,vec,Z,tth,lam
     557    peaks = Peaks.T   
     558    HKL =  G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,Vref,maxH,Aref)
     559    M20,X20 = calc_M20SS(peaks,HKL)
     560    return len(HKL),M20,X20,Aref,Vref,Z
    423561   
    424562def refinePeaksT(peaks,difC,ibrav,A,Zero,ZeroRef):
     
    430568    Peaks[8] = 1./np.sqrt(G2lat.calc_rDsqT(H,Aref,Z,Peaks[0],difC))
    431569    peaks = Peaks.T   
    432     HKL = G2lat.GenHBravais(dmin,ibrav,Aref)
     570    HKL = G2lat.GenHBravais(dmin,ibrav,A)
    433571    M20,X20 = calc_M20(peaks,HKL)
    434572    return len(HKL),M20,X20,Aref,Z
  • trunk/GSASIIlattice.py

    r1489 r1578  
    462462    return rdsq
    463463       
     464def calc_rDsqZSS(H,A,vec,Z,tth,lam):
     465    'needs doc string'
     466    rpd = np.pi/180.
     467    rdsq = calc_rDsq(H[:3]+(H[3][:,np.newaxis]*vec).T,A)+Z*sind(tth)*2.0*rpd/lam**2
     468    return rdsq
     469       
    464470def calc_rDsqT(H,A,Z,tof,difC):
    465471    'needs doc string'
    466472    rdsq = calc_rDsq(H,A)+Z/difC
     473    return rdsq
     474       
     475def calc_rDsqTSS(H,A,vec,Z,tof,difC):
     476    'needs doc string'
     477    rdsq = calc_rDsq(H[:3]+H[3][:,np.newaxis]*vec,A)+Z/difC
    467478    return rdsq
    468479       
     
    478489    return Hmax
    479490   
    480 def sortHKLd(HKLd,ifreverse,ifdup):
     491def sortHKLd(HKLd,ifreverse,ifdup,ifSS=False):
    481492    '''needs doc string
    482493
     
    486497    '''
    487498    T = []
     499    N = 3
     500    if ifSS:
     501        N = 4
    488502    for i,H in enumerate(HKLd):
    489503        if ifdup:
    490             T.append((H[3],i))
     504            T.append((H[N],i))
    491505        else:
    492             T.append(H[3])           
     506            T.append(H[N])           
    493507    D = dict(zip(T,HKLd))
    494508    T.sort()
  • trunk/GSASIIphsGUI.py

    r1548 r1578  
    55505550        '''Create the Select tab menus and bind to all menu items
    55515551        '''
    5552         print 'FillMenus'
    55535552        # General
    55545553        FillSelectPageMenu(TabSelectionIdDict, G2frame.dataFrame.DataGeneral)
  • trunk/GSASIIplot.py

    r1571 r1578  
    10041004                            view = Page.toolbar._views.forward()[0][:2]
    10051005                            wid = view[1]-view[0]
    1006                             found = HKL[np.where(np.fabs(HKL.T[-1]-xpos) < 0.002*wid)]
     1006                            found = HKL[np.where(np.fabs(HKL.T[-2]-xpos) < 0.002*wid)]
    10071007                        if len(found):
    10081008                            if len(found[0]) > 6:   #SS reflections
     
    15431543                    clr = 'g'
    15441544                if G2frame.qPlot:
    1545                     Plot.axvline(2.*np.pi/G2lat.Pos2dsp(Parms,hkl[-1]),color=clr,dashes=(5,5))
     1545                    Plot.axvline(2.*np.pi/G2lat.Pos2dsp(Parms,hkl[-2]),color=clr,dashes=(5,5))
    15461546                if G2frame.dPlot:
    1547                     Plot.axvline(G2lat.Pos2dsp(Parms,hkl[-1]),color=clr,dashes=(5,5))
     1547                    Plot.axvline(G2lat.Pos2dsp(Parms,hkl[-2]),color=clr,dashes=(5,5))
    15481548                else:
    1549                     Plot.axvline(hkl[-1],color=clr,dashes=(5,5))
     1549                    Plot.axvline(hkl[-2],color=clr,dashes=(5,5))
    15501550        elif G2frame.PatternTree.GetItemText(PickId) in ['Reflection Lists'] or \
    15511551            'PWDR' in G2frame.PatternTree.GetItemText(PickId):
  • trunk/GSASIIpwd.py

    r1572 r1578  
    796796    return lenR,dRdS
    797797
    798 def getHKLpeak(dmin,SGData,A):
     798def getHKLpeak(dmin,Inst,SGData,A):
    799799    'needs a doc string'
    800800    HKL = G2lat.GenHLaue(dmin,SGData,A)       
     
    803803        ext = G2spc.GenHKLf([h,k,l],SGData)[0]
    804804        if not ext:
    805             HKLs.append([h,k,l,d,-1])
     805            HKLs.append([h,k,l,d,G2lat.Dsp2pos(Inst,d),-1])
    806806    return HKLs
    807807
    808 def getHKLMpeak(dmin,SGData,SSGData,Vec,maxH,A):
     808def getHKLMpeak(dmin,Inst,SGData,SSGData,Vec,maxH,A):
    809809    'needs a doc string'
    810810    HKLs = []
     
    818818        ext = G2spc.GenHKLf([h,k,l],SGData)[0]
    819819        if not ext and d >= dmin:
    820             HKLs.append([h,k,l,0,d,-1])
     820            HKLs.append([h,k,l,0,d,G2lat.Dsp2pos(Inst,d),-1])
    821821        for dH in SSdH:
    822822            if dH:
     
    827827                    HKLM = np.array([h,k,l,dH])
    828828                    if G2spc.checkSSextc(HKLM,SSGData[1]):
    829                         HKLs.append([h,k,l,dH,d,-1])
    830     return HKLs
     829                        HKLs.append([h,k,l,dH,d,G2lat.Dsp2pos(Inst,d),-1])   
     830    return G2lat.sortHKLd(HKLs,True,True,True)
    831831
    832832def getPeakProfile(dataType,parmDict,xdata,varyList,bakType):
  • 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]
  • trunk/GSASIIspc.py

    r1572 r1578  
    11501150    OpM = np.array([op[0] for op in Ops])
    11511151    OpT = np.array([op[1] for op in Ops])
    1152     HKLS = np.array([HKL,-HKL])
     1152    HKLS = np.array([HKL,-HKL])     #Freidel's Law
    11531153    DHKL = np.reshape(np.inner(HKLS,OpM)-HKL,(-1,4))
    11541154    PHKL = np.reshape(np.inner(HKLS,OpT),(-1,))
    1155     for dhkl,phkl in zip(DHKL,PHKL)[1:]:
     1155    for dhkl,phkl in zip(DHKL,PHKL)[1:]:    #skip identity
    11561156        if dhkl.any():
    11571157            continue
    11581158        else:
    1159             if phkl:
     1159            if phkl%1.:
    11601160                return False
    11611161    return True
Note: See TracChangeset for help on using the changeset viewer.