Changeset 1800


Ignore:
Timestamp:
Apr 21, 2015 12:16:53 PM (8 years ago)
Author:
vondreele
Message:

show no. space group extinct reflections in HKLF data - rejected from calcs.
calculate a "residual" for texture fitting & show it in ProgressBar?
correct angle derivatives in texture fitting (wrong sign)
trap empty useList in plots
make sure U23 is printed in lst output

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r1799 r1800  
    15941594################################################################################
    15951595
    1596 def FitTexture(General,Gangls,refData,keyList):
     1596def FitTexture(General,Gangls,refData,keyList,pgbar):
    15971597    import pytexture as ptx
    15981598    ptx.pyqlmninit()            #initialize fortran arrays for spherical harmonics
     
    16491649        parmdict.update(zip(varylist,values))
    16501650       
    1651     def errSpHarm(values,SGData,cell,Gangls,shModel,refData,parmDict,varyList):
     1651    def errSpHarm(values,SGData,cell,Gangls,shModel,refData,parmDict,varyList,pgbar):
    16521652        parmDict.update(zip(varyList,values))
    16531653        Mat = np.empty(0)
     1654        sumObs = 0
    16541655        Sangls = [parmDict['Sample '+'omega'],parmDict['Sample '+'chi'],parmDict['Sample '+'phi']]
    16551656        for hist in Gangls.keys():
    16561657            Refs = refData[hist]
     1658            sumObs += np.sum(Refs[:,5])
    16571659            Refs[:,6] = 1.
    16581660            H = Refs[:,:3]
     
    16681670            mat = Refs[:,5]-Refs[:,6]
    16691671            Mat = np.concatenate((Mat,mat))
    1670         print ' Chi**2: %.3f'%(np.sum(np.abs(Mat)))
     1672        sumD = np.sum(np.abs(Mat))
     1673        R = min(100.,100.*sumD/sumObs)
     1674        pgbar.Update(R,newmsg='Residual = %5.2f'%(R))
     1675        print ' Residual: %.3f%%'%(R)
    16711676        return Mat
    16721677       
    1673     def dervSpHarm(values,SGData,cell,Gangls,shModel,refData,parmDict,varyList):
     1678    def dervSpHarm(values,SGData,cell,Gangls,shModel,refData,parmDict,varyList,pgbar):
    16741679        Mat = np.empty(0)
    16751680        Sangls = [parmDict['Sample omega'],parmDict['Sample chi'],parmDict['Sample phi']]
     
    16901695                        try:
    16911696                            l = varyList.index(itema)
    1692                             mat[l] += parmDict[item]*Lnorm*Kcl*(dKdp*dPdA[k]+dKdg*dGdA[k])
     1697                            mat[l] -= parmDict[item]*Lnorm*Kcl*(dKdp*dPdA[k]+dKdg*dGdA[k])
    16931698                        except ValueError:
    16941699                            pass
     
    17181723        values =  np.array(Dict2Values(parmDict, varyList))
    17191724        result = so.leastsq(errSpHarm,values,Dfun=dervSpHarm,full_output=True,
    1720             args=(SGData,cell,Gangls,Texture['Model'],refData,parmDict,varyList))
     1725            args=(SGData,cell,Gangls,Texture['Model'],refData,parmDict,varyList,pgbar))
    17211726        ncyc = int(result[2]['nfev']/2)
    17221727        if ncyc:
     
    17271732            print 'Number of function calls:',result[2]['nfev'],' Number of observations: ',len(result[2]['fvec']),' Number of parameters: ',len(varyList)
    17281733            print 'refinement time = %8.3fs, %8.3fs/cycle'%(runtime,runtime/ncyc)
    1729             print 'chi**2 = %12.6g, reduced chi**2 = %6.2f'%(chisq,GOF)
    17301734            try:
    17311735                sig = np.sqrt(np.diag(result[1])*GOF)
  • trunk/GSASIIphsGUI.py

    r1796 r1800  
    711711            def OnRefList(event):
    712712                dlg = G2G.G2MultiChoiceDialog(G2frame, 'Select reflection sets to use',
    713                     'Use data',refsList,filterBox=False)
     713                    'Use data',refsList)
    714714                try:
    715715                    if dlg.ShowModal() == wx.ID_OK:
     
    782782            def OnRefList(event):
    783783                dlg = G2G.G2MultiChoiceDialog(G2frame, 'Select reflection sets to use',
    784                     'Use data',refsList,filterBox=False)
     784                    'Use data',refsList)
    785785                try:
    786786                    if dlg.ShowModal() == wx.ID_OK:
     
    22282228            def OnRefList(event):
    22292229                dlg = G2G.G2MultiChoiceDialog(G2frame, 'Select reflection sets to use',
    2230                     'Use data',refsList,filterBox=False)
     2230                    'Use data',refsList)
    22312231                try:
    22322232                    if dlg.ShowModal() == wx.ID_OK:
     
    37523752                TextList.append(name)
    37533753            item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)                       
    3754         dlg = wx.MultiChoiceDialog(G2frame, 'Which new data to use?', 'Use data', TextList, wx.CHOICEDLG_STYLE)
     3754        dlg = G2G.G2MultiChoiceDialog(G2frame, 'Select reflection sets to use',
     3755                    'Use data',TextList)
    37553756        try:
    37563757            if dlg.ShowModal() == wx.ID_OK:
     
    39363937        NDij = len(G2spc.HStrainNames(SGData))
    39373938        keyList = UseList.keys()
    3938         TextList = ['All PWDR']
     3939        TextList = []
    39393940        if G2frame.PatternTree.GetCount():
    39403941            item, cookie = G2frame.PatternTree.GetFirstChild(G2frame.root)
     
    39443945                    TextList.append(name)
    39453946                item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)
    3946             dlg = wx.MultiChoiceDialog(G2frame, 'Which new data to use?', 'Use data', TextList, wx.CHOICEDLG_STYLE)
     3947            dlg = G2G.G2MultiChoiceDialog(G2frame, 'Select reflection sets to use',
     3948                    'Use data',TextList)
    39473949            try:
    39483950                if dlg.ShowModal() == wx.ID_OK:
     
    59235925                else:   # xray - typical caked 2D image data
    59245926                    refData[name] = np.column_stack((Refs[0],Refs[1],Refs[2],Refs[5+im],Refs[8+im],Refs[12+im+it],np.zeros_like(Refs[0])))
    5925         Error = G2mth.FitTexture(General,Gangls,refData,keyList)
     5927        pgbar = wx.ProgressDialog('Texture fit','Residual = %5.2f'%(101.0),101.0,
     5928            style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE)
     5929        Error = G2mth.FitTexture(General,Gangls,refData,keyList,pgbar)
     5930        pgbar.Destroy()
    59265931        if Error:
    59275932            wx.MessageBox(Error,caption='Fit Texture Error',style=wx.ICON_EXCLAMATION)
     
    59775982            G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.DataMenu)
    59785983            G2ddG.UpdateDData(G2frame,DData,data)
    5979             G2plt.PlotSizeStrainPO(G2frame,data,hist='',Start=True)           
     5984            wx.CallAfter(G2plt.PlotSizeStrainPO,G2frame,data,hist='',Start=True)           
    59805985        elif text == 'Atoms':
    59815986            G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.AtomsMenu)
     
    60076012            G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.TextureMenu)
    60086013            UpdateTexture()                       
    6009             G2plt.PlotTexture(G2frame,data,Start=True)           
     6014            wx.CallAfter(G2plt.PlotTexture,G2frame,data,Start=True)           
    60106015        elif text == 'Pawley reflections':
    60116016            G2gd.SetDataMenuBar(G2frame,G2frame.dataFrame.PawleyMenu)
     
    60136018        else:
    60146019            G2gd.SetDataMenuBar(G2frame)
     6020           
    60156021    def FillMenus():
    60166022        '''Create the Select tab menus and bind to all menu items
  • trunk/GSASIIplot.py

    r1799 r1800  
    25402540    for ptype in plotDict:
    25412541        G2frame.G2plotNB.Delete(ptype)
    2542     if plotType in ['None']:
     2542    if plotType in ['None'] or not useList:
    25432543        return       
    25442544    if hist == '':
  • trunk/GSASIIstrIO.py

    r1782 r1800  
    15051505                valstr += 8*' '
    15061506                sigstr += 8*' '
    1507                 for ind in range(cia+2,cia+7):
     1507                for ind in range(cia+2,cia+8):
    15081508                    sigind = str(i)+':'+str(ind)
    15091509                    valstr += fmt[ind]%(at[ind])
     
    25222522                   
    25232523                elif 'HKLF' in histogram:
    2524                     print >>pFile,' Final refinement RF, RF^2 = %.2f%%, %.2f%% on %d reflections (%d user rejected)'   \
    2525                         %(Histogram['Residuals'][pfx+'Rf'],Histogram['Residuals'][pfx+'Rf^2'],Histogram['Residuals'][pfx+'Nref'],Histogram['Residuals'][pfx+'Nrej'])
     2524                    print >>pFile,' Final refinement RF, RF^2 = %.2f%%, %.2f%% on %d reflections (%d user rejected, %d sp.gp.extinct)'   \
     2525                        %(Histogram['Residuals'][pfx+'Rf'],Histogram['Residuals'][pfx+'Rf^2'],Histogram['Residuals'][pfx+'Nref'],
     2526                        Histogram['Residuals'][pfx+'Nrej'],Histogram['Residuals'][pfx+'Next'])
    25262527                    print >>pFile,' HKLF histogram weight factor = ','%.3f'%(Histogram['wtFactor'])
    25272528                    if pfx+'Scale' in ScalExtSig:
  • trunk/GSASIIstrMain.py

    r1792 r1800  
    9393        Rvals['GOF'] = np.sqrt(Rvals['chisq']/(Histograms['Nobs']-len(varyList)))
    9494        print >>printFile,' Number of function calls:',result[2]['nfev'],   \
    95             ' Number of observations: ',Histograms['Nobs'],' User rejected: ',Histograms['Nrej'],   \
    96             ' Number of parameters: ',len(varyList)
     95            ' No. of observations: ',Histograms['Nobs'],' No. of parameters: ',len(varyList),   \
     96            ' User rejected: ',Histograms['Nrej'],' Sp. gp. extinct: ',Histograms['Next']
    9797        print >>printFile,' Refinement time = %8.3fs, %8.3fs/cycle, for %d cycles'%(runtime,runtime/ncyc,ncyc)
    98         print >>printFile,' wR = %7.2f%%, chi**2 = %12.6g, reduced chi**2 = %6.2f'%(Rvals['Rwp'],Rvals['chisq'],Rvals['GOF']**2)
     98        print >>printFile,' wR = %7.2f%%, chi**2 = %12.6g, GOF = %6.2f'%(Rvals['Rwp'],Rvals['chisq'],Rvals['GOF'])
    9999        IfOK = True
    100100        try:
  • trunk/GSASIIstrMath.py

    r1798 r1800  
    26412641    Nobs = 0
    26422642    Nrej = 0
     2643    Next = 0
    26432644    ApplyRBModels(parmDict,Phases,rigidbodyDict)
    26442645    histoList = Histograms.keys()
     
    27202721            nobs = 0
    27212722            nrej = 0
     2723            next = 0
    27222724            if calcControls['F**2']:
    27232725                for i,ref in enumerate(refDict['RefList']):
     
    27382740                            sumwYo += (w*ref[5+im])**2      #w*Fo^2
    27392741                        else:
    2740                             ref[3+im] = -abs(ref[3+im])      #mark as rejected
    2741                             nrej += 1
     2742                            if ref[3+im]:
     2743                                ref[3+im] = -abs(ref[3+im])      #mark as rejected
     2744                                nrej += 1
     2745                            else:   #sp.gp.extinct
     2746                                next += 1
    27422747            else:
    27432748                for i,ref in enumerate(refDict['RefList']):
     
    27592764                            sumwYo += (w*Fo)**2
    27602765                        else:
    2761                             ref[3+im] = -abs(ref[3+im])      #mark as rejected
    2762                             nrej += 1
     2766                            if ref[3+im]:
     2767                                ref[3+im] = -abs(ref[3+im])      #mark as rejected
     2768                                nrej += 1
     2769                            else:   #sp.gp.extinct
     2770                                next += 1
    27632771            Histogram['Residuals']['Nobs'] = nobs
    27642772            Histogram['Residuals']['sumwYo'] = sumwYo
     
    27692777            Histogram['Residuals'][phfx+'Nref'] = nobs
    27702778            Histogram['Residuals'][phfx+'Nrej'] = nrej
     2779            Histogram['Residuals'][phfx+'Next'] = next
    27712780            Nobs += nobs
    27722781            Nrej += nrej
     2782            Next += next
    27732783            if dlg:
    27742784                dlg.Update(Histogram['Residuals']['wR'],newmsg='For histogram %d Rw=%8.3f%s'%(hId,Histogram['Residuals']['wR'],'%'))[0]
     
    27782788    Histograms['Nobs'] = Nobs
    27792789    Histograms['Nrej'] = Nrej
     2790    Histograms['Next'] = Next
    27802791    Rw = min(100.,np.sqrt(np.sum(M**2)/SumwYo)*100.)
    27812792    if dlg:
Note: See TracChangeset for help on using the changeset viewer.