Changeset 2785


Ignore:
Timestamp:
Apr 16, 2017 9:00:00 AM (5 years ago)
Author:
vondreele
Message:

add a fit all option for REFD patterns

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwd.py

    r2783 r2785  
    21282128            indx = Negs.nonzero()
    21292129            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']:
    21312131                Msg += ' negative coefficient for '+name+'!'
    21322132                raise ValueError
  • trunk/GSASIIpwdGUI.py

    r2783 r2785  
    48274827       
    48284828    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               
    48324900    def ModelPlot(data,x,xr,y):
    48334901        laySeq = data['Layer Seq'].split()
     
    50545122                    midlayer.Add(wx.StaticText(G2frame.dataDisplay,label=' Den. Mult.: '),0,WACV)
    50555123                    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)
    50575125                    varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?')
    50585126                    Indx[varBox.GetId()] = [ilay,'DenMul']
     
    50805148                nxtlayer.Add(wx.StaticText(G2frame.dataDisplay,label=' Real Den. : '),0,WACV)               
    50815149                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)
    50835151                varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?')
    50845152                Indx[varBox.GetId()] = [ilay,'DenMul']
     
    50885156                nxtlayer.Add(wx.StaticText(G2frame.dataDisplay,label=' Imag Den. : '),0,WACV)               
    50895157                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)
    50915159                varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?')
    50925160                Indx[varBox.GetId()] = [ilay,'iDenMul']
     
    51005168                    magLayer.Add(wx.StaticText(G2frame.dataDisplay,label=' Magnetic SLD: '),0,WACV)
    51015169                    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)
    51035171                    varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?')
    51045172                    Indx[varBox.GetId()] = [ilay,'Mag SLD']
     
    51185186                        parmsline.Add(wx.StaticText(G2frame.dataDisplay,label=' %s: '%(names[parm])),0,WACV)
    51195187                        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)
    51215189                        varBox = wx.CheckBox(G2frame.dataDisplay,label='Refine?')
    51225190                        Indx[varBox.GetId()] = [ilay,parm]
Note: See TracChangeset for help on using the changeset viewer.