Changeset 2777
- Timestamp:
- Apr 12, 2017 3:12:45 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r2770 r2777 282 282 self.ImportReflectometryReaderlist = [] 283 283 self._init_Import_routines('rfd',self.ImportReflectometryReaderlist,'Reflectometry_Data') 284 self.ImportPDFReaderlist = [] 285 self._init_Import_routines('pdf',self.ImportPDFReaderlist,'PDF_Data') 284 286 self.ImportImageReaderlist = [] 285 287 self._init_Import_routines('img',self.ImportImageReaderlist,'Images') … … 1994 1996 1995 1997 def OnImportReflectometry(self,event): 1996 '''Called in response to an Import/ Small AngleData/... menu item1997 to read a small angle diffractiondata set.1998 '''Called in response to an Import/Reflectometry Data/... menu item 1999 to read a reflectometry data set. 1998 2000 dict self.ImportMenuId is used to look up the specific 1999 2001 reader item associated with the menu item, which will be … … 2092 2094 return # success 2093 2095 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 2094 2171 def OnMacroRecordStatus(self,event,setvalue=None): 2095 2172 '''Called when the record macro menu item is used which toggles the … … 2325 2402 # self.ExportLookup[item.GetId()] = 'powder' 2326 2403 2404 ############################################################################### 2405 # Exporters 2406 ############################################################################### 2407 2327 2408 def _Add_ExportMenuItems(self,parent): 2328 2409 # item = parent.Append( … … 2380 2461 self._Add_ImportMenu_smallangle(Import) 2381 2462 self._Add_ImportMenu_reflectometry(Import) 2463 self._Add_ImportMenu_PDF(Import) 2382 2464 2383 2465 #====================================================================== -
trunk/GSASIIIO.py
r2754 r2777 1751 1751 ###################################################################### 1752 1752 class ImportReflectometryData(ImportBaseclass): 1753 '''Defines a base class for the reading of files with small angledata.1753 '''Defines a base class for the reading of files with reflectometry data. 1754 1754 See :ref:`Writing a Import Routine<Import_Routines>` 1755 1755 for an explanation on how to use this class. … … 1782 1782 self.numbanks = 1 1783 1783 self.instdict = {} # place items here that will be transferred to the instrument parameters 1784 1785 ###################################################################### 1786 class 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 1784 1810 1785 1811 ###################################################################### -
trunk/GSASIIgrid.py
r2769 r2777 3066 3066 name = 'PWDR' + name[4:] 3067 3067 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)) 3071 3072 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] 3078 3080 return sampleParm 3079 3081 … … 4775 4777 G2pdG.UpdatePDFGrid(G2frame,data) 4776 4778 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)') 4780 4782 G2plt.PlotISFG(G2frame,data,plotType='G(R)') 4781 4783 elif G2frame.PatternTree.GetItemText(parentID) == 'Phases': -
trunk/GSASIIplot.py
r2774 r2777 2504 2504 else: # a profile point, e.g. a peak 2505 2505 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.]) 2508 2508 Peaks['Peaks'] = G2mth.sortArray(Peaks['Peaks'],0,reverse=False) 2509 2509 PlotISFG(G2frame,data,peaks=Peaks,newPlot=False) … … 2570 2570 Page.Choice = () 2571 2571 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']) 2574 2579 if G2frame.SinglePlot: 2575 2580 if 'G(R)' not in data: … … 2691 2696 Plot.add_collection(line) 2692 2697 wx.EndBusyCursor() 2693 if plotType == 'G(R)' :2698 if plotType == 'G(R)' and numbDen: 2694 2699 Xb = [0.,2.5] 2695 2700 Yb = [0.,-10.*np.pi*numbDen] -
trunk/GSASIIpwd.py
r2776 r2777 24 24 import numpy.ma as ma 25 25 import random as rand 26 from numpy.fft import ifft, fft, fftshift26 import numpy.fft as fft 27 27 import scipy.interpolate as si 28 28 import scipy.stats as st … … 289 289 ''' 290 290 auxPlot = [] 291 import scipy.fftpack as ft292 291 Ibeg = np.searchsorted(xydata['Sample'][1][0],limits[0]) 293 292 Ifin = np.searchsorted(xydata['Sample'][1][0],limits[1])+1 … … 371 370 mul = int(round(2.*np.pi*nR/(data.get('Rmax',100.)*qLimits[1]))) 372 371 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(f t.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]) 374 373 if data.get('noRing',True): 375 374 xydata['GofR'][1][1] = np.where(xydata['GofR'][1][0]<0.5,0.,xydata['GofR'][1][1]) … … 452 451 453 452 def MakeRDF(RDFcontrols,background,inst,pwddata): 454 import scipy.fftpack as ft455 453 import scipy.signal as signal 456 454 auxPlot = [] … … 484 482 # auxPlot.append([Qpoints,Qdata,'interpolate:'+RDFcontrols['Smooth']]) 485 483 # 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]) 487 486 auxPlot.append([R[:iFin],DofR[:iFin],'D(R)']) 488 487 return auxPlot … … 692 691 if len(np.nonzero(FCJ)[0])>5: 693 692 z = np.column_stack([Norm,Cauchy,FCJ]).T 694 Z = fft (z)695 Df = ifft(Z.prod(axis=0)).real693 Z = fft.fft(z) 694 Df = fft.ifft(Z.prod(axis=0)).real 696 695 else: 697 696 z = np.column_stack([Norm,Cauchy]).T 698 Z = fft (z)699 Df = fft shift(ifft(Z.prod(axis=0))).real697 Z = fft.fft(z) 698 Df = fft.fftshift(fft.ifft(Z.prod(axis=0))).real 700 699 Df /= np.sum(Df) 701 700 Df = si.interp1d(x,Df,bounds_error=False,fill_value=0.0) … … 2027 2026 rho[ilay] += parmDict[cid+'Mag SLD'] 2028 2027 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 2030 2030 return Ic 2031 2031 … … 2052 2052 return 1.5*(MMax-Mmin) 2053 2053 2054 Q,Io,wt,Ic,Ib, Ifb= Profile[:6]2054 Q,Io,wt,Ic,Ib,Qsig = Profile[:6] 2055 2055 if data.get('2% weight'): 2056 2056 wt = 1./(0.02*Io)**2 … … 2190 2190 def REFDModelFxn(Profile,Inst,Limits,Substances,data): 2191 2191 2192 Q,Io,wt,Ic,Ib, Ifb= Profile[:6]2192 Q,Io,wt,Ic,Ib,Qsig = Profile[:6] 2193 2193 Qmin = Limits[1][0] 2194 2194 Qmax = Limits[1][1] … … 2307 2307 2308 2308 return calc(kz, depth, rho, irho, sigma) 2309 2310 def 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 2309 2324 2310 2325 ################################################################################ -
trunk/GSASIIpwdGUI.py
r2776 r2777 4852 4852 data['2% weight'] = weight.GetValue() 4853 4853 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 4854 4866 controlSizer = wx.BoxSizer(wx.VERTICAL) 4855 4867 resol = wx.BoxSizer(wx.HORIZONTAL) … … 4876 4888 weight.Bind(wx.EVT_CHECKBOX, OnWeight) 4877 4889 minimiz.Add(weight,0,WACV) 4878 4879 #Recomb':0.5, needed??4880 4890 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) 4881 4900 return controlSizer 4882 4901 … … 5910 5929 powName = 'PWDR'+dataFile[4:] 5911 5930 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 5952 5969 if G2frame.dataDisplay: 5953 5970 G2frame.dataFrame.Clear() 5954 5971 G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.PDFMenu) 5955 5972 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) 5957 5978 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame) 5958 5979 G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyPDFControls, id=G2gd.wxID_PDFCOPYCONTROLS) … … 5964 5985 G2frame.dataFrame.Bind(wx.EVT_MENU, OnComputeAllPDF, id=G2gd.wxID_PDFCOMPUTEALL) 5965 5986 5966 ElList = data['ElList']5967 5987 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) 5974 5996 mainSizer.Add(DiffSizer(),0,WACV) 5975 5997 mainSizer.Layout() … … 6037 6059 wx.CallAfter(UpdatePDFPeaks,G2frame,peaks,data) 6038 6060 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 6041 6071 colLabels = ['position','magnitude','sig','refine','Atom A','Atom B','Bond No.'] 6042 6072 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',] 6044 6074 rowLabels = range(len(peaks['Peaks'])) 6045 6075 peakTable = G2G.Table(peaks['Peaks'],rowLabels=rowLabels,colLabels=colLabels,types=Types) … … 6050 6080 PDFPeaks.AutoSizeColumns(False) 6051 6081 PDFPeaks.Bind(wg.EVT_GRID_LABEL_LEFT_DCLICK, PeaksRefine) 6082 PDFPeaks.Bind(wg.EVT_GRID_CELL_LEFT_DCLICK, ElTypeSelect) 6052 6083 6053 6084 peakBox = wx.BoxSizer(wx.VERTICAL) … … 6110 6141 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,pId,'PDF Peaks')) 6111 6142 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 6112 6147 SeqResult[name] = {'variables':vals,'varyList':varyList,'sig':sigList,'Rvals':Rvals, 6113 6148 'covMatrix':np.eye(len(varyList)),'title':name,'parmDict':parmDict}
Note: See TracChangeset
for help on using the changeset viewer.