Changeset 1240


Ignore:
Timestamp:
Mar 7, 2014 4:18:27 PM (8 years ago)
Author:
vondreele
Message:

add control for copying parms from one histogram to next in a sequential refinement - needs to account for reverse order & gaps

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r1236 r1240  
    5858   
    5959htmlFirstUse = True
     60WACV = wx.ALIGN_CENTER_VERTICAL
    6061
    6162[ wxID_FOURCALC, wxID_FOURSEARCH, wxID_FOURCLEAR, wxID_PEAKSMOVE, wxID_PEAKSCLEAR,
     
    995996            self.force = wx.RadioBox(panel,-1,'Force to unit cell?',choices=choice)
    996997            self.force.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    997             mainSizer.Add(self.force,0,wx.ALIGN_CENTER_VERTICAL)
     998            mainSizer.Add(self.force,0,WACV)
    998999        mainSizer.Add((5,5),0)
    9991000        if SGData['SGInv']:
     
    10011002            self.inv = wx.RadioBox(panel,-1,'Choose inversion?',choices=choice)
    10021003            self.inv.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    1003             mainSizer.Add(self.inv,0,wx.ALIGN_CENTER_VERTICAL)
     1004            mainSizer.Add(self.inv,0,WACV)
    10041005        mainSizer.Add((5,5),0)
    10051006        if SGData['SGLatt'] != 'P':
     
    10071008            self.latt = wx.RadioBox(panel,-1,'Choose cell centering?',choices=LattOp)
    10081009            self.latt.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    1009             mainSizer.Add(self.latt,0,wx.ALIGN_CENTER_VERTICAL)
     1010            mainSizer.Add(self.latt,0,WACV)
    10101011        mainSizer.Add((5,5),0)
    10111012        if SGData['SGLaue'] in ['-1','2/m','mmm','4/m','4/mmm']:
     
    10191020            majorDimension=Ncol)
    10201021        self.oprs.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    1021         mainSizer.Add(self.oprs,0,wx.ALIGN_CENTER_VERTICAL)
     1022        mainSizer.Add(self.oprs,0,WACV)
    10221023        mainSizer.Add((5,5),0)
    1023         mainSizer.Add(wx.StaticText(panel,-1,"   Choose unit cell?"),0,wx.ALIGN_CENTER_VERTICAL)
     1024        mainSizer.Add(wx.StaticText(panel,-1,"   Choose unit cell?"),0,WACV)
    10241025        mainSizer.Add((5,5),0)
    10251026        cellSizer = wx.BoxSizer(wx.HORIZONTAL)
     
    10321033            self.cell[-1].SetValue(0)
    10331034            self.cell[-1].Bind(wx.EVT_SPINCTRL, self.OnOpSelect)
    1034             cellSizer.Add(self.cell[-1],0,wx.ALIGN_CENTER_VERTICAL)
     1035            cellSizer.Add(self.cell[-1],0,WACV)
    10351036        mainSizer.Add(cellSizer,0,)
    10361037        if self.New:
     
    10381039            self.new = wx.RadioBox(panel,-1,'Generate new positions?',choices=choice)
    10391040            self.new.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    1040             mainSizer.Add(self.new,0,wx.ALIGN_CENTER_VERTICAL)
     1041            mainSizer.Add(self.new,0,WACV)
    10411042        mainSizer.Add((5,5),0)
    10421043
     
    11281129        mainSizer = wx.BoxSizer(wx.VERTICAL)
    11291130        mainSizer.Add(wx.StaticText(self.panel,-1,'Controls for phase '+data['Name']),
    1130             0,wx.ALIGN_CENTER_VERTICAL|wx.LEFT,10)
     1131            0,WACV|wx.LEFT,10)
    11311132        mainSizer.Add((10,10),1)
    11321133       
    11331134        radiiSizer = wx.FlexGridSizer(2,3,5,5)
    1134         radiiSizer.Add(wx.StaticText(self.panel,-1,' Type'),0,wx.ALIGN_CENTER_VERTICAL)
    1135         radiiSizer.Add(wx.StaticText(self.panel,-1,'Bond radii'),0,wx.ALIGN_CENTER_VERTICAL)
    1136         radiiSizer.Add(wx.StaticText(self.panel,-1,'Angle radii'),0,wx.ALIGN_CENTER_VERTICAL)
     1135        radiiSizer.Add(wx.StaticText(self.panel,-1,' Type'),0,WACV)
     1136        radiiSizer.Add(wx.StaticText(self.panel,-1,'Bond radii'),0,WACV)
     1137        radiiSizer.Add(wx.StaticText(self.panel,-1,'Angle radii'),0,WACV)
    11371138        self.objList = {}
    11381139        for id,item in enumerate(self.data['AtomTypes']):
    1139             radiiSizer.Add(wx.StaticText(self.panel,-1,' '+item),0,wx.ALIGN_CENTER_VERTICAL)
     1140            radiiSizer.Add(wx.StaticText(self.panel,-1,' '+item),0,WACV)
    11401141            bRadii = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['BondRadii'][id]),style=wx.TE_PROCESS_ENTER)
    11411142            self.objList[bRadii.GetId()] = ['BondRadii',id]
    11421143            bRadii.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal)
    11431144            bRadii.Bind(wx.EVT_KILL_FOCUS,self.OnRadiiVal)
    1144             radiiSizer.Add(bRadii,0,wx.ALIGN_CENTER_VERTICAL)
     1145            radiiSizer.Add(bRadii,0,WACV)
    11451146            aRadii = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['AngleRadii'][id]),style=wx.TE_PROCESS_ENTER)
    11461147            self.objList[aRadii.GetId()] = ['AngleRadii',id]
    11471148            aRadii.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal)
    11481149            aRadii.Bind(wx.EVT_KILL_FOCUS,self.OnRadiiVal)
    1149             radiiSizer.Add(aRadii,0,wx.ALIGN_CENTER_VERTICAL)
     1150            radiiSizer.Add(aRadii,0,WACV)
    11501151        mainSizer.Add(radiiSizer,0,wx.EXPAND)
    11511152        factorSizer = wx.FlexGridSizer(2,2,5,5)
    11521153        Names = ['Bond','Angle']
    11531154        for i,name in enumerate(Names):
    1154             factorSizer.Add(wx.StaticText(self.panel,-1,name+' search factor'),0,wx.ALIGN_CENTER_VERTICAL)
     1155            factorSizer.Add(wx.StaticText(self.panel,-1,name+' search factor'),0,WACV)
    11551156            bondFact = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['Factors'][i]),style=wx.TE_PROCESS_ENTER)
    11561157            self.objList[bondFact.GetId()] = ['Factors',i]
     
    17871788            else:               
    17881789                ch = HelpButton(panel,G2obj.fmtVarDescr(name))
    1789                 subSizer.Add(ch,0,wx.LEFT|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_CENTER,1)
     1790                subSizer.Add(ch,0,wx.LEFT|wx.RIGHT|WACV|wx.ALIGN_CENTER,1)
    17901791            subSizer.Add(wx.StaticText(panel,wx.ID_ANY,str(name)))
    17911792            if name in varyList:
     
    32303231    if 'FreePrm3' not in data:
    32313232        data['FreePrm3'] = 'Applied load (MN)'
     3233    if 'Copy2Next' not in data:
     3234        data['Copy2Next'] = False
     3235    if 'Reverse Seq' not in data:
     3236        data['Reverse Seq'] = False   
     3237     
     3238   
    32323239    #end patch
    32333240
     
    32543261        def OnReverse(event):
    32553262            data['Reverse Seq'] = reverseSel.GetValue()
     3263           
     3264        def OnCopySel(event):
     3265            data['Copy2Next'] = copySel.GetValue()
    32563266                   
    3257         seqSizer = wx.BoxSizer(wx.HORIZONTAL)
    3258         seqSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sequential Refinement Powder Data: '),0,wx.ALIGN_CENTER_VERTICAL)
     3267        seqSizer = wx.BoxSizer(wx.VERTICAL)
     3268        dataSizer = wx.BoxSizer(wx.HORIZONTAL)
     3269        dataSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Sequential Refinement Powder Data: '),0,WACV)
    32593270        selSeqData = wx.Button(G2frame.dataDisplay,-1,label=' Select data')
    32603271        selSeqData.Bind(wx.EVT_BUTTON,OnSelectData)
    3261         seqSizer.Add(selSeqData,0,wx.ALIGN_CENTER_VERTICAL)
    3262         seqSizer.Add((5,0),0)
    3263         reverseSel = wx.CheckBox(G2frame.dataDisplay,-1,label=' Reverse order?')
    3264         reverseSel.Bind(wx.EVT_CHECKBOX,OnReverse)
    3265         if 'Seq Data' not in data:
    3266             reverseSel.Enable(False)
    3267         if 'Reverse Seq' in data:
     3272        dataSizer.Add(selSeqData,0,WACV)
     3273        seqSizer.Add(dataSizer,0)
     3274        if 'Seq Data' in data:
     3275            selSizer = wx.BoxSizer(wx.HORIZONTAL)
     3276            reverseSel = wx.CheckBox(G2frame.dataDisplay,-1,label=' Reverse order?')
     3277            reverseSel.Bind(wx.EVT_CHECKBOX,OnReverse)
    32683278            reverseSel.SetValue(data['Reverse Seq'])
    3269         seqSizer.Add(reverseSel,0,wx.ALIGN_CENTER_VERTICAL)
     3279            selSizer.Add(reverseSel,0,WACV)
     3280            copySel =  wx.CheckBox(G2frame.dataDisplay,-1,label=' Copy results to next histogram?')
     3281            copySel.Bind(wx.EVT_CHECKBOX,OnCopySel)
     3282            copySel.SetValue(data['Copy2Next'])
     3283            selSizer.Add(copySel,0,WACV)
     3284            seqSizer.Add(selSizer,0)
    32703285        return seqSizer
    32713286       
     
    33093324
    33103325        LSSizer = wx.FlexGridSizer(cols=4,vgap=5,hgap=5)
    3311         LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Refinement derivatives: '),0,wx.ALIGN_CENTER_VERTICAL)
     3326        LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Refinement derivatives: '),0,WACV)
    33123327        Choice=['analytic Jacobian','numeric','analytic Hessian']
    33133328        derivSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['deriv type'],choices=Choice,
     
    33163331        derivSel.Bind(wx.EVT_COMBOBOX, OnDerivType)
    33173332           
    3318         LSSizer.Add(derivSel,0,wx.ALIGN_CENTER_VERTICAL)
    3319         LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Min delta-M/M: '),0,wx.ALIGN_CENTER_VERTICAL)
     3333        LSSizer.Add(derivSel,0,WACV)
     3334        LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Min delta-M/M: '),0,WACV)
    33203335        Cnvrg = wx.TextCtrl(G2frame.dataDisplay,-1,value='%.2g'%(data['min dM/M']),style=wx.TE_PROCESS_ENTER)
    33213336        Cnvrg.Bind(wx.EVT_TEXT_ENTER,OnConvergence)
    33223337        Cnvrg.Bind(wx.EVT_KILL_FOCUS,OnConvergence)
    3323         LSSizer.Add(Cnvrg,0,wx.ALIGN_CENTER_VERTICAL)
     3338        LSSizer.Add(Cnvrg,0,WACV)
    33243339        if 'Hessian' in data['deriv type']:
    3325             LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Max cycles: '),0,wx.ALIGN_CENTER_VERTICAL)
     3340            LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Max cycles: '),0,WACV)
    33263341            Choice = ['0','1','2','3','5','10','15','20']
    33273342            maxCyc = wx.ComboBox(parent=G2frame.dataDisplay,value=str(data['max cyc']),choices=Choice,
     
    33293344            maxCyc.SetValue(str(data['max cyc']))
    33303345            maxCyc.Bind(wx.EVT_COMBOBOX, OnMaxCycles)
    3331             LSSizer.Add(maxCyc,0,wx.ALIGN_CENTER_VERTICAL)
     3346            LSSizer.Add(maxCyc,0,WACV)
    33323347        else:
    3333             LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Initial shift factor: '),0,wx.ALIGN_CENTER_VERTICAL)
     3348            LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Initial shift factor: '),0,WACV)
    33343349            Factr = wx.TextCtrl(G2frame.dataDisplay,-1,value='%.5f'%(data['shift factor']),style=wx.TE_PROCESS_ENTER)
    33353350            Factr.Bind(wx.EVT_TEXT_ENTER,OnFactor)
    33363351            Factr.Bind(wx.EVT_KILL_FOCUS,OnFactor)
    3337             LSSizer.Add(Factr,0,wx.ALIGN_CENTER_VERTICAL)
     3352            LSSizer.Add(Factr,0,WACV)
    33383353        if G2frame.Sngl:
    33393354            LSSizer.Add((1,0),)
     
    33423357            fsqRef.SetValue(data['F**2'])
    33433358            fsqRef.Bind(wx.EVT_CHECKBOX,OnFsqRef)
    3344             LSSizer.Add(fsqRef,0,wx.ALIGN_CENTER_VERTICAL)
    3345             LSSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label='Min obs/sig (0-5): '),0,wx.ALIGN_CENTER_VERTICAL)
     3359            LSSizer.Add(fsqRef,0,WACV)
     3360            LSSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label='Min obs/sig (0-5): '),0,WACV)
    33463361            minSig = wx.TextCtrl(G2frame.dataDisplay,-1,value='%.2f'%(data['minF/sig']),style=wx.TE_PROCESS_ENTER)
    33473362            minSig.Bind(wx.EVT_TEXT_ENTER,OnMinSig)
    33483363            minSig.Bind(wx.EVT_KILL_FOCUS,OnMinSig)
    3349             LSSizer.Add(minSig,0,wx.ALIGN_CENTER_VERTICAL)
     3364            LSSizer.Add(minSig,0,WACV)
    33503365        return LSSizer
    33513366       
     
    33573372        Author = data['Author']
    33583373        authSizer = wx.BoxSizer(wx.HORIZONTAL)
    3359         authSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' CIF Author (last, first):'),0,wx.ALIGN_CENTER_VERTICAL)
     3374        authSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' CIF Author (last, first):'),0,WACV)
    33603375        auth = wx.TextCtrl(G2frame.dataDisplay,-1,value=Author,style=wx.TE_PROCESS_ENTER)
    33613376        auth.Bind(wx.EVT_TEXT_ENTER,OnAuthor)
    33623377        auth.Bind(wx.EVT_KILL_FOCUS,OnAuthor)
    3363         authSizer.Add(auth,0,wx.ALIGN_CENTER_VERTICAL)
     3378        authSizer.Add(auth,0,WACV)
    33643379        return authSizer
    33653380       
     
    33753390    mainSizer = wx.BoxSizer(wx.VERTICAL)
    33763391    mainSizer.Add((5,5),0)
    3377     mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Refinement Controls:'),0,wx.ALIGN_CENTER_VERTICAL)   
     3392    mainSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Refinement Controls:'),0,WACV)   
    33783393    mainSizer.Add(LSSizer())
    33793394    mainSizer.Add((5,5),0)
     
    36403655    mainSizer.Add((5,5),)
    36413656    wtSizer = wx.BoxSizer(wx.HORIZONTAL)
    3642     wtSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Weight factor: '),0,wx.ALIGN_CENTER_VERTICAL)
     3657    wtSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Weight factor: '),0,WACV)
    36433658    wtval = wx.TextCtrl(G2frame.dataDisplay,-1,'%.3f'%(data[0]['wtFactor']),style=wx.TE_PROCESS_ENTER)
    36443659    wtval.Bind(wx.EVT_TEXT_ENTER,OnWtFactor)
    36453660    wtval.Bind(wx.EVT_KILL_FOCUS,OnWtFactor)
    3646     wtSizer.Add(wtval,0,wx.ALIGN_CENTER_VERTICAL)
     3661    wtSizer.Add(wtval,0,WACV)
    36473662    mainSizer.Add(wtSizer)
    36483663    if data[0].get('Dummy'):
     
    36573672        lbl = lbl.format(Tmin,Tmax,t,step,num)
    36583673        simSizer.Add(wx.StaticText(G2frame.dataDisplay,wx.ID_ANY,lbl),
    3659                     0,wx.ALIGN_CENTER_VERTICAL)
     3674                    0,WACV)
    36603675        but = wx.Button(G2frame.dataDisplay,wx.ID_ANY,"Edit range")
    36613676        but.Bind(wx.EVT_BUTTON,onEditSimRange)
    3662         simSizer.Add(but,0,wx.ALIGN_CENTER_VERTICAL)
     3677        simSizer.Add(but,0,WACV)
    36633678        mainSizer.Add(simSizer)
    36643679    if 'Nobs' in data[0]:
     
    37373752    scaleSizer = wx.BoxSizer(wx.HORIZONTAL)
    37383753    scaleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Scale'),0,
    3739         wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
     3754        WACV|wx.EXPAND)
    37403755    scaleSel = wx.Slider(parent=G2frame.dataDisplay,maxValue=1000,minValue=1,
    37413756        style=wx.SL_HORIZONTAL,value=int(data['Scale']*10))
    3742     scaleSizer.Add(scaleSel,1,wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
     3757    scaleSizer.Add(scaleSel,1,wx.EXPAND|wx.RIGHT|WACV)
    37433758    scaleSel.SetLineSize(10)
    37443759    scaleSel.SetPageSize(10)
     
    37493764    zoneSizer = wx.BoxSizer(wx.HORIZONTAL)
    37503765    zoneSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Zone  '),0,
    3751         wx.ALIGN_CENTER_VERTICAL)
     3766        WACV)
    37523767    zoneSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['Zone'],choices=['100','010','001'],
    37533768        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    37543769    zoneSel.Bind(wx.EVT_COMBOBOX, OnSelZone)
    3755     zoneSizer.Add(zoneSel,0,wx.ALIGN_CENTER_VERTICAL)
     3770    zoneSizer.Add(zoneSel,0,WACV)
    37563771    zoneSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Plot type  '),0,
    3757         wx.ALIGN_CENTER_VERTICAL)       
     3772        WACV)       
    37583773    typeSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['Type'],choices=typeChoices,
    37593774        style=wx.CB_READONLY|wx.CB_DROPDOWN)
    37603775    typeSel.Bind(wx.EVT_COMBOBOX, OnSelType)
    3761     zoneSizer.Add(typeSel,0,wx.ALIGN_CENTER_VERTICAL)
     3776    zoneSizer.Add(typeSel,0,WACV)
    37623777    zoneSizer.Add((10,0),0)   
    37633778    mainSizer.Add(zoneSizer,0,wx.EXPAND|wx.RIGHT)
     
    37673782    layerSizer = wx.BoxSizer(wx.HORIZONTAL)
    37683783    layerSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Layer'),0,
    3769         wx.ALIGN_CENTER_VERTICAL|wx.EXPAND)
     3784        WACV|wx.EXPAND)
    37703785    layerSel = wx.Slider(parent=G2frame.dataDisplay,maxValue=HKLmax[izone],minValue=HKLmin[izone],
    37713786        style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS,value=0)
     
    37733788    layerSel.SetPageSize(1)
    37743789    layerSel.Bind(wx.EVT_SLIDER, OnLayerSlider)   
    3775     layerSizer.Add(layerSel,1,wx.EXPAND|wx.RIGHT|wx.ALIGN_CENTER_VERTICAL)
     3790    layerSizer.Add(layerSel,1,wx.EXPAND|wx.RIGHT|WACV)
    37763791    layerSizer.Add((10,0),0)   
    37773792    mainSizer.Add(layerSizer,1,wx.EXPAND|wx.RIGHT)
  • trunk/GSASIIstrMain.py

    r1239 r1240  
    177177        rigidbodyDict,parmDict,varyList,calcControls,pawleyLookup,ifPrint,printFile,dlg)
    178178       
    179 #    G2mv.Map2Dict(parmDict,varyList)
    180 #    Rvals = {}
    181 #    while True:
    182 #        begin = time.time()
    183 #        values =  np.array(G2stMth.Dict2Values(parmDict, varyList))
    184 #        Ftol = Controls['min dM/M']
    185 #        Factor = Controls['shift factor']
    186 #        maxCyc = Controls['max cyc']
    187 #        if 'Jacobian' in Controls['deriv type']:           
    188 #            result = so.leastsq(G2stMth.errRefine,values,Dfun=G2stMth.dervRefine,full_output=True,
    189 #                ftol=Ftol,col_deriv=True,factor=Factor,
    190 #                args=([Histograms,Phases,restraintDict,rigidbodyDict],parmDict,varyList,calcControls,pawleyLookup,dlg))
    191 #            ncyc = int(result[2]['nfev']/2)
    192 #        elif 'Hessian' in Controls['deriv type']:
    193 #            result = G2mth.HessianLSQ(G2stMth.errRefine,values,Hess=G2stMth.HessRefine,ftol=Ftol,maxcyc=maxCyc,Print=True,
    194 #                args=([Histograms,Phases,restraintDict,rigidbodyDict],parmDict,varyList,calcControls,pawleyLookup,dlg))
    195 #            ncyc = result[2]['num cyc']+1
    196 #            Rvals['lamMax'] = result[2]['lamMax']
    197 #        else:           #'numeric'
    198 #            result = so.leastsq(G2stMth.errRefine,values,full_output=True,ftol=Ftol,epsfcn=1.e-8,factor=Factor,
    199 #                args=([Histograms,Phases,restraintDict,rigidbodyDict],parmDict,varyList,calcControls,pawleyLookup,dlg))
    200 #            ncyc = int(result[2]['nfev']/len(varyList))
    201 ##        table = dict(zip(varyList,zip(values,result[0],(result[0]-values))))
    202 ##        for item in table: print item,table[item]               #useful debug - are things shifting?
    203 #        runtime = time.time()-begin
    204 #        Rvals['chisq'] = np.sum(result[2]['fvec']**2)
    205 #        G2stMth.Values2Dict(parmDict, varyList, result[0])
    206 #        G2mv.Dict2Map(parmDict,varyList)
    207 #        Rvals['Nobs'] = Histograms['Nobs']
    208 #        Rvals['Rwp'] = np.sqrt(Rvals['chisq']/Histograms['sumwYo'])*100.      #to %
    209 #        Rvals['GOF'] = Rvals['chisq']/(Histograms['Nobs']-len(varyList))
    210 #        print >>printFile,135*'-'
    211 #        print >>printFile,' Number of function calls:',result[2]['nfev'],' Number of observations: ',Histograms['Nobs'],' Number of parameters: ',len(varyList)
    212 #        print >>printFile,' Refinement time = %8.3fs, %8.3fs/cycle, for %d cycles'%(runtime,runtime/ncyc,ncyc)
    213 #        print >>printFile,' wR = %7.2f%%, chi**2 = %12.6g, reduced chi**2 = %6.2f'%(Rvals['Rwp'],Rvals['chisq'],Rvals['GOF'])
    214 #        try:
    215 #            covMatrix = result[1]*Rvals['GOF']
    216 #            sig = np.sqrt(np.diag(covMatrix))
    217 #            if np.any(np.isnan(sig)):
    218 #                print '*** Least squares aborted - some invalid esds possible ***'
    219 ##            table = dict(zip(varyList,zip(values,result[0],(result[0]-values)/sig)))
    220 ##            for item in table: print item,table[item]               #useful debug - are things shifting?
    221 #            break                   #refinement succeeded - finish up!
    222 #        except TypeError,FloatingPointError:          #result[1] is None on singular matrix
    223 #            print '**** Refinement failed - singular matrix ****'
    224 #            if 'Hessian' in Controls['deriv type']:
    225 #                num = len(varyList)-1
    226 #                for i,val in enumerate(np.flipud(result[2]['psing'])):
    227 #                    if val:
    228 #                        print 'Removing parameter: ',varyList[num-i]
    229 #                        del(varyList[num-i])                   
    230 #            else:
    231 #                Ipvt = result[2]['ipvt']
    232 #                for i,ipvt in enumerate(Ipvt):
    233 #                    if not np.sum(result[2]['fjac'],axis=1)[i]:
    234 #                        print 'Removing parameter: ',varyList[ipvt-1]
    235 #                        del(varyList[ipvt-1])
    236 #                        break
    237 
    238 #    print 'dependentParmList: ',G2mv.dependentParmList
    239 #    print 'arrayList: ',G2mv.arrayList
    240 #    print 'invarrayList: ',G2mv.invarrayList
    241 #    print 'indParmList: ',G2mv.indParmList
    242 #    print 'fixedDict: ',G2mv.fixedDict
    243 #    print 'test1'
    244179    G2stMth.GetFobsSq(Histograms,Phases,parmDict,calcControls)
    245180    sigDict = dict(zip(varyList,sig))
     
    316251    SeqResult = {'histNames':histNames}
    317252    makeBack = True
     253    Histo = {}
     254    NewparmDict = {}
    318255    for ihst,histogram in enumerate(histNames):
    319256        ifPrint = False
     
    385322        parmDict.update(hapDict)
    386323        parmDict.update(histDict)
     324        if Controls['Copy2Next']:
     325            parmDict.update(NewparmDict)
    387326        G2stIO.GetFprime(calcControls,Histo)
    388327        # do constraint processing
     
    410349            rigidbodyDict,parmDict,varyList,calcControls,pawleyLookup,ifPrint,printFile,dlg)
    411350           
    412 #        G2mv.Map2Dict(parmDict,varyList)
    413 #        print 'parmDict:',parmDict ######### show dict just before refinement
    414 #        Rvals = {}
    415 #        while True:
    416 #            begin = time.time()
    417 #            values =  np.array(G2stMth.Dict2Values(parmDict,varyList))
    418 #            Ftol = Controls['min dM/M']
    419 #            Factor = Controls['shift factor']
    420 #            maxCyc = Controls['max cyc']
    421 #
    422 #            if 'Jacobian' in Controls['deriv type']:           
    423 #                result = so.leastsq(G2stMth.errRefine,values,Dfun=G2stMth.dervRefine,full_output=True,
    424 #                    ftol=Ftol,col_deriv=True,factor=Factor,
    425 #                    args=([Histo,Phases,restraintDict,rigidbodyDict],parmDict,varyList,calcControls,pawleyLookup,dlg))
    426 #                ncyc = int(result[2]['nfev']/2)
    427 #            elif 'Hessian' in Controls['deriv type']:
    428 #                result = G2mth.HessianLSQ(G2stMth.errRefine,values,Hess=G2stMth.HessRefine,ftol=Ftol,maxcyc=maxCyc,
    429 #                    args=([Histo,Phases,restraintDict,rigidbodyDict],parmDict,varyList,calcControls,pawleyLookup,dlg))
    430 #                ncyc = result[2]['num cyc']+1                           
    431 #            else:           #'numeric'
    432 #                result = so.leastsq(G2stMth.errRefine,values,full_output=True,ftol=Ftol,epsfcn=1.e-8,factor=Factor,
    433 #                    args=([Histo,Phases,restraintDict,rigidbodyDict],parmDict,varyList,calcControls,pawleyLookup,dlg))
    434 #                ncyc = int(result[2]['nfev']/len(varyList))
    435 #
    436 #            runtime = time.time()-begin
    437 #            Rvals['chisq'] = np.sum(result[2]['fvec']**2)
    438 #            G2stMth.Values2Dict(parmDict, varyList, result[0])
    439 #            G2mv.Dict2Map(parmDict,varyList)
    440 #           
    441 #            Rvals['Rwp'] = np.sqrt(Rvals['chisq']/Histo['sumwYo'])*100.      #to %
    442 #            Rvals['GOF'] = Rvals['Rwp']/(Histo['Nobs']-len(varyList))
    443 #            Rvals['Nobs'] = Histo['Nobs']
    444 #            print >>printFile,135*'-'
    445 #            print >>printFile,' Number of function calls:',result[2]['nfev'],' Number of observations: ',Histo['Nobs'],' Number of parameters: ',len(varyList)
    446 #            print >>printFile,' Refinement time = %8.3fs, %8.3fs/cycle, for %d cycles'%(runtime,runtime/ncyc,ncyc)
    447 #            print >>printFile,' wRp = %7.2f%%, chi**2 = %12.6g, reduced chi**2 = %6.2f'%(Rvals['Rwp'],Rvals['chisq'],Rvals['GOF'])
    448 #            try:
    449 #                covMatrix = result[1]*Rvals['GOF']
    450 #                sig = np.sqrt(np.diag(covMatrix))
    451 #                if np.any(np.isnan(sig)):
    452 #                    print '*** Least squares aborted - some invalid esds possible ***'
    453 #                    ifPrint = True
    454 #                break                   #refinement succeeded - finish up!
    455 #            except TypeError:          #result[1] is None on singular matrix
    456 #                print '**** Refinement failed - singular matrix ****'
    457 #                if 'Hessian' in Controls['deriv type']:
    458 #                    num = len(varyList)-1
    459 #                    for i,val in enumerate(np.flipud(result[2]['psing'])):
    460 #                        if val:
    461 #                            print 'Removing parameter: ',varyList[num-i]
    462 #                            del(varyList[num-i])                   
    463 #                else:
    464 #                    Ipvt = result[2]['ipvt']
    465 #                    for i,ipvt in enumerate(Ipvt):
    466 #                        if not np.sum(result[2]['fjac'],axis=1)[i]:
    467 #                            print 'Removing parameter: ',varyList[ipvt-1]
    468 #                            del(varyList[ipvt-1])
    469 #                            break
    470 #   
    471351        G2stMth.GetFobsSq(Histo,Phases,parmDict,calcControls)
    472352        sigDict = dict(zip(varyList,sig))
     
    479359        # add the uncertainties into the esd dictionary (sigDict)
    480360        G2stMth.ApplyRBModels(parmDict,Phases,rigidbodyDict,True)
    481 #??        SetRigidBodyModels(parmDict,sigDict,rigidbodyDict,printFile)
     361#        G2stIO.SetRigidBodyModels(parmDict,sigDict,rigidbodyDict,printFile)
    482362        G2stIO.SetHistogramPhaseData(parmDict,sigDict,Phases,Histo,ifPrint,printFile)
    483363        G2stIO.SetHistogramData(parmDict,sigDict,Histo,ifPrint,printFile)
     
    485365        G2stIO.SetUsedHistogramsAndPhases(GPXfile,Histo,Phases,rigidbodyDict,covData,makeBack)
    486366        makeBack = False
     367        NewparmDict = {}
     368        if Controls['Copy2Next']:
     369            for parm in parmDict:
     370                items = parm.split(':',2)
     371                if str(ihst) in items[1] and parm in varyList:
     372                    items[1] = str(ihst+1)  #not correct! needs to point to next (or prev) histogram
     373                    newparm = ':'.join(items)
     374                    NewparmDict[newparm] = parmDict[parm]
    487375    G2stIO.SetSeqResult(GPXfile,Histograms,SeqResult)
    488376    printFile.close()
Note: See TracChangeset for help on using the changeset viewer.