Changeset 2688
- Timestamp:
- Feb 3, 2017 2:23:47 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIgrid.py
r2687 r2688 2948 2948 sampleParmDict[item].append(data[name]['parmDict'].get(item,0)) 2949 2949 else: 2950 if 'PDF' in name: 2951 name = 'PWDR' + name[4:] 2950 2952 Id = GetPatternTreeItemId(G2frame,G2frame.root,name) 2951 2953 sampleData = G2frame.PatternTree.GetItemPyData(GetPatternTreeItemId(G2frame,Id,'Sample Parameters')) -
trunk/GSASIIimgGUI.py
r2687 r2688 207 207 vals.append(parmDict['dist']) 208 208 varyList.append('dist') 209 sigList.append( 0.0)209 sigList.append(None) 210 210 vals.append(Data['setdist']) 211 211 varyList.append('setdist') 212 sigList.append( 0.01)212 sigList.append(None) 213 213 SeqResult[name] = {'variables':vals,'varyList':varyList,'sig':sigList,'Rvals':[], 214 214 'covMatrix':np.eye(len(varyList)),'title':name,'parmDict':parmDict} … … 1980 1980 variables.append(item['Ivar']) 1981 1981 varyList.append('%d;Ivar'%(j)) 1982 sig.append( 0.)1982 sig.append(None) 1983 1983 SeqResult[name] = {'variables':variables,'varyList':varyList,'sig':sig,'Rvals':[], 1984 1984 'covMatrix':np.eye(len(variables)),'title':name,'parmDict':parmDict} -
trunk/GSASIIobj.py
r2675 r2688 1356 1356 'M([XYZ])sin$' : 'Sin mag. moment wave for \\1', 1357 1357 'M([XYZ])cos$' : 'Cos mag. moment wave for \\1', 1358 # PDF peak parms (l:<var>;l = peak no.) 1359 'PDFpos' : 'PDF peak position', 1360 'PDFmag' : 'PDF peak magnitude', 1361 'PDFsig' : 'PDF peak std. dev.', 1358 1362 # SASD vars (l:<var>;l = component) 1359 1363 'Aspect ratio' : 'Particle aspect ratio', -
trunk/GSASIIpwd.py
r2681 r2688 383 383 varyList.append('slope') 384 384 for i,peak in enumerate(peaks['Peaks']): 385 parmDict[ str(i)+':pos'] = peak[0]386 parmDict[ str(i)+':mag'] = peak[1]387 parmDict[ str(i)+':sig'] = peak[2]385 parmDict['PDFpos;'+str(i)] = peak[0] 386 parmDict['PDFmag;'+str(i)] = peak[1] 387 parmDict['PDFsig;'+str(i)] = peak[2] 388 388 if 'P' in peak[3]: 389 varyList.append( str(i)+':pos')389 varyList.append('PDFpos;'+str(i)) 390 390 if 'M' in peak[3]: 391 varyList.append( str(i)+':mag')391 varyList.append('PDFmag;'+str(i)) 392 392 if 'S' in peak[3]: 393 varyList.append( str(i)+':sig')393 varyList.append('PDFsig;'+str(i)) 394 394 return parmDict,varyList 395 395 … … 398 398 peaks['Background'][1][1] = parmDict['slope'] 399 399 for i,peak in enumerate(peaks['Peaks']): 400 if str(i)+':pos'in varyList:401 peak[0] = parmDict[ str(i)+':pos']402 if str(i)+':mag'in varyList:403 peak[1] = parmDict[ str(i)+':mag']404 if str(i)+':sig'in varyList:405 peak[2] = parmDict[ str(i)+':sig']400 if 'PDFpos;'+str(i) in varyList: 401 peak[0] = parmDict['PDFpos;'+str(i)] 402 if 'PDFmag;'+str(i) in varyList: 403 peak[1] = parmDict['PDFmag;'+str(i)] 404 if 'PDFsig;'+str(i) in varyList: 405 peak[2] = parmDict['PDFsig;'+str(i)] 406 406 407 407 … … 411 411 while True: 412 412 try: 413 pos = parmdict[ str(ipeak)+':pos']414 mag = parmdict[ str(ipeak)+':mag']415 wid = parmdict[ str(ipeak)+':sig']413 pos = parmdict['PDFpos;'+str(ipeak)] 414 mag = parmdict['PDFmag;'+str(ipeak)] 415 wid = parmdict['PDFsig;'+str(ipeak)] 416 416 wid2 = 2.*wid**2 417 417 Z += mag*rs2pi*np.exp(-(Xdata-pos)**2/wid2)/wid … … 424 424 M = CalcPDFpeaks(parmdict,xdata)-ydata 425 425 return M 426 427 426 428 print 'Do PDF peak fitting'429 427 newpeaks = copy.copy(peaks) 430 428 iBeg = np.searchsorted(data[1][0],newpeaks['Limits'][0]) … … 435 433 if not len(varyList): 436 434 print ' Nothing varied' 437 return newpeaks 438 439 begin = time.time()435 return newpeaks,None,None,None,None,None 436 437 Rvals = {} 440 438 values = np.array(Dict2Values(parmDict, varyList)) 441 439 result = so.leastsq(errPDFProfile,values,full_output=True,ftol=0.0001, 442 440 args=(X,Y,parmDict,varyList)) 443 ncyc = int(result[2]['nfev']/2)444 runtime = time.time()-begin445 print 'PDF fitpeak time = %8.3fs, %8.3fs/cycle'%(runtime,runtime/ncyc)446 441 # chisq = np.sum(result[2]['fvec']**2) 447 442 Values2Dict(parmDict, varyList, result[0]) 448 443 SetParms(peaks,parmDict,varyList) 449 444 chisq = np.sum(result[2]['fvec']**2)/(len(X)-len(values)) #reduced chi^2 = M/(Nobs-Nvar) 445 Rvals['Rwp'] = np.sqrt(chisq/np.sum(Y**2))*100. #to % 446 Rvals['GOF'] = chisq/(len(X)-len(varyList)) #reduced chi^2 447 sigList = list(np.sqrt(chisq*np.diag(result[1]))) 450 448 Z = CalcPDFpeaks(parmDict,X) 451 449 newpeaks['calc'] = [X,Z] 452 return newpeaks 450 return newpeaks,result[0],varyList,sigList,parmDict,Rvals 453 451 454 452 def MakeRDF(RDFcontrols,background,inst,pwddata): -
trunk/GSASIIpwdGUI.py
r2685 r2688 429 429 x = x0[iBeg:iFin] 430 430 y0 = profile[1][iBeg:iFin] 431 y1 = copy.copy(y0) 432 ysig = 0.5*np.std(y1) 431 ysig = 0.5*np.std(y0) 433 432 offset = [-1,1] 434 433 ymask = ma.array(y0,mask=(y0<ysig)) … … 5383 5382 G2frame.ErrorDialog('No peaks!','Nothing to fit!') 5384 5383 return 5385 newpeaks = G2pwd.PDFPeakFit(peaks,data['G(R)']) 5384 newpeaks = G2pwd.PDFPeakFit(peaks,data['G(R)'])[0] 5386 5385 print 'PDF peak fit finished' 5387 5386 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'PDF Peaks'),newpeaks) … … 5390 5389 5391 5390 def OnFitAllPDFpeaks(event): 5392 print 'fit all pdf peaks' 5391 Names = G2gd.GetPatternTreeDataNames(G2frame,['PDF ',]) 5392 dlg = G2G.G2MultiChoiceDialog(G2frame,'PDF peak fitting','Select PDFs to fit:',Names) 5393 try: 5394 if dlg.ShowModal() == wx.ID_OK: 5395 SeqResult = {} 5396 items = dlg.GetSelections() 5397 G2frame.EnablePlot = False 5398 names = [] 5399 for item in items: 5400 name = Names[item] 5401 names.append(name) 5402 print 'PDF peak fitting',name 5403 pId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 5404 data = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,pId, 'PDF Controls')) 5405 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,pId,'PDF Peaks')) 5406 newpeaks,vals,varyList,sigList,parmDict,Rvals = G2pwd.PDFPeakFit(peaks,data['G(R)']) 5407 SeqResult[name] = {'variables':vals,'varyList':varyList,'sig':sigList,'Rvals':Rvals, 5408 'covMatrix':np.eye(len(varyList)),'title':name,'parmDict':parmDict} 5409 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,pId, 'PDF Peaks'),newpeaks) 5410 SeqResult['histNames'] = names 5411 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Sequential PDF peak fit results') 5412 if Id: 5413 G2frame.PatternTree.SetItemPyData(Id,SeqResult) 5414 else: 5415 Id = G2frame.PatternTree.AppendItem(parent=G2frame.root,text='Sequential PDF peak fit results') 5416 G2frame.PatternTree.SetItemPyData(Id,SeqResult) 5417 finally: 5418 dlg.Destroy() 5419 G2plt.PlotISFG(G2frame,data,peaks=newpeaks,newPlot=False) 5420 wx.CallAfter(UpdatePDFPeaks,G2frame,newpeaks,data) 5421 print 'All PDFs peak fitted - results in Sequential PDF peak fit results' 5393 5422 5394 5423 def OnClearPDFpeaks(event):
Note: See TracChangeset
for help on using the changeset viewer.