Changeset 4671 for trunk/GSASIIpwdGUI.py
- Timestamp:
- Dec 12, 2020 1:30:31 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIpwdGUI.py
r4667 r4671 284 284 ################################################################################ 285 285 286 def GetFileBackground(G2frame,xye, Pattern):286 def GetFileBackground(G2frame,xye,background,scale=True): 287 287 bxye = np.zeros(len(xye[1])) 288 if 'BackFile' in Pattern[0]: 289 backfile,mult = Pattern[0]['BackFile'][:2] 288 mult = 1.0 289 if 'background PWDR' in background[1]: 290 backfile,mult = background[1]['background PWDR'][:2] 290 291 if backfile: 291 292 bId = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,backfile) 292 293 if bId: 293 bxye = mult*G2frame.GPXtree.GetItemPyData(bId)[1][1]294 bxye = G2frame.GPXtree.GetItemPyData(bId)[1][1] 294 295 else: 295 296 print('Error: background PWDR {} not found'.format(backfile)) 296 Pattern[0]['BackFile'][0] = '' 297 return bxye 297 background[1]['background PWDR'] = ['',1.0,False] 298 if scale: 299 return bxye*mult 300 else: 301 return bxye 298 302 299 303 def IsHistogramInAnyPhase(G2frame,histoName): … … 641 645 PatternId = G2frame.PatternId 642 646 limits = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Limits'))[1] 647 background = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Background')) 643 648 inst,inst2 = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Instrument Parameters')) 644 649 Pattern = G2frame.GPXtree.GetItemPyData(PatternId) 645 650 profile = Pattern[1] 646 bxye = GetFileBackground(G2frame,profile, Pattern)651 bxye = GetFileBackground(G2frame,profile,background) 647 652 x0 = profile[0] 648 653 iBeg = np.searchsorted(x0,limits[0]) 649 654 iFin = np.searchsorted(x0,limits[1]) 650 655 x = x0[iBeg:iFin] 651 y0 = (profile[1] +bxye)[iBeg:iFin]656 y0 = (profile[1]-bxye)[iBeg:iFin] 652 657 ysig = 1.0*np.std(y0) 653 658 offset = [-1,1] … … 834 839 Pattern = G2frame.GPXtree.GetItemPyData(PatternId) 835 840 data = Pattern[1] 836 fixback = GetFileBackground(G2frame,data, Pattern)841 fixback = GetFileBackground(G2frame,data,background,scale=False) 837 842 peaks['sigDict'],result,sig,Rvals,varyList,parmDict,fullvaryList,badVary = G2pwd.DoPeakFit(FitPgm,peaks['peaks'], 838 843 background,limits,inst,inst2,data,fixback,prevVaryList,oneCycle,controls) #needs wtFactor after controls? … … 881 886 data = Pattern[1] 882 887 wtFactor = Pattern[0]['wtFactor'] 883 bxye = GetFileBackground(G2frame,data, Pattern)888 bxye = GetFileBackground(G2frame,data,background,scale=False) 884 889 dlg = wx.ProgressDialog('Residual','Peak fit Rwp = ',101.0, 885 890 style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_REMAINING_TIME|wx.PD_CAN_ABORT) … … 1137 1142 reflGrid.SetScrollRate(10,10) 1138 1143 G2frame.reflGrid = reflGrid 1139 mainSizer.Add(reflGrid,1,wx.ALL|wx.EXPAND,1) 1144 # mainSizer.Add(reflGrid,1,wx.ALL|wx.EXPAND,1) 1145 mainSizer.Add(reflGrid) 1146 mainSizer.Add(G2G.HelpButton(G2frame.dataWindow,helpIndex=G2frame.dataWindow.helpKey)) 1140 1147 G2frame.dataWindow.SetDataSize() 1141 1148 … … 1157 1164 PKflags = [] 1158 1165 for term in backDict['peaksList']: 1159 PKflags.append(term[1::2]) 1166 PKflags.append(term[1::2]) 1167 FBflag = backDict['background PWDR'][2] 1160 1168 hst = G2frame.GPXtree.GetItemText(G2frame.PatternId) 1161 1169 histList = GetHistsLikeSelected(G2frame) … … 1182 1190 if bkDict['nPeaks'] == backDict['nPeaks']: 1183 1191 for i,term in enumerate(bkDict['peaksList']): 1184 term[1::2] = copy.copy(PKflags[i]) 1192 term[1::2] = copy.copy(PKflags[i]) 1193 backData[1]['background PWDR'] = copy.copy(FBflag) 1185 1194 1186 1195 def OnBackCopy(event): … … 1601 1610 def OnBackPWDR(event): 1602 1611 data[1]['background PWDR'][0] = back.GetValue() 1603 if data[1]['background PWDR'][0]:1612 if len(data[1]['background PWDR'][0]): 1604 1613 curHist = G2frame.GPXtree.GetItemPyData(G2frame.PatternId) 1605 1614 Id = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,data[1]['background PWDR'][0]) … … 1615 1624 data[1]['background PWDR'][0] = back.GetValue() 1616 1625 return 1626 else: 1627 data[1]['background PWDR'][2] = False 1617 1628 CalcBack() 1618 1629 G2plt.PlotPatterns(G2frame,plotType='PWDR') 1630 wx.CallLater(100,UpdateBackground,G2frame,data) 1619 1631 1620 1632 def AfterChange(invalid,value,tc): … … 1622 1634 CalcBack() 1623 1635 G2plt.PlotPatterns(G2frame,plotType='PWDR') 1636 1637 def OnBackFit(event): 1638 data[1]['background PWDR'][2] = not data[1]['background PWDR'][2] 1624 1639 1625 1640 fileSizer = wx.BoxSizer(wx.VERTICAL) … … 1638 1653 backMult = G2G.ValidatedTxtCtrl(G2frame.dataWindow,data[1]['background PWDR'],1,nDig=(10,3),OnLeave=AfterChange) 1639 1654 backSizer.Add(backMult,0,WACV) 1655 if len(data[1]['background PWDR'][0]): 1656 backFit = wx.CheckBox(G2frame.dataWindow,label=' Refine?') 1657 backFit.SetValue(data[1]['background PWDR'][2]) 1658 backFit.Bind(wx.EVT_CHECKBOX, OnBackFit) 1659 backSizer.Add(backFit,0,WACV) 1640 1660 fileSizer.Add(backSizer) 1641 1661 return fileSizer 1642 1662 1643 1663 def CalcBack(PatternId=G2frame.PatternId): 1644 limits = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Limits'))[1] 1645 inst,inst2 = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Instrument Parameters')) 1646 backData = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Background')) 1647 dataType = inst['Type'][0] 1648 insDict = {inskey:inst[inskey][1] for inskey in inst} 1649 parmDict = {} 1650 bakType,bakDict,bakVary = G2pwd.SetBackgroundParms(data) 1651 parmDict.update(bakDict) 1652 parmDict.update(insDict) 1653 pwddata = G2frame.GPXtree.GetItemPyData(PatternId) 1654 xBeg = np.searchsorted(pwddata[1][0],limits[0]) 1655 xFin = np.searchsorted(pwddata[1][0],limits[1]) 1656 fixBack = backData[1]['background PWDR'] 1657 try: #typically bad grid value or no fixed bkg file 1658 Id = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,fixBack[0]) 1659 fixData = G2frame.GPXtree.GetItemPyData(Id) 1660 fixedBkg = {'_fixedVary':False,'_fixedMult':fixBack[1],'_fixedValues':fixData[1][1][xBeg:xFin]} 1661 pwddata[1][4][xBeg:xFin] = G2pwd.getBackground('',parmDict,bakType,dataType,pwddata[1][0][xBeg:xFin],fixedBkg)[0] 1662 except: 1663 pass 1664 limits = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Limits'))[1] 1665 inst,inst2 = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Instrument Parameters')) 1666 backData = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,PatternId, 'Background')) 1667 dataType = inst['Type'][0] 1668 insDict = {inskey:inst[inskey][1] for inskey in inst} 1669 parmDict = {} 1670 bakType,bakDict,bakVary = G2pwd.SetBackgroundParms(data) 1671 parmDict.update(bakDict) 1672 parmDict.update(insDict) 1673 pwddata = G2frame.GPXtree.GetItemPyData(PatternId) 1674 xBeg = np.searchsorted(pwddata[1][0],limits[0]) 1675 xFin = np.searchsorted(pwddata[1][0],limits[1]) 1676 fixBack = GetFileBackground(G2frame,pwddata[1],backData,scale=False) 1677 pwddata[1][4][xBeg:xFin] = G2pwd.getBackground('',parmDict,bakType,dataType,pwddata[1][0][xBeg:xFin],fixBack[xBeg:xFin])[0] 1664 1678 1665 1679 # UpdateBackground execution starts here 1666 1680 if len(data) < 2: #add Debye diffuse & peaks scattering here 1667 data.append({'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[] })1681 data.append({'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[],'background PWDR':['',1.0,False]}) 1668 1682 if 'nPeaks' not in data[1]: 1669 data[1].update({'nPeaks':0,'peaksList':[]}) 1683 data[1].update({'nPeaks':0,'peaksList':[],'background PWDR':['',1.0,False]}) 1684 if 'background PWDR' not in data[1]: 1685 data[1].update({'background PWDR':['',1.0,False]}) 1686 elif len(data[1]['background PWDR']) < 3: 1687 data[1]['background PWDR'].append(False) 1670 1688 G2frame.dataWindow.currentGrids = [] 1671 1689 G2gd.SetDataMenuBar(G2frame,G2frame.dataWindow.BackMenu) … … 5004 5022 G2frame.RefList = '' 5005 5023 phaseName = '' 5024 G2frame.dataWindow.GetSizer().Add(G2G.HelpButton(G2frame.dataWindow,helpIndex=G2frame.dataWindow.helpKey)) 5006 5025 if phaseName: ShowReflTable(phaseName) 5007 5026 G2frame.refBook.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED, OnPageChanged)
Note: See TracChangeset
for help on using the changeset viewer.