Changeset 4328


Ignore:
Timestamp:
Feb 25, 2020 6:47:52 AM (20 months ago)
Author:
vondreele
Message:

Add FITTED_SCALE to RMCprofile options
fix issues with changing atom sequence in RMCProfile
remove read of x-ray G(R) - it isn't used by RMCProfile but is generated from F(Q)

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r4325 r4328  
    25462546        def compareSizer():
    25472547           
    2548 #            generalData['Compare'] = {'Oatom':'','Tatom':'','Tilts':{'Otilts':[],'Ttilts':[]},
    2549 #                'Bonds':{'Obonds':[],'Tbonds':[]},'Vects':{'Ovec':[],'Tvec':[]},
    2550 #                'dVects':{'Ovec':[],'Tvec':[]}}
    25512548            def OnOatmOsel(event):
    25522549                generalData['Compare']['Oatoms'] = oatmsel.GetStringSelection()
     
    28332830        dVects.update({'Ovec':[],'Tvec':[]})
    28342831        Oatoms = generalData['Compare']['Oatoms']
     2832        nOct = 0
     2833        nTet = 0
     2834        nElse = 0
    28352835        for atom in data['Atoms']:
    28362836            if atom[ct] == Oatoms:
     
    28422842                    Vects['Tvec'].append(V)
    28432843                    dVects['Tvec'].append(dVec)
     2844                    nTet += 1
    28442845                elif len(results) == 6:
    28452846                    bond,std,meanDisp,stdDisp,A,V,dVec = G2mth.FindOctahedron(results)
     
    28482849                    Vects['Ovec'].append(V)
    28492850                    dVects['Ovec'].append(dVec)
     2851                    nOct += 1
    28502852                else:
    28512853                    print('%s is something else with %d vertices'%(atom[ct-1],len(results)))
     2854                    nElse += 1
    28522855            GoOn = pgbar.Update(iAtm,newmsg='Atoms done=%d'%(iAtm))
    28532856            iAtm += 1
    28542857            if not GoOn[0]:
     2858                print(' Compare aborted')
    28552859                break
     2860        print(' Compare finished; nOct =  %d, nTet = %d, nOther = %d'%(nOct,nTet,nElse))
    28562861        pgbar.Destroy()
    28572862        wx.CallAfter(UpdateGeneral,General.GetScrollPos(wx.VERTICAL))
     
    46184623                          'Neutron reciprocal space data; F(Q): ':['',0.05,'F(Q)','RMC',],
    46194624                          'Neutron reciprocal space data; S(Q): ':['',0.05,'S(Q)','RMC',],
    4620                           'Xray real space data; G(r): ':['',0.01,'G(r)','RMC',],
     4625#                          'Xray real space data; G(r): ':['',0.01,'G(r)','RMC',],
    46214626                          'Xray reciprocal space data; F(Q): ':['',0.01,'F(Q)','RMC',],}
    46224627                runTimes = [10.,1.]
     
    46314636            RMCPdict = data['RMC']['RMCProfile']
    46324637#patches
    4633 #            if 'runTimes' not in RMCPdict:
    4634 #                RMCPdict['runTimes'] = [10.0,1.0]
    4635 #            lenA = len(RMCPdict['atSeq'])
    4636 #            if 'Oxid' not in RMCPdict:
    4637 #                RMCPdict['Oxid'] = [[atmdata.BVSoxid[atm][0],0.001] for atm in RMCPdict['atSeq']]
    4638 #            Pairs= []
    4639 #            for pair in [[' %s-%s'%(RMCPdict['atSeq'][i],RMCPdict['atSeq'][j]) for j in range(i,lenA)] for i in range(lenA)]:
    4640 #                Pairs += pair
    4641 #            RMCPdict['Pairs'] = dict(zip(Pairs,[RMCPdict['Pairs'].get(pair,[0.0,0.0,0.0]) for pair in Pairs]))
    4642 #            BVSpairs = []
    4643 #            if 'BVS' not in RMCPdict:
    4644 #                RMCPdict['useBVS'] = False
    4645 #                RMCPdict['BVS'] = {}
    4646 #            if lenA > 1:
    4647 #                for pair in [[' %s-%s'%(RMCPdict['atSeq'][i],RMCPdict['atSeq'][j]) for j in range(i+1,lenA)] for i in range(lenA)]:
    4648 #                    BVSpairs += pair
    4649 #                RMCPdict['BVS'] = dict(zip(BVSpairs,[RMCPdict['BVS'].get(pair,[0.0,0.0,0.0]) for pair in BVSpairs]))
    4650 #            if 'FxCN' not in RMCPdict:
    4651 #                RMCPdict.update({'AveCN':[],'FxCN':[]})
    4652 #            if 'Potentials' not in RMCPdict:
    4653 #                RMCPdict.update({'Potentials':{'Angles':[],'Angle search':10.,'Stretch':[],'Stretch search':10.,'Pot. Temp.':300.,}})
    4654 #            if 'Pot. Temp.' not in RMCPdict['Potentials']:
    4655 #                RMCPdict['Potentials']['Pot. Temp.'] = 300.
    4656 #            if 'Swaps' not in RMCPdict:
    4657 #                RMCPdict['Swaps'] = []
     4638            if 'FitScale' not in RMCPdict:
     4639                RMCPdict['FitScale'] = False
    46584640#end patches
    46594641               
     
    47514733                            tid += 1
    47524734                        RMCPdict['atSeq'] = G2lat.SwapItems(RMCPdict['atSeq'],itype,tid)
     4735                    Pairs= []
     4736                    atSeq = RMCPdict['atSeq']
     4737                    lenA = len(atSeq)
     4738                    for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i,lenA)] for i in range(lenA)]:
     4739                        Pairs += pair
     4740                    RMCPdict['Pairs'] = {pairs:[0.0,0.0,0.0] for pairs in Pairs}
     4741                    if RMCPdict['useBVS']:
     4742                        BVSpairs = []
     4743                        for pair in [[' %s-%s'%(atSeq[i],atSeq[j]) for j in range(i+1,lenA)] for i in range(lenA)]:
     4744                            BVSpairs += pair
     4745                        RMCPdict['BVS'] = {pairs:[0.0,0.0,0.0,0.0] for pairs in BVSpairs}
    47534746                    wx.CallAfter(UpdateRMC)           
    47544747               
     
    50185011                return swapSizer
    50195012           
     5013            def OnFitScale(event):
     5014                RMCPdict['FitScale'] = not RMCPdict['FitScale']
     5015           
    50205016            Indx = {}
    50215017
     
    51245120            samSizer.Add(strain,0,WACV)
    51255121            mainSizer.Add(samSizer,0,WACV)
    5126             title = ' Select data for processing:'
    5127             mainSizer.Add(wx.StaticText(G2frame.FRMC,label=title),0,WACV)
     5122            titleSizer = wx.BoxSizer(wx.HORIZONTAL)
     5123            titleSizer.Add(wx.StaticText(G2frame.FRMC,label=' Select data for processing: '),0,WACV)
     5124            fitscale = wx.CheckBox(G2frame.FRMC,label=' Fit scale factors?')
     5125            fitscale.SetValue(RMCPdict['FitScale'])
     5126            fitscale.Bind(wx.EVT_CHECKBOX,OnFitScale)
     5127            titleSizer.Add(fitscale,0,WACV)
     5128            mainSizer.Add(titleSizer,0,WACV)
    51285129            fileSizer = wx.FlexGridSizer(4,5,5)
    51295130            Formats = ['RMC','GUDRUN','STOG']
     
    53615362           
    53625363            ifXray = False
     5364            ifNeut = False
    53635365            try:
    53645366                datFile = open(os.path.join(path,pName+'.dat'),'r')
     
    53835385#total result plots
    53845386            Labels = {'_PDF1.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP G(R) for '],
    5385                 '_PDF2.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP G(R) for '],
     5387                '_PDF2.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP G(R)-2 for '],
    53865388                '_SQ1.csv':[r'$\mathsf{Q,\AA^{-1}}$','S(Q)','RMCP S(Q) for '],
    5387                 '_SQ2.csv':[r'$\mathsf{Q,\AA^{-1}}$','S(Q)','RMCP S(Q) for '],
     5389                '_SQ2.csv':[r'$\mathsf{Q,\AA^{-1}}$','S(Q)','RMCP S(Q)-2 for '],
    53885390                '_FQ1.csv':[r'$\mathsf{Q,\AA^{-1}}$','F(Q)','RMCP F(Q) for '],
    53895391                '_FT_XFQ1.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP x-ray G(R) for '],
     
    53965398                Ycalc = []
    53975399                if len(files[label]):
     5400                    if 'PDF1' in label:
     5401                        ifNeut = True
    53985402                    Names = files[label][0][:-1].split(',')
    53995403                    for line in files[label][1:]:
     
    54265430            Labels = {'_PDFpartials.csv':[r'$\mathsf{R,\AA}$','G(R)','RMCP G(R) partials for '],
    54275431                '_SQ1partials.csv':[r'$\mathsf{Q,\AA^{-1}}$','S(Q)','RMCP S(Q) partials for '],
    5428                 '_SQ2partials.csv':[r'$\mathsf{Q,\AA^{-1}}$','S(Q)','RMCP S(Q) partials for '],
     5432                '_SQ2partials.csv':[r'$\mathsf{Q,\AA^{-1}}$','S(Q)-2','RMCP S(Q) partials for '],
    54295433                '_FQ1partials.csv':[r'$\mathsf{Q,\AA^{-1}}$','F(Q)','RMCP F(Q) partials for ']}
    54305434            for label in Labels:
     
    54455449                    else:
    54465450                        XY = [[X.T,(DX*Y.T)] for Y in Partials]
    5447                     if 'G(R)' in Labels[label][1]:      #only for neutrons
     5451                    if 'G(R)' in Labels[label][1]:
     5452                        if ifNeut:
     5453                            title = 'Neutron '+Labels[label][2]+pName
     5454                        else:
     5455                            title = 'X-ray '+Labels[label][2]+pName
    54485456                        sumAtm = 0
    54495457                        BLtables = G2elem.GetBLtable(generalData)
     
    54535461                        bcorr = []
    54545462                        for atm in AtNum:
    5455                             if 'SL' in BLtables[atm][1]:
    5456                                 bfac[atm] = BLtables[atm][1]['SL'][0]*AtNum[atm]/sumAtm
    5457                             else:   #resonant scatters (unlikely!)
    5458                                 bfac[atm] = AtNum[atm]/sumAtm
     5463                            if ifNeut:
     5464                                if 'SL' in BLtables[atm][1]:
     5465                                    bfac[atm] = 10.*BLtables[atm][1]['SL'][0]*AtNum[atm]/sumAtm  #scale to pm
     5466                                else:   #resonant scatters (unlikely!)
     5467                                    bfac[atm] = AtNum[atm]/sumAtm
     5468                            else:
     5469                                bfac[atm] = G2elem.GetFFtable([atm,])[atm]['Z']*AtNum[atm]/sumAtm
    54595470                        for name in Names:
    54605471                            if '-' in name:
    54615472                                at1,at2 = name.strip().split('-')
    5462                                 bcorr.append(100.*bfac[at1]*bfac[at2])  #scale to pm^2
     5473                                bcorr.append(bfac[at1]*bfac[at2])
    54635474                                if at1 == at2:
    54645475                                    bcorr[-1] /= 2.         #no double counting
     
    54685479                        Xmax = np.searchsorted(Ysave[0][0],XY[0][0][-1])
    54695480                        G2plt.PlotXY(G2frame,XY2=XY,XY=[Ysave[0][:,0:Xmax],],labelX=Labels[label][0],
    5470                             labelY=Labels[label][1],newPlot=True,Title=Labels[label][2]+pName,
     5481                            labelY=Labels[label][1],newPlot=True,Title=title,
    54715482                            lines=False,names=[r'   $G(R)_{obs}$',]+Names[1:])
    54725483                    else:                       
  • trunk/GSASIIplot.py

    r4325 r4328  
    52355235        try:
    52365236            Plot.plot_surface(X,Y,Z,rstride=1,cstride=1,color='g',linewidth=1)
     5237            xyzlim = np.array([Plot.get_xlim3d(),Plot.get_ylim3d(),Plot.get_zlim3d()]).T
     5238            XYZlim = [min(xyzlim[0]),max(xyzlim[1])]
     5239    #        Plot.contour(X,Y,Z,10,zdir='x',offset=XYZlim[0])
     5240    #        Plot.contour(X,Y,Z,10,zdir='y',offset=XYZlim[1])
     5241    #        Plot.contour(X,Y,Z,10,zdir='z',offset=XYZlim[0])
     5242            Plot.set_xlim3d(XYZlim)
     5243            Plot.set_ylim3d(XYZlim)
     5244            Plot.set_zlim3d(XYZlim)
    52375245        except:
    52385246            pass
    5239         xyzlim = np.array([Plot.get_xlim3d(),Plot.get_ylim3d(),Plot.get_zlim3d()]).T
    5240         XYZlim = [min(xyzlim[0]),max(xyzlim[1])]
    5241 #        Plot.contour(X,Y,Z,10,zdir='x',offset=XYZlim[0])
    5242 #        Plot.contour(X,Y,Z,10,zdir='y',offset=XYZlim[1])
    5243 #        Plot.contour(X,Y,Z,10,zdir='z',offset=XYZlim[0])
    5244         Plot.set_xlim3d(XYZlim)
    5245         Plot.set_ylim3d(XYZlim)
    5246         Plot.set_zlim3d(XYZlim)
    52475247        try:
    52485248            Plot.set_aspect('equal')
     
    53915391        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    53925392    Page.Choice = None
    5393     nBins= max(10,len(Xarray)//25)
     5393    nBins= max(10,len(Xarray)//10)
    53945394    Bins,Dbins = np.histogram(Xarray,nBins)
    53955395    wid = Dbins[1]-Dbins[0]
  • trunk/GSASIIpwd.py

    r4324 r4328  
    24332433            fl.write('  > CONSTANT_OFFSET 0.000\n')
    24342434            fl.write('  > NO_FITTED_OFFSET\n')
     2435            if RMCPdict['FitScale']:
     2436                fl.write('  > FITTED_SCALE\n')
     2437            else:
     2438                fl.write('  > NO_FITTED_SCALE\n')
    24352439            if Files[File][3] !='RMC':
    24362440                fl.write('  > %s\n'%Files[File][3])
    24372441            if 'reciprocal' in File:
    24382442                fl.write('  > CONVOLVE ::\n')
    2439                 fl.write('  > NO_FITTED_SCALE\n')
    24402443                if 'Xray' in File:
    24412444                    fl.write('  > RECIPROCAL_SPACE_FIT :: 1 %d 1\n'%lines)
Note: See TracChangeset for help on using the changeset viewer.