Changeset 1461


Ignore:
Timestamp:
Aug 13, 2014 3:59:09 PM (7 years ago)
Author:
vondreele
Message:

modify xye import to not divide by CW (channel width)for TOF data. NB: old style GSAS data is *CW for use in GSAS - need to divide by CW to remove it.
implement spin buttons for lattice parms - get auto update of index peak positions.
fix Refine problem if nothing refined. Now works OK as a profile calculator with no refinement.
More fixes to TOF function & derivatives..

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r1459 r1461  
    12371237                cw = np.diff(rd.powderdata[0])
    12381238                rd.powderdata[0] = rd.powderdata[0][:-1]+cw/2.
    1239                 rd.powderdata[1] = rd.powderdata[1][:-1]/cw
    1240                 rd.powderdata[2] = rd.powderdata[2][:-1]*cw**2  #1/var=w at this point
     1239                if rd.GSAS:     #NB: old GSAS wanted intensities*CW even if normalized!
     1240                    rd.powderdata[1] = rd.powderdata[1][:-1]/cw
     1241                    rd.powderdata[2] = rd.powderdata[2][:-1]*cw**2  #1/var=w at this point
     1242                else:       #NB: from topas/fullprof type files
     1243                    rd.powderdata[1] = rd.powderdata[1][:-1]
     1244                    rd.powderdata[2] = rd.powderdata[2][:-1]
    12411245                if 'Itype' in Iparm2:
    12421246                    Ibeg = np.searchsorted(rd.powderdata[0],Iparm2['Tminmax'][0])
  • trunk/GSASIIpwdGUI.py

    r1460 r1461  
    20112011       
    20122012    def OnSpcSel(event):
    2013         controls[13] = spcSel.GetString(spcSel.GetSelection())       
    2014        
    2015     def OnCellChange(event):
     2013        controls[13] = spcSel.GetString(spcSel.GetSelection())
     2014       
     2015    def SetCellValue(Obj,ObjId,value):
    20162016        ibrav = bravaisSymb.index(controls[5])
    2017         Obj = event.GetEventObject()
    2018         ObjId = cellList.index(Obj.GetId())
    2019         try:
    2020             value = max(1.0,float(Obj.GetValue()))
    2021         except ValueError:
    2022             if ObjId < 3:               #bad cell edge - reset
    2023                 value = controls[6+ObjId]
    2024             else:                       #bad angle
    2025                 value = 90.
    20262017        if ibrav in [0,1,2]:
    20272018            controls[6] = controls[7] = controls[8] = value
     
    20582049        controls[12] = G2lat.calc_V(G2lat.cell2A(controls[6:12]))
    20592050        volVal.SetValue("%.3f"%(controls[12]))
     2051       
     2052    def OnMoveCell(event):
     2053        Obj = event.GetEventObject()
     2054        ObjId = cellList.index(Obj.GetId())
     2055        valObj = valDict[Obj.GetId()]
     2056        if ObjId/2 < 3:
     2057            move = Obj.GetValue()*0.01
     2058        else:
     2059            move = Obj.GetValue()*0.1
     2060        Obj.SetValue(0)
     2061        value = float(valObj.GetValue())+move 
     2062        SetCellValue(valObj,ObjId/2,value)
     2063        OnHklShow(event)
     2064       
     2065    def OnCellChange(event):
     2066        Obj = event.GetEventObject()
     2067        ObjId = cellList.index(Obj.GetId())
     2068        try:
     2069            value = max(1.0,float(Obj.GetValue()))
     2070        except ValueError:
     2071            if ObjId/2 < 3:               #bad cell edge - reset
     2072                value = controls[6+ObjId/2]
     2073            else:                       #bad angle
     2074                value = 90.
     2075        SetCellValue(Obj,ObjId/2,value)
    20602076       
    20612077    def OnHklShow(event):
     
    23742390            useGUI = cellGUI
    23752391    cellList = []
     2392    valDict = {}
    23762393    littleSizer = wx.FlexGridSizer(0,useGUI[1],5,5)
    23772394    for txt,fmt,ifEdit,Id in useGUI[2]:
     
    23812398            cellVal.Bind(wx.EVT_TEXT_ENTER,OnCellChange)       
    23822399            cellVal.Bind(wx.EVT_KILL_FOCUS,OnCellChange)
    2383             littleSizer.Add(cellVal,0,WACV)
     2400            valSizer = wx.BoxSizer(wx.HORIZONTAL)
     2401            valSizer.Add(cellVal,0,WACV)
     2402            cellSpin = wx.SpinButton(G2frame.dataDisplay,style=wx.SP_VERTICAL,size=wx.Size(20,20))
     2403            cellSpin.SetValue(0)
     2404            cellSpin.SetRange(-1,1)
     2405            cellSpin.Bind(wx.EVT_SPIN, OnMoveCell)
     2406            valSizer.Add(cellSpin,0,WACV)
     2407            littleSizer.Add(valSizer,0,WACV)
    23842408            cellList.append(cellVal.GetId())
     2409            cellList.append(cellSpin.GetId())
     2410            valDict[cellSpin.GetId()] = cellVal
    23852411        else:               #volume
    23862412            volVal = wx.TextCtrl(G2frame.dataDisplay,value=(fmt%(controls[12])),style=wx.TE_READONLY)
  • trunk/GSASIIstrMain.py

    r1335 r1461  
    7070            result = so.leastsq(G2stMth.errRefine,values,full_output=True,ftol=Ftol,epsfcn=1.e-8,factor=Factor,
    7171                args=([Histograms,Phases,restraintDict,rigidbodyDict],parmDict,varyList,calcControls,pawleyLookup,dlg))
    72             ncyc = int(result[2]['nfev']/len(varyList))
     72            ncyc = 1
     73            if len(varyList):
     74                ncyc = int(result[2]['nfev']/len(varyList))
    7375#        table = dict(zip(varyList,zip(values,result[0],(result[0]-values))))
    7476#        for item in table: print item,table[item]               #useful debug - are things shifting?
     
    9698        except TypeError,FloatingPointError:          #result[1] is None on singular matrix
    9799            IfOK = False
     100            if not len(varyList):
     101                covMatrix = []
     102                sig = []
     103                break
    98104            print '**** Refinement failed - singular matrix ****'
    99105            if 'Hessian' in Controls['deriv type']:
  • trunk/GSASIIstrMath.py

    r1460 r1461  
    11741174    dFdODF = {}
    11751175    dFdSA = [0,0,0]
     1176    dIdPO = {}
    11761177    if pfx+'SHorder' in parmDict:
    11771178        odfCor,dFdODF,dFdSA = SHTXcalDerv(refl,g,pfx,hfx,SGData,calcControls,parmDict)
     
    16301631    yb = G2pwd.getBackground(hfx,parmDict,bakType,x)
    16311632    yc = np.zeros_like(yb)
     1633    cw = np.diff(x)
     1634    cw = np.append(cw,cw[-1])
    16321635       
    16331636    if 'C' in calcControls[hfx+'histType']:   
     
    17191722                elif not iBeg-iFin:     #peak above high limit - done
    17201723                    break
    1721                 yc[iBeg:iFin] += refl[11]*refl[9]*G2pwd.getEpsVoigt(refl[5],refl[12],refl[13],refl[6],refl[7],ma.getdata(x[iBeg:iFin]))
     1724                yc[iBeg:iFin] += refl[11]*refl[9]*G2pwd.getEpsVoigt(refl[5],refl[12],refl[13],refl[6],refl[7],ma.getdata(x[iBeg:iFin]))/cw[iBeg:iFin]
    17221725#        print 'profile calc time: %.3fs'%(time.time()-time0)
    17231726    return yc,yb
     
    18481851                dMdipk = G2pwd.getdEpsVoigt(refl[5],refl[12],refl[13],refl[6],refl[7],ma.getdata(x[iBeg:iFin]))
    18491852                for i in range(6):
    1850                     dMdpk[i] += cw[iBeg:iFin]*refl[11]*refl[9]*dMdipk[i]
     1853                    dMdpk[i] += refl[11]*refl[9]*dMdipk[i]      #cw[iBeg:iFin]*
    18511854                dervDict = {'int':dMdpk[0],'pos':dMdpk[1],'alp':dMdpk[2],'bet':dMdpk[3],'sig':dMdpk[4],'gam':dMdpk[5]}           
    18521855            if Phase['General'].get('doPawley'):
  • trunk/imports/G2pwd_xye.py

    r1223 r1461  
    3636        gotCcomment = False
    3737        begin = True
     38        self.GSAS = False
    3839        for i,S in enumerate(filepointer):
    3940            if i > 1000: break
Note: See TracChangeset for help on using the changeset viewer.