Changeset 2777 for trunk/GSASIIpwdGUI.py


Ignore:
Timestamp:
Apr 12, 2017 3:12:45 PM (6 years ago)
Author:
vondreele
Message:

implement import of getPDFx G(R) files NB: these have no matching PWDR entries
replace all scipy.fft with numpy.fft
add a plot SLD button for reflectometry
for PDF Peaks - Atom elements from periodic table - Bond No. still not working so doesn't really matter

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwdGUI.py

    r2776 r2777  
    48524852            data['2% weight'] = weight.GetValue()
    48534853           
     4854        def OnSLDplot(event):
     4855            sld.SetValue(False)
     4856            x,xr,y = G2pwd.makeSLDprofile(data,Substances)
     4857            ModelPlot(data,x,xr,y)
     4858           
     4859        def OnQ4fftplot(event):
     4860            q4fft.SetValue(False)
     4861            R,F = G2pwd.makeRefdFFT(Limits,Profile)
     4862            XY = [[R[:2500],F[:2500]],]
     4863            G2plt.PlotXY(G2frame,XY,labelX='thickness',labelY='F(R)',newPlot=True,
     4864                Title='Fourier transform',lines=True) 
     4865           
    48544866        controlSizer = wx.BoxSizer(wx.VERTICAL)
    48554867        resol = wx.BoxSizer(wx.HORIZONTAL)
     
    48764888        weight.Bind(wx.EVT_CHECKBOX, OnWeight)
    48774889        minimiz.Add(weight,0,WACV)
    4878        
    4879     #Recomb':0.5,  needed??     
    48804890        controlSizer.Add(minimiz,0,WACV)
     4891        plotSizer = wx.BoxSizer(wx.HORIZONTAL)
     4892        plotSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Plot controls: '),0,WACV)
     4893        sld = wx.CheckBox(G2frame.dataDisplay,label='Plot SLD?')
     4894        sld.Bind(wx.EVT_CHECKBOX, OnSLDplot)
     4895        plotSizer.Add(sld,0,WACV)
     4896#        q4fft = wx.CheckBox(G2frame.dataDisplay,label='Plot fft?')
     4897#        q4fft.Bind(wx.EVT_CHECKBOX, OnQ4fftplot)
     4898#        plotSizer.Add(q4fft,0,WACV)
     4899        controlSizer.Add(plotSizer,0,WACV)
    48814900        return controlSizer
    48824901   
     
    59105929    powName = 'PWDR'+dataFile[4:]
    59115930    powId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root, powName)
    5912     if not powId: # skip if no matching PWDR entry
    5913         G2G.G2MessageBox(G2frame,'matching PWDR record not found. PDF can not be used.')
    5914         return
    5915     fullLimits,limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Limits'))[:2]
    5916     inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Instrument Parameters'))[0]
    5917     if 'C' in inst['Type'][0]:
    5918         wave = G2mth.getWave(inst)
    5919         keV = 12.397639/wave
    5920         qLimits = [tth2q(fullLimits[0],wave),tth2q(fullLimits[1],wave)]
    5921         polariz = inst['Polariz.'][1]
    5922     else:   #'T'of
    5923         qLimits = [tof2q(fullLimits[1],inst['difC'][1]),tof2q(fullLimits[0],inst['difC'][1])]
    5924         polariz = 1.0
    5925     data['QScaleLim'][1] = min(qLimits[1],data['QScaleLim'][1])
    5926     if data['QScaleLim'][0]:
    5927         data['QScaleLim'][0] = max(qLimits[0],data['QScaleLim'][0])
    5928     else:                                #initial setting at 90% of max Q
    5929         data['QScaleLim'][0] = 0.90*data['QScaleLim'][1]
    5930     itemDict = {}
    5931     #patch
    5932     if 'BackRatio' not in data:
    5933         data['BackRatio'] = 0.
    5934     if 'noRing' not in data:
    5935         data['noRing'] = False
    5936     if 'Rmax' not in data:
    5937         data['Rmax'] = 100.
    5938     if 'Flat Bkg' not in data:
    5939         data['Flat Bkg'] = 0.
    5940     if 'IofQmin' not in data:
    5941         data['IofQmin'] = 1.0       
    5942     if 'Rmin' not in data:
    5943         data['Rmin'] = 1.5
    5944     if data['DetType'] == 'Image plate':
    5945         data['DetType'] = 'Area detector'
    5946     if 'Refine' not in data['Sample Bkg.']:
    5947         data['Sample Bkg.']['Refine'] = False
    5948     if 'diffGRname' not in data:
    5949         data['diffGRname'] = ''
    5950     if 'diffMult' not in data:
    5951         data['diffMult'] = 1.0
     5931    if powId: # skip if no matching PWDR entry
     5932        fullLimits,limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Limits'))[:2]
     5933        inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Instrument Parameters'))[0]
     5934        if 'C' in inst['Type'][0]:
     5935            wave = G2mth.getWave(inst)
     5936            keV = 12.397639/wave
     5937            qLimits = [tth2q(fullLimits[0],wave),tth2q(fullLimits[1],wave)]
     5938            polariz = inst['Polariz.'][1]
     5939        else:   #'T'of
     5940            qLimits = [tof2q(fullLimits[1],inst['difC'][1]),tof2q(fullLimits[0],inst['difC'][1])]
     5941            polariz = 1.0
     5942        data['QScaleLim'][1] = min(qLimits[1],data['QScaleLim'][1])
     5943        if data['QScaleLim'][0]:
     5944            data['QScaleLim'][0] = max(qLimits[0],data['QScaleLim'][0])
     5945        else:                                #initial setting at 90% of max Q
     5946            data['QScaleLim'][0] = 0.90*data['QScaleLim'][1]
     5947        itemDict = {}
     5948        #patch
     5949        if 'BackRatio' not in data:
     5950            data['BackRatio'] = 0.
     5951        if 'noRing' not in data:
     5952            data['noRing'] = False
     5953        if 'Rmax' not in data:
     5954            data['Rmax'] = 100.
     5955        if 'Flat Bkg' not in data:
     5956            data['Flat Bkg'] = 0.
     5957        if 'IofQmin' not in data:
     5958            data['IofQmin'] = 1.0       
     5959        if 'Rmin' not in data:
     5960            data['Rmin'] = 1.5
     5961        if data['DetType'] == 'Image plate':
     5962            data['DetType'] = 'Area detector'
     5963        if 'Refine' not in data['Sample Bkg.']:
     5964            data['Sample Bkg.']['Refine'] = False
     5965        if 'diffGRname' not in data:
     5966            data['diffGRname'] = ''
     5967        if 'diffMult' not in data:
     5968            data['diffMult'] = 1.0
    59525969    if G2frame.dataDisplay:
    59535970        G2frame.dataFrame.Clear()
    59545971    G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.PDFMenu)
    59555972    if not G2frame.dataFrame.GetStatusBar():
    5956         Status = G2frame.dataFrame.CreateStatusBar()   
     5973        Status = G2frame.dataFrame.CreateStatusBar()
     5974    if powId:
     5975        G2frame.dataFrame.PDFMenu.EnableTop(0,enable=True)
     5976    else:
     5977        G2frame.dataFrame.PDFMenu.EnableTop(0,enable=False)
    59575978    G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)
    59585979    G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyPDFControls, id=G2gd.wxID_PDFCOPYCONTROLS)
     
    59645985    G2frame.dataFrame.Bind(wx.EVT_MENU, OnComputeAllPDF, id=G2gd.wxID_PDFCOMPUTEALL)
    59655986
    5966     ElList = data['ElList']
    59675987    mainSizer = wx.BoxSizer(wx.VERTICAL)
    5968     mainSizer.Add(PDFFileSizer(),0,WACV)
    5969     G2G.HorizontalLine(mainSizer,G2frame.dataDisplay)
    5970     mainSizer.Add(SampleSizer(),0,WACV)
    5971     G2G.HorizontalLine(mainSizer,G2frame.dataDisplay)
    5972     mainSizer.Add(SFGctrlSizer(),0,WACV)
    5973     G2G.HorizontalLine(mainSizer,G2frame.dataDisplay)
     5988    if powId:
     5989        ElList = data['ElList']
     5990        mainSizer.Add(PDFFileSizer(),0,WACV)
     5991        G2G.HorizontalLine(mainSizer,G2frame.dataDisplay)
     5992        mainSizer.Add(SampleSizer(),0,WACV)
     5993        G2G.HorizontalLine(mainSizer,G2frame.dataDisplay)
     5994        mainSizer.Add(SFGctrlSizer(),0,WACV)
     5995        G2G.HorizontalLine(mainSizer,G2frame.dataDisplay)
    59745996    mainSizer.Add(DiffSizer(),0,WACV)
    59755997    mainSizer.Layout()   
     
    60376059                wx.CallAfter(UpdatePDFPeaks,G2frame,peaks,data)
    60386060               
    6039        
    6040         atms = ','.join(data['ElList'].keys())
     6061        def ElTypeSelect(event):
     6062            r,c =  event.GetRow(),event.GetCol()
     6063            if 'Atom' in PDFPeaks.GetColLabelValue(c):
     6064                PE = G2elemGUI.PickElement(G2frame)
     6065                if PE.ShowModal() == wx.ID_OK:
     6066                    el = PE.Elem.strip()
     6067                    peaks['Peaks'][r][c] = el
     6068                    PDFPeaks.SetCellValue(r,c,el)
     6069                PE.Destroy()               
     6070       
    60416071        colLabels = ['position','magnitude','sig','refine','Atom A','Atom B','Bond No.']
    60426072        Types = 3*[wg.GRID_VALUE_FLOAT+':10,3',]+[wg.GRID_VALUE_CHOICE+': ,P,M,S,PM,PS,MS,PMS',]+     \
    6043             2*[wg.GRID_VALUE_CHOICE+':'+atms,]+[wg.GRID_VALUE_FLOAT+':10,3',]
     6073            2*[wg.GRID_VALUE_STRING,]+[wg.GRID_VALUE_FLOAT+':10,3',]
    60446074        rowLabels = range(len(peaks['Peaks']))
    60456075        peakTable = G2G.Table(peaks['Peaks'],rowLabels=rowLabels,colLabels=colLabels,types=Types)
     
    60506080        PDFPeaks.AutoSizeColumns(False)
    60516081        PDFPeaks.Bind(wg.EVT_GRID_LABEL_LEFT_DCLICK, PeaksRefine)
     6082        PDFPeaks.Bind(wg.EVT_GRID_CELL_LEFT_DCLICK, ElTypeSelect)
    60526083
    60536084        peakBox = wx.BoxSizer(wx.VERTICAL)
     
    61106141                    peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,pId,'PDF Peaks'))
    61116142                    newpeaks,vals,varyList,sigList,parmDict,Rvals = G2pwd.PDFPeakFit(peaks,data['G(R)'])
     6143                    if vals is None:
     6144                        print 'Nothing varied!'
     6145                        dlg.Destroy()
     6146                        return
    61126147                    SeqResult[name] = {'variables':vals,'varyList':varyList,'sig':sigList,'Rvals':Rvals,
    61136148                        'covMatrix':np.eye(len(varyList)),'title':name,'parmDict':parmDict}
Note: See TracChangeset for help on using the changeset viewer.