Changeset 2777


Ignore:
Timestamp:
Apr 12, 2017 3:12:45 PM (5 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

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r2770 r2777  
    282282        self.ImportReflectometryReaderlist = []
    283283        self._init_Import_routines('rfd',self.ImportReflectometryReaderlist,'Reflectometry_Data')
     284        self.ImportPDFReaderlist = []
     285        self._init_Import_routines('pdf',self.ImportPDFReaderlist,'PDF_Data')
    284286        self.ImportImageReaderlist = []
    285287        self._init_Import_routines('img',self.ImportImageReaderlist,'Images')
     
    19941996       
    19951997    def OnImportReflectometry(self,event):
    1996         '''Called in response to an Import/Small Angle Data/... menu item
    1997         to read a small angle diffraction data set.
     1998        '''Called in response to an Import/Reflectometry Data/... menu item
     1999        to read a reflectometry data set.
    19982000        dict self.ImportMenuId is used to look up the specific
    19992001        reader item associated with the menu item, which will be
     
    20922094        return # success
    20932095
     2096    def _Add_ImportMenu_PDF(self,parent):
     2097        '''configure the PDF Data menus accord to the readers found in _init_Imports
     2098        '''
     2099        submenu = wx.Menu()
     2100        item = parent.AppendMenu(wx.ID_ANY, 'PDF G(R) Data',
     2101            submenu, help='Import PDF G(R) data')
     2102        for reader in self.ImportPDFReaderlist:
     2103            item = submenu.Append(wx.ID_ANY,help=reader.longFormatName,
     2104                kind=wx.ITEM_NORMAL,text='from '+reader.formatName+' file')
     2105            self.ImportMenuId[item.GetId()] = reader
     2106            self.Bind(wx.EVT_MENU, self.OnImportPDF, id=item.GetId())
     2107        # item = submenu.Append(wx.ID_ANY,
     2108        #     help='Import reflectometry data, use file to try to determine format',
     2109        #     kind=wx.ITEM_NORMAL,text='guess format from file')
     2110        # self.Bind(wx.EVT_MENU, self.OnImportReflectometry, id=item.GetId())
     2111       
     2112    def OnImportPDF(self,event):
     2113        '''Called in response to an Import/PDF G(R) Data/... menu item
     2114        to read a PDF G(R) data set.
     2115        dict self.ImportMenuId is used to look up the specific
     2116        reader item associated with the menu item, which will be
     2117        None for the last menu item, which is the "guess" option
     2118        where all appropriate formats will be tried.
     2119
     2120        '''
     2121       
     2122        # get a list of existing histograms
     2123        PDFlist = []
     2124        if self.PatternTree.GetCount():
     2125            item, cookie = self.PatternTree.GetFirstChild(self.root)
     2126            while item:
     2127                name = self.PatternTree.GetItemText(item)
     2128                if name.startswith('PDF ') and name not in PDFlist:
     2129                    PDFlist.append(name)
     2130                item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     2131        # look up which format was requested
     2132        reqrdr = self.ImportMenuId.get(event.GetId()) 
     2133        rdlist = self.OnImportGeneric(
     2134            reqrdr,self.ImportPDFReaderlist,'PDF G(R) Data',multiple=True)
     2135        if len(rdlist) == 0: return
     2136        self.CheckNotebook()
     2137        newHistList = []
     2138        self.EnablePlot = False
     2139        for rd in rdlist:
     2140            HistName = rd.idstring
     2141            HistName = 'PDF '+HistName
     2142            # make new histogram names unique
     2143            HistName = G2obj.MakeUniqueLabel(HistName,PDFlist)
     2144            print 'Read PDF G(R) data '+HistName+ \
     2145                ' from file '+self.lastimport
     2146            # data are read, now store them in the tree
     2147            Id = self.PatternTree.AppendItem(self.root,text=HistName)
     2148            Ymin = np.min(rd.pdfdata[1])                 
     2149            Ymax = np.max(rd.pdfdata[1])                 
     2150            valuesdict = {
     2151                'wtFactor':1.0,'Dummy':False,'ranId':ran.randint(0,sys.maxint),
     2152                'Offset':[0.0,0.0],'delOffset':0.02*Ymax,
     2153                'qPlot':False,'dPlot':False,'sqrtPlot':False,'Yminmax':[Ymin,Ymax]
     2154                }
     2155            self.PatternTree.SetItemPyData(
     2156                self.PatternTree.AppendItem(Id,text='PDF Controls'),{'G(R)':[valuesdict,rd.pdfdata,HistName],'diffGRname':''})
     2157            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='PDF Peaks'),
     2158                {'Limits':[1.,5.],'Background':[2,[0.,-0.2*np.pi],False],'Peaks':[]})
     2159        else:
     2160            self.EnablePlot = True
     2161            self.PatternTree.Expand(Id)
     2162            self.PatternTree.SelectItem(Id)
     2163           
     2164        if not newHistList: return # somehow, no new histograms
     2165        return # success
     2166       
     2167###############################################################################
     2168#Command logging
     2169###############################################################################
     2170
    20942171    def OnMacroRecordStatus(self,event,setvalue=None):
    20952172        '''Called when the record macro menu item is used which toggles the
     
    23252402        # self.ExportLookup[item.GetId()] = 'powder'
    23262403
     2404###############################################################################
     2405# Exporters
     2406###############################################################################
     2407                           
    23272408    def _Add_ExportMenuItems(self,parent):
    23282409        # item = parent.Append(
     
    23802461        self._Add_ImportMenu_smallangle(Import)
    23812462        self._Add_ImportMenu_reflectometry(Import)
     2463        self._Add_ImportMenu_PDF(Import)
    23822464
    23832465        #======================================================================
  • trunk/GSASIIIO.py

    r2754 r2777  
    17511751######################################################################
    17521752class ImportReflectometryData(ImportBaseclass):
    1753     '''Defines a base class for the reading of files with small angle data.
     1753    '''Defines a base class for the reading of files with reflectometry data.
    17541754    See :ref:`Writing a Import Routine<Import_Routines>`
    17551755    for an explanation on how to use this class.
     
    17821782        self.numbanks = 1
    17831783        self.instdict = {} # place items here that will be transferred to the instrument parameters
     1784
     1785######################################################################
     1786class ImportPDFData(ImportBaseclass):
     1787    '''Defines a base class for the reading of files with PDF G(R) data.
     1788    See :ref:`Writing a Import Routine<Import_Routines>`
     1789    for an explanation on how to use this class.
     1790    '''
     1791    def __init__(self,formatName,longFormatName=None,extensionlist=[],
     1792        strictExtension=False,):
     1793           
     1794        ImportBaseclass.__init__(self,formatName,longFormatName,extensionlist,
     1795            strictExtension)
     1796        self.ReInitialize()
     1797       
     1798    def ReInitialize(self):
     1799        'Reinitialize the Reader to initial settings'
     1800        ImportBaseclass.ReInitialize(self)
     1801        self.pdfentry = ['',None,None] #  (filename,Pos,Bank)
     1802        self.pdfdata = [] # PDF G(R) dataset
     1803        '''A pdf g(r) data set is a list with items [x,y]:
     1804                np.array(x), # r-axis values
     1805                np.array(y), # pdf g(r)
     1806        '''                           
     1807        self.comments = []
     1808        self.idstring = ''
     1809        self.numbanks = 1
    17841810
    17851811######################################################################
  • trunk/GSASIIgrid.py

    r2769 r2777  
    30663066                    name = 'PWDR' + name[4:]
    30673067                Id = GetPatternTreeItemId(G2frame,G2frame.root,name)
    3068                 sampleData = G2frame.PatternTree.GetItemPyData(GetPatternTreeItemId(G2frame,Id,'Sample Parameters'))
    3069                 for item in sampleParmDict:
    3070                     sampleParmDict[item].append(sampleData.get(item,0))
     3068                if Id:
     3069                    sampleData = G2frame.PatternTree.GetItemPyData(GetPatternTreeItemId(G2frame,Id,'Sample Parameters'))
     3070                    for item in sampleParmDict:
     3071                        sampleParmDict[item].append(sampleData.get(item,0))
    30713072        for item in sampleParmDict:
    3072             frstValue = sampleParmDict[item][0]
    3073             if np.any(np.array(sampleParmDict[item])-frstValue):
    3074                 if item.startswith('FreePrm'):
    3075                     sampleParm[Controls[item]] = sampleParmDict[item]
    3076                 else:
    3077                     sampleParm[item] = sampleParmDict[item]
     3073            if sampleParmDict[item]:
     3074                frstValue = sampleParmDict[item][0]
     3075                if np.any(np.array(sampleParmDict[item])-frstValue):
     3076                    if item.startswith('FreePrm'):
     3077                        sampleParm[Controls[item]] = sampleParmDict[item]
     3078                    else:
     3079                        sampleParm[item] = sampleParmDict[item]
    30783080        return sampleParm
    30793081
     
    47754777        G2pdG.UpdatePDFGrid(G2frame,data)
    47764778        if len(data['G(R)']):
    4777             G2plt.PlotISFG(G2frame,data,plotType='I(Q)')
    4778             G2plt.PlotISFG(G2frame,data,plotType='S(Q)')
    4779             G2plt.PlotISFG(G2frame,data,plotType='F(Q)')
     4779            if 'I(Q)' in data:  G2plt.PlotISFG(G2frame,data,plotType='I(Q)')
     4780            if 'S(Q)' in data:  G2plt.PlotISFG(G2frame,data,plotType='S(Q)')
     4781            if 'F(Q)' in data:  G2plt.PlotISFG(G2frame,data,plotType='F(Q)')
    47804782            G2plt.PlotISFG(G2frame,data,plotType='G(R)')
    47814783    elif G2frame.PatternTree.GetItemText(parentID) == 'Phases':
  • trunk/GSASIIplot.py

    r2774 r2777  
    25042504        else:       # a profile point, e.g. a peak
    25052505            if mouse.button == 1:
    2506                 El = data['ElList'].keys()[0]
    2507                 Peaks['Peaks'].append([xy[0],(xy[1]-Peaks['Background'][1][1]*xy[0])/4.7,.085,'',El,El,0.])
     2506#                El = data['ElList'].keys()[0]
     2507                Peaks['Peaks'].append([xy[0],(xy[1]-Peaks['Background'][1][1]*xy[0])/4.7,.085,'','O','O',0.])
    25082508                Peaks['Peaks'] = G2mth.sortArray(Peaks['Peaks'],0,reverse=False)
    25092509                PlotISFG(G2frame,data,peaks=Peaks,newPlot=False)
     
    25702570        Page.Choice = ()
    25712571    PatternId = G2frame.PatternId
    2572     PDFdata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'PDF Controls'))
    2573     numbDen = G2pwd.GetNumDensity(PDFdata['ElList'],PDFdata['Form Vol'])
     2572    if not PatternId:  return
     2573    pId = G2gd.GetPatternTreeItemId(G2frame,PatternId, 'PDF Controls')
     2574    if not pId:  return
     2575    PDFdata = G2frame.PatternTree.GetItemPyData(pId)
     2576    numbDen = 0.
     2577    if 'ElList' in PDFdata:
     2578        numbDen = G2pwd.GetNumDensity(PDFdata['ElList'],PDFdata['Form Vol'])
    25742579    if G2frame.SinglePlot:
    25752580        if 'G(R)' not in data:
     
    26912696                    Plot.add_collection(line)
    26922697            wx.EndBusyCursor()
    2693             if plotType == 'G(R)':
     2698            if plotType == 'G(R)' and numbDen:
    26942699                Xb = [0.,2.5]
    26952700                Yb = [0.,-10.*np.pi*numbDen]
  • trunk/GSASIIpwd.py

    r2776 r2777  
    2424import numpy.ma as ma
    2525import random as rand
    26 from numpy.fft import ifft, fft, fftshift
     26import numpy.fft as fft
    2727import scipy.interpolate as si
    2828import scipy.stats as st
     
    289289    '''
    290290    auxPlot = []
    291     import scipy.fftpack as ft
    292291    Ibeg = np.searchsorted(xydata['Sample'][1][0],limits[0])
    293292    Ifin = np.searchsorted(xydata['Sample'][1][0],limits[1])+1
     
    371370    mul = int(round(2.*np.pi*nR/(data.get('Rmax',100.)*qLimits[1])))
    372371    xydata['GofR'][1][0] = 2.*np.pi*np.linspace(0,nR,nR,endpoint=True)/(mul*qLimits[1])
    373     xydata['GofR'][1][1] = -dq*np.imag(ft.fft(xydata['FofQ'][1][1],mul*nR)[:nR])
     372    xydata['GofR'][1][1] = -dq*np.imag(fft.fft(xydata['FofQ'][1][1],mul*nR)[:nR])
    374373    if data.get('noRing',True):
    375374        xydata['GofR'][1][1] = np.where(xydata['GofR'][1][0]<0.5,0.,xydata['GofR'][1][1])
     
    452451   
    453452def MakeRDF(RDFcontrols,background,inst,pwddata):
    454     import scipy.fftpack as ft
    455453    import scipy.signal as signal
    456454    auxPlot = []
     
    484482#    auxPlot.append([Qpoints,Qdata,'interpolate:'+RDFcontrols['Smooth']])
    485483#    auxPlot.append([Qpoints,Qsmooth,'interpolate:'+RDFcontrols['Smooth']])
    486     DofR = dq*np.imag(ft.fft(Qsmooth,16*nR)[:nR])
     484    DofR = dq*np.imag(fft.fft(Qsmooth,16*nR)[:nR])
     485#    DofR = dq*np.imag(ft.fft(Qsmooth,16*nR)[:nR])
    487486    auxPlot.append([R[:iFin],DofR[:iFin],'D(R)'])   
    488487    return auxPlot
     
    692691    if len(np.nonzero(FCJ)[0])>5:
    693692        z = np.column_stack([Norm,Cauchy,FCJ]).T
    694         Z = fft(z)
    695         Df = ifft(Z.prod(axis=0)).real
     693        Z = fft.fft(z)
     694        Df = fft.ifft(Z.prod(axis=0)).real
    696695    else:
    697696        z = np.column_stack([Norm,Cauchy]).T
    698         Z = fft(z)
    699         Df = fftshift(ifft(Z.prod(axis=0))).real
     697        Z = fft.fft(z)
     698        Df = fft.fftshift(fft.ifft(Z.prod(axis=0))).real
    700699    Df /= np.sum(Df)
    701700    Df = si.interp1d(x,Df,bounds_error=False,fill_value=0.0)
     
    20272026                rho[ilay] += parmDict[cid+'Mag SLD']
    20282027        A,B = abeles(0.5*Q,depth,rho,irho,sigma[1:])     #Q --> k, offset roughness for abeles
    2029         Ic += (A**2+B**2)*Scale     
     2028        Ic += (A**2+B**2)*Scale
     2029        #TODO: smear Ic by instrument resolution Qsig
    20302030        return Ic
    20312031       
     
    20522052        return 1.5*(MMax-Mmin)
    20532053
    2054     Q,Io,wt,Ic,Ib,Ifb = Profile[:6]
     2054    Q,Io,wt,Ic,Ib,Qsig = Profile[:6]
    20552055    if data.get('2% weight'):
    20562056        wt = 1./(0.02*Io)**2
     
    21902190def REFDModelFxn(Profile,Inst,Limits,Substances,data):
    21912191   
    2192     Q,Io,wt,Ic,Ib,Ifb = Profile[:6]
     2192    Q,Io,wt,Ic,Ib,Qsig = Profile[:6]
    21932193    Qmin = Limits[1][0]
    21942194    Qmax = Limits[1][1]
     
    23072307
    23082308    return calc(kz, depth, rho, irho, sigma)
     2309   
     2310def makeRefdFFT(Limits,Profile):
     2311    print 'make fft'
     2312    Q,Io = Profile[:2]
     2313    Qmin = Limits[1][0]
     2314    Qmax = Limits[1][1]
     2315    iBeg = np.searchsorted(Q,Qmin)
     2316    iFin = np.searchsorted(Q,Qmax)+1    #include last point
     2317    Qf = np.linspace(0.,Q[iFin-1],5000)
     2318    QI = si.interp1d(Q[iBeg:iFin],Io[iBeg:iFin],bounds_error=False,fill_value=0.0)
     2319    If = QI(Qf)*Qf**4
     2320    R = np.linspace(0.,5000.,5000)
     2321    F = fft.rfft(If)
     2322    return R,F
     2323
    23092324   
    23102325################################################################################
  • 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.