Changeset 4578 for trunk/GSASIImath.py


Ignore:
Timestamp:
Sep 28, 2020 1:23:10 PM (3 years ago)
Author:
toby
Message:

docs for freezing parameters started + docs cleanup; start scriptable for freezing params; record initial chi2; Show more post refinement info; noted but unfixed bkg GUI bug

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r4560 r4578  
    166166    Lam = np.zeros((n,n))
    167167    Xvec = np.zeros(len(x0))
     168    chisq00 = None
    168169    while icycle < maxcyc:
    169170        time0 = time.time()
     
    172173        nfev += 1
    173174        chisq0 = np.sum(M**2)
     175        if chisq00 is None: chisq00 = chisq0
    174176        Yvec,Amat = Hess(x0,*args)
    175177        Adiag = np.sqrt(np.diag(Amat))
     
    234236        Bmat = Bmat/Anorm
    235237        return [x0,Bmat,{'num cyc':icycle,'fvec':M,'nfev':nfev,'lamMax':lamMax,'psing':[],
    236             'SVD0':Nzero,'Converged': ifConverged, 'DelChi2':deltaChi2,'Xvec':Xvec}]
     238            'SVD0':Nzero,'Converged': ifConverged, 'DelChi2':deltaChi2,'Xvec':Xvec, 'chisq0':chisq00}]
    237239    except nl.LinAlgError:
    238240        G2fil.G2Print('ouch #2 linear algebra error in making v-cov matrix', mode='error')
     
    240242        if maxcyc:
    241243            psing = list(np.where(np.diag(nl.qr(Amat)[1]) < 1.e-14)[0])
    242         return [x0,None,{'num cyc':icycle,'fvec':M,'nfev':nfev,'lamMax':lamMax,'psing':psing,'SVD0':-1,'Xvec':None}]         
     244        return [x0,None,{'num cyc':icycle,'fvec':M,'nfev':nfev,'lamMax':lamMax,'psing':psing,'SVD0':-1,'Xvec':None, 'chisq0':chisq00}]
    243245           
    244246def HessianSVD(func,x0,Hess,args=(),ftol=1.49012e-8,xtol=1.e-6, maxcyc=0,lamda=-3,Print=False,refPlotUpdate=None):
     
    298300    if Print:
    299301        G2fil.G2Print(' Hessian SVD refinement on %d variables:'%(n))
     302    chisq00 = None
    300303    while icycle < maxcyc:
    301304        time0 = time.time()
     
    303306        nfev += 1
    304307        chisq0 = np.sum(M**2)
     308        if chisq00 is None: chisq00 = chisq0
    305309        Yvec,Amat = Hess(x0,*args)
    306310        Adiag = np.sqrt(np.diag(Amat))
     
    347351        Bmat = Bmat/Anorm
    348352        return [x0,Bmat,{'num cyc':icycle,'fvec':M,'nfev':nfev,'lamMax':0.,'psing':[],
    349             'SVD0':Nzero,'Converged': ifConverged, 'DelChi2':deltaChi2}]
     353            'SVD0':Nzero,'Converged': ifConverged, 'DelChi2':deltaChi2,
     354                             'chisq0':chisq00}]
    350355    except nl.LinAlgError:
    351356        G2fil.G2Print('ouch #2 linear algebra error in making v-cov matrix', mode='error')
     
    353358        if maxcyc:
    354359            psing = list(np.where(np.diag(nl.qr(Amat)[1]) < 1.e-14)[0])
    355         return [x0,None,{'num cyc':icycle,'fvec':M,'nfev':nfev,'lamMax':0.,'psing':psing,'SVD0':-1}]         
     360        return [x0,None,{'num cyc':icycle,'fvec':M,'nfev':nfev,'lamMax':0.,'psing':psing,'SVD0':-1,
     361                             'chisq0':chisq00}]
    356362           
    357363def getVCov(varyNames,varyList,covMatrix):
Note: See TracChangeset for help on using the changeset viewer.