Changeset 1341


Ignore:
Timestamp:
May 12, 2014 12:32:16 PM (8 years ago)
Author:
vondreele
Message:

SASD smearing now works
some work with SASD plots

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIplot.py

    r1339 r1341  
    443443    def OnPlotKeyPress(event):
    444444        newPlot = False
    445         if event.key == 'w' and 'PWDR' in plottype:
     445        if event.key == 'w':
    446446            G2frame.Weight = not G2frame.Weight
    447             if not G2frame.Weight:
     447            if not G2frame.Weight and 'PWDR' in plottype:
    448448                G2frame.SinglePlot = True
    449449            newPlot = True
     
    481481        elif event.key == 'c' and 'PWDR' in plottype:
    482482            newPlot = True
    483             G2frame.Contour = not G2frame.Contour
    484483            if not G2frame.Contour:
    485484                G2frame.SinglePlot = False
    486485                G2frame.Offset = [0.,0.]
     486            else:
     487                G2frame.SinglePlot = True               
     488            G2frame.Contour = not G2frame.Contour
    487489        elif event.key == 'q':
    488490            if 'PWDR' in plottype:
     
    846848            Plot.set_xlabel(r'$TOF, \mathsf{\mu}$s',fontsize=16)           
    847849    if G2frame.Weight:
    848         Plot.set_ylabel(r'$\mathsf{I/\sigma(I)}$',fontsize=16)
     850        if 'PWDR' in plottype:
     851            Plot.set_ylabel(r'$\mathsf{I/\sigma(I)}$',fontsize=16)
     852        elif 'SASD' in plottype:
     853            Plot.set_ylabel(r'$\mathsf{\Delta(I)/\sigma(I)}$',fontsize=16)
    849854    else:
    850855        if 'C' in ParmList[0]['Type'][0]:
     
    862867        ContourY = []
    863868        Nseq = 0
    864     if len(PlotList) < 2:
    865         G2frame.Contour = False
    866869    for N,Pattern in enumerate(PlotList):
    867870        Parms = ParmList[N]
     
    948951                        ZB = Z+B
    949952                    Plot.set_yscale("log",nonposy='mask')
    950                     Plot.set_ylim(bottom=np.min(np.trim_zeros(YB))/2.,top=np.max(Y)*2.)
     953                    if np.any(W>0.):
     954                        Plot.set_ylim(bottom=np.min(np.trim_zeros(W))/2.,top=np.max(Y)*2.)
     955                    else:
     956                        Plot.set_ylim(bottom=np.min(np.trim_zeros(YB))/2.,top=np.max(Y)*2.)
    951957                if G2frame.logPlot:
    952958                    if 'PWDR' in plottype:
     
    954960                        Plot.plot(X,Y,colors[N%6]+'+',picker=3.,clip_on=False)
    955961                        Plot.plot(X,Z,colors[(N+1)%6],picker=False)
    956                         Plot.plot(X,W,colors[(N+2)%6],picker=False)
     962                        Plot.plot(X,W,colors[(N+2)%6],picker=False)     #background
    957963                    elif 'SASD' in plottype:
    958964                        Plot.set_xscale("log",nonposx='mask')
     
    967973                        else:
    968974                            Plot.plot(X,YB,colors[N%6]+'+',picker=3.,clip_on=False)
    969                         Plot.plot(X,W,colors[(N+2)%6],picker=False)
     975                        Plot.plot(X,W,colors[(N+2)%6],picker=False)     #const. background
    970976                        Plot.plot(X,ZB,colors[(N+1)%6],picker=False)
    971977                elif G2frame.Weight and 'PWDR' in plottype:
  • trunk/GSASIIsasd.py

    r1339 r1341  
    993993    Fin = np.min([rx[-1],x[-1],Limits[1][1],refLimits[1][1]])
    994994    iBeg = np.searchsorted(x,Beg)
    995     iFin = np.searchsorted(x,Fin)
     995    iFin = np.searchsorted(x,Fin)+1        #include last point
    996996    sum = np.sum(y[iBeg:iFin])
    997997    refsum = np.sum(np.interp(x[iBeg:iFin],rx,ry,0,0))
     
    10011001    return (G*P/Rg**P)*np.exp(scsp.gammaln(P/2))
    10021002   
    1003 def SmearData(Ic,Q,slitLen):
    1004     Qtemp = np.concatenate([Q,20*Q])
    1005     Ictemp = np.concatenate([Ic,np.zeros_like(Ic)])
    1006     print Ictemp
    1007     Icsm = np.zeros_like(Qtemp)
     1003def SmearData(Ic,Q,slitLen,Back):
    10081004    Np = Q.shape[0]
     1005    Qtemp = np.concatenate([Q,Q[-1]+20*Q])
     1006    Ictemp = np.concatenate([Ic,Ic[-1]*(1-(Qtemp[Np:]-Qtemp[Np])/(20*Qtemp[Np-1]))])
     1007    Icsm = np.zeros_like(Q)
    10091008    Qsm = 2*slitLen*(np.interp(np.arange(2*Np)/2.,np.arange(Np),Q)-Q[0])/(Q[-1]-Q[0])
    10101009    Sp = np.searchsorted(Qsm,slitLen)
    1011     for i in range(Np):
    1012         Ism = np.interp(np.sqrt(Q[i]**2+Qsm**2),Qtemp,Ictemp)
    1013         print Ism
    1014         raise Exception
    1015         Icsm[i] = np.sum(Ism[:Sp])
     1010    DQsm = np.diff(Qsm)[:Sp]
     1011    Ism = np.interp(np.sqrt(Q[:,np.newaxis]**2+Qsm**2),Qtemp,Ictemp)
     1012    Icsm = np.sum((Ism[:,:Sp]*DQsm),axis=1)
    10161013    Icsm /= slitLen
    1017     return Icsm   #for now
     1014    return Icsm
    10181015   
    10191016###############################################################################
     
    10481045    wtFactor = ProfDict['wtFactor']
    10491046    Ibeg = np.searchsorted(Q,Qmin)
    1050     Ifin = np.searchsorted(Q,Qmax)
     1047    Ifin = np.searchsorted(Q,Qmax)+1        #include last point
    10511048    BinMag = np.zeros_like(Bins)
    10521049    Ic[:] = 0.
     
    12251222        slitLen = Sample['SlitLen']
    12261223        if slitLen:
    1227             Ic = SmearData(Ic,Q,slitLen)
     1224            Ic = SmearData(Ic,Q,slitLen,parmDict['Back'])
    12281225        return Ic
    12291226       
     
    12331230    wtFactor = ProfDict['wtFactor']
    12341231    Ibeg = np.searchsorted(Q,Qmin)
    1235     Ifin = np.searchsorted(Q,Qmax)
     1232    Ifin = np.searchsorted(Q,Qmax)+1    #include last point
    12361233    Ic[:] = 0
    12371234    levelTypes,parmDict,varyList,values = GetModelParms()
     
    13011298    wtFactor = ProfDict['wtFactor']
    13021299    Ibeg = np.searchsorted(Q,Qmin)
    1303     Ifin = np.searchsorted(Q,Qmax)
     1300    Ifin = np.searchsorted(Q,Qmax)+1    #include last point
    13041301    Ib[:] = Back[0]
    13051302    Ic[:] = 0
     
    13771374    slitLen = Sample['SlitLen']
    13781375    if slitLen:
    1379         Ic[Ibeg:Ifin] = SmearData(Ic,Q,slitLen)[Ibeg:Ifin]
     1376        Ic[Ibeg:Ifin] = SmearData(Ic,Q,slitLen,Back[0])[Ibeg:Ifin]
    13801377    sasdData['Size Calc'] = [Rbins,Dist]
    13811378   
Note: See TracChangeset for help on using the changeset viewer.