Changeset 2708 for trunk/GSASIIpwdGUI.py
- Timestamp:
- Feb 16, 2017 1:58:46 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIpwdGUI.py
r2705 r2708 4635 4635 ''' 4636 4636 import scipy.optimize as opt 4637 SetUp = SetupPDFEval(G2frame,data) 4638 Min,Init,Done = SetUp 4637 Min,Init,Done = SetupPDFEval(G2frame,data) 4639 4638 xstart = Init() 4639 bakMul = data['Sample Bkg.']['Mult'] 4640 4640 if showFit: 4641 4641 rms = Min(xstart) 4642 4642 print(' Optimizing corrections to improve G(r) at low r') 4643 print(' start: Flat Bkg={:.1f}, BackRatio={:.3f}, Ruland={:.3f} (RMS:{:.4f})'.format( 4644 data['Flat Bkg'],data['BackRatio'],data['Ruland'],rms)) 4645 4646 res = opt.minimize(Min,xstart,bounds=([0,None],[0,1],[0.01,1]), 4647 method='L-BFGS-B',options={'maxiter':maxCycles},tol=0.001) 4643 if data['Sample Bkg.']['Refine']: 4644 print(' start: Ruland={:.3f}, Sample Bkg mult={:.3f} (RMS:{:.4f})'.format( 4645 data['Ruland'],data['Sample Bkg.']['Mult'],rms)) 4646 else: 4647 print(' start: Flat Bkg={:.1f}, BackRatio={:.3f}, Ruland={:.3f} (RMS:{:.4f})'.format( 4648 data['Flat Bkg'],data['BackRatio'],data['Ruland'],rms)) 4649 if data['Sample Bkg.']['Refine']: 4650 res = opt.minimize(Min,xstart,bounds=([0.01,1],[1.2*bakMul,0.8*bakMul]), 4651 method='L-BFGS-B',options={'maxiter':maxCycles},tol=0.001) 4652 else: 4653 res = opt.minimize(Min,xstart,bounds=([1,None],[0,1],[0.01,1]), 4654 method='L-BFGS-B',options={'maxiter':maxCycles},tol=0.001) 4648 4655 Done(res['x']) 4649 4656 if showFit: … … 4652 4659 else: 4653 4660 msg = 'Not Converged' 4654 print(' end: Flat Bkg={:.1f}, BackRatio={:.3f}, Ruland={:.3f} (RMS:{:.4f}) *** {} ***\n'.format( 4655 data['Flat Bkg'],data['BackRatio'],data['Ruland'],res['fun'],msg)) 4661 if data['Sample Bkg.']['Refine']: 4662 print(' end: Ruland={:.3f}, Sample Bkg mult={:.3f} (RMS:{:.4f}) *** {} ***\n'.format( 4663 data['Ruland'],data['Sample Bkg.']['Mult'],res['fun'],msg)) 4664 else: 4665 print(' end: Flat Bkg={:.1f}, BackRatio={:.3f}, Ruland={:.3f}) *** {} ***\n'.format( 4666 data['Flat Bkg'],data['BackRatio'],data['Ruland'],res['fun'],msg)) 4656 4667 return res['success'] 4657 4668 … … 4677 4688 the min & max values are between 0 and 1. 4678 4689 ''' 4679 F,B,R = arg 4680 Data['Flat Bkg'] = F*BkgMax 4681 Data['BackRatio'] = B 4690 if Data['Sample Bkg.']['Refine']: 4691 R,S = arg 4692 Data['Sample Bkg.']['Mult'] = S 4693 else: 4694 F,B,R = arg 4695 Data['Flat Bkg'] = F*BkgMax 4696 Data['BackRatio'] = B 4682 4697 Data['Ruland'] = R/10. 4683 4698 G2pwd.CalcPDF(Data,inst,limits,xydata) … … 4690 4705 '''Get the current ['Flat Bkg','BackRatio','Ruland'] with scaling 4691 4706 ''' 4707 if data['Sample Bkg.']['Refine']: 4708 return [max(10*data['Ruland'],.05),data['Sample']['Mult']] 4692 4709 try: 4693 4710 F = data['Flat Bkg']/BkgMax 4694 4711 except: 4695 F = 04712 F = 10 4696 4713 return [F,data['BackRatio'],max(10*data['Ruland'],.05)] 4697 4714 def SetFinalVals(arg): … … 4699 4716 scaled, refined values and plot corrected region of G(r) 4700 4717 ''' 4701 F,B,R = arg 4702 data['Flat Bkg'] = F*BkgMax 4703 data['BackRatio'] = B 4718 if data['Sample Bkg.']['Refine']: 4719 R,S = arg 4720 data['Sample Bkg.']['Mult'] = S 4721 else: 4722 F,B,R = arg 4723 data['Flat Bkg'] = F*BkgMax 4724 data['BackRatio'] = B 4704 4725 data['Ruland'] = R/10. 4705 4726 G2pwd.CalcPDF(data,inst,limits,xydata) … … 4741 4762 wx.CallLater(100,UpdatePDFGrid,G2frame,data) 4742 4763 wx.CallAfter(OnComputePDF,None) 4764 4765 def OnRefMult(event): 4766 item['Refine'] = refMult.GetValue() 4743 4767 4744 4768 item = data[key] … … 4761 4785 mulBox.Add(multSpin,0,WACV) 4762 4786 fileSizer.Add(mulBox,0,WACV) 4787 if 'Refine' in item: 4788 refMult = wx.CheckBox(parent=G2frame.dataDisplay,label='Refine?') 4789 refMult.SetValue(item['Refine']) 4790 refMult.Bind(wx.EVT_CHECKBOX, OnRefMult) 4791 fileSizer.Add(refMult,0,WACV) 4792 else: 4793 fileSizer.Add((5,5),0) 4763 4794 4764 4795 def ResetFlatBkg(): … … 4788 4819 PDFfileSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=str),0,WACV) 4789 4820 PDFfileSizer.Add((5,5),0) 4790 fileSizer = wx.FlexGridSizer(0, 4,5,1)4821 fileSizer = wx.FlexGridSizer(0,5,5,1) 4791 4822 select = ['Sample Bkg.','Container'] 4792 4823 if data['Container']['Name']: … … 4887 4918 finally: 4888 4919 wx.EndBusyCursor() 4920 OnComputePDF(event) 4889 4921 wx.CallAfter(UpdatePDFGrid,G2frame,data) 4890 OnComputePDF(event)4891 4922 4892 4923 def AfterChangeNoRefresh(invalid,value,tc): … … 4896 4927 def OnDetType(event): 4897 4928 data['DetType'] = detType.GetValue() 4929 wx.CallAfter(OnComputePDF,None) 4898 4930 wx.CallAfter(UpdatePDFGrid,G2frame,data) 4899 wx.CallAfter(OnComputePDF,None)4900 4931 4901 4932 def OnFlatSpin(event): … … 5043 5074 G2frame.ErrorDialog('Nothing to copy controls to','There must be more than one "PDF" pattern') 5044 5075 return 5045 dlg = G2G.G2MultiChoiceDialog(G2frame,'Copy PDF controls','Copy controls from '+Source+' to:',TextList) 5076 od = {'label_1':'Only copy flags','value_1':False} 5077 dlg = G2G.G2MultiChoiceDialog(G2frame,'Copy PDF controls','Copy controls from '+Source+' to:',TextList,extraOpts=od) 5046 5078 try: 5047 5079 if dlg.ShowModal() == wx.ID_OK: … … 5050 5082 id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,item) 5051 5083 olddata = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'PDF Controls')) 5052 sample = olddata['Sample'] 5053 olddata.update(copy.deepcopy(data)) 5054 olddata['Sample'] = sample 5084 if od['value_1']: 5085 olddata['Sample Bkg.']['Refine'] = data['Sample Bkg.']['Refine'] #only one flag 5086 else: 5087 sample = olddata['Sample'] 5088 olddata.update(copy.deepcopy(data)) 5089 olddata['Sample'] = sample 5055 5090 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id, 'PDF Controls'),olddata) 5056 5091 Status.SetStatusText('PDF controls copied') … … 5170 5205 return 5171 5206 od = {'label_1':'Optimize PDFs','value_1':True} 5172 dlg = G2G.G2MultiChoiceDialog( 5173 G2frame.dataFrame, 'Select PDFs to compute','Select PDFs', 5207 dlg = G2G.G2MultiChoiceDialog(G2frame.dataFrame, 'Select PDFs to compute','Select PDFs', 5174 5208 choices,extraOpts=od) 5175 5209 try: … … 5198 5232 pgbar.Destroy() 5199 5233 break 5200 Data = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,id,'PDF Controls')) 5234 pId = G2gd.GetPatternTreeItemId(G2frame,id,'PDF Controls') 5235 Data = G2frame.PatternTree.GetItemPyData(pId) 5201 5236 print(' Computing {}'.format(Name)) 5202 5237 computePDF(G2frame,Data) 5203 5238 if od['value_1']: 5204 5239 notConverged += not OptimizePDF(G2frame,Data,maxCycles=10) 5240 computePDF(G2frame,Data) 5241 G2frame.PatternTree.SetItemPyData(pId,Data) 5205 5242 id, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 5206 5243 finally: … … 5259 5296 if data['DetType'] == 'Image plate': 5260 5297 data['DetType'] = 'Area detector' 5298 if 'Refine' not in data['Sample Bkg.']: 5299 data['Sample Bkg.']['Refine'] = False 5261 5300 if G2frame.dataDisplay: 5262 5301 G2frame.dataFrame.Clear()
Note: See TracChangeset
for help on using the changeset viewer.