Changeset 2785
- Timestamp:
- Apr 16, 2017 9:00:00 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIpwd.py
r2783 r2785 2128 2128 indx = Negs.nonzero() 2129 2129 name = varyList[indx[0][0]] 2130 if name != 'FltBack' and 'Mag SLD' not in name:2130 if name != 'FltBack' and name.split(';')[1] in ['Thick','Rough']: 2131 2131 Msg += ' negative coefficient for '+name+'!' 2132 2132 raise ValueError -
trunk/GSASIIpwdGUI.py
r2783 r2785 4827 4827 4828 4828 def OnFitModelAll(event): 4829 print 'fit all model' 4830 event.Skip() 4831 4829 choices = G2gd.GetPatternTreeDataNames(G2frame,['REFD',]) 4830 dlg = G2G.G2MultiChoiceDialog(G2frame.dataFrame, 'Sequential REFD refinement', 4831 'Select dataset to include',choices) 4832 names = [] 4833 if dlg.ShowModal() == wx.ID_OK: 4834 for sel in dlg.GetSelections(): 4835 names.append(choices[sel]) 4836 Id = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Sequential REFD results') 4837 if Id: 4838 SeqResult = G2frame.PatternTree.GetItemPyData(Id) 4839 else: 4840 SeqResult = {} 4841 Id = G2frame.PatternTree.AppendItem(parent=G2frame.root,text='Sequential REFD results') 4842 SeqResult['histNames'] = choices 4843 SeqResult = {'SeqPseudoVars':{},'SeqParFitEqList':[]} 4844 else: 4845 dlg.Destroy() 4846 return 4847 dlg.Destroy() 4848 Reverse = False 4849 CopyForward = False 4850 choice = ['Reverse sequence','Copy from prev.'] 4851 dlg = wx.MultiChoiceDialog(G2frame.dataFrame,'Sequential controls','Select controls',choice) 4852 if dlg.ShowModal() == wx.ID_OK: 4853 for sel in dlg.GetSelections(): 4854 if sel: 4855 CopyForward = True 4856 else: 4857 Reverse = True 4858 dlg.Destroy() 4859 dlg = wx.ProgressDialog('REFD Sequential fit','Data set name = '+names[0],len(names), 4860 style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_REMAINING_TIME|wx.PD_CAN_ABORT) 4861 wx.BeginBusyCursor() 4862 if Reverse: 4863 names.reverse() 4864 JModel = None 4865 try: 4866 for i,name in enumerate(names): 4867 print ' Sequential fit for ',name 4868 GoOn = dlg.Update(i,newmsg='Data set name = '+name)[0] 4869 if not GoOn: 4870 break 4871 sId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,name) 4872 if i and CopyForward: 4873 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,sId, 'Models'),JModel) 4874 IProfDict,IProfile = G2frame.PatternTree.GetItemPyData(Id)[:2] 4875 IModel = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,sId, 'Models')) 4876 ISubstances = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,sId, 'Substances')) 4877 ILimits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,sId, 'Limits')) 4878 IfOK,result,varyList,sig,Rvals,covMatrix,parmDict,Msg = G2pwd.REFDRefine(IProfile,IProfDict,Inst,ILimits,ISubstances,IModel) 4879 JModel = copy.deepcopy(IModel) 4880 if not IfOK: 4881 G2frame.ErrorDialog('Failed sequential refinement for data '+name, 4882 ' Msg: '+Msg+'\nYou need to rethink your selection of parameters\n'+ \ 4883 ' Model restored to previous version for'+name) 4884 SeqResult['histNames'] = names[:i] 4885 dlg.Destroy() 4886 break 4887 else: 4888 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,sId, 'Models'),copy.deepcopy(IModel)) 4889 4890 SeqResult[name] = {'variables':result[0],'varyList':varyList,'sig':sig,'Rvals':Rvals, 4891 'covMatrix':covMatrix,'title':name,'parmDict':parmDict} 4892 else: 4893 dlg.Destroy() 4894 print ' ***** Small angle sequential refinement successful *****' 4895 finally: 4896 wx.EndBusyCursor() 4897 G2frame.PatternTree.SetItemPyData(Id,SeqResult) 4898 G2frame.PatternTree.SelectItem(Id) 4899 4832 4900 def ModelPlot(data,x,xr,y): 4833 4901 laySeq = data['Layer Seq'].split() … … 5054 5122 midlayer.Add(wx.StaticText(G2frame.dataDisplay,label=' Den. Mult.: '),0,WACV) 5055 5123 midlayer.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['Layers'][ilay]['DenMul'],0, 5056 nDig=(10,4), typeHint=float,OnLeave=Recalculate),0,WACV)5124 nDig=(10,4),OnLeave=Recalculate),0,WACV) 5057 5125 varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?') 5058 5126 Indx[varBox.GetId()] = [ilay,'DenMul'] … … 5080 5148 nxtlayer.Add(wx.StaticText(G2frame.dataDisplay,label=' Real Den. : '),0,WACV) 5081 5149 nxtlayer.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['Layers'][ilay]['DenMul'],0, 5082 nDig=(10,4), typeHint=float,OnLeave=Recalculate),0,WACV)5150 nDig=(10,4),OnLeave=Recalculate),0,WACV) 5083 5151 varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?') 5084 5152 Indx[varBox.GetId()] = [ilay,'DenMul'] … … 5088 5156 nxtlayer.Add(wx.StaticText(G2frame.dataDisplay,label=' Imag Den. : '),0,WACV) 5089 5157 nxtlayer.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['Layers'][ilay]['iDenMul'],0, 5090 nDig=(10,4), typeHint=float,OnLeave=Recalculate),0,WACV)5158 nDig=(10,4),OnLeave=Recalculate),0,WACV) 5091 5159 varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?') 5092 5160 Indx[varBox.GetId()] = [ilay,'iDenMul'] … … 5100 5168 magLayer.Add(wx.StaticText(G2frame.dataDisplay,label=' Magnetic SLD: '),0,WACV) 5101 5169 magLayer.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['Layers'][ilay]['Mag SLD'],0, 5102 nDig=(10,4), typeHint=float,OnLeave=Recalculate),0,WACV)5170 nDig=(10,4),OnLeave=Recalculate),0,WACV) 5103 5171 varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?') 5104 5172 Indx[varBox.GetId()] = [ilay,'Mag SLD'] … … 5118 5186 parmsline.Add(wx.StaticText(G2frame.dataDisplay,label=' %s: '%(names[parm])),0,WACV) 5119 5187 parmsline.Add(G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data['Layers'][ilay][parm],0, 5120 nDig=(10,2), typeHint=float,OnLeave=Recalculate),0,WACV)5188 nDig=(10,2),OnLeave=Recalculate),0,WACV) 5121 5189 varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?') 5122 5190 Indx[varBox.GetId()] = [ilay,parm]
Note: See TracChangeset
for help on using the changeset viewer.