Changeset 5152


Ignore:
Timestamp:
Jan 21, 2022 2:55:16 PM (23 months ago)
Author:
vondreele
Message:

fix RMC GUI options for PDFfit
fix background Bragg peak fits for EDX data

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r5147 r5152  
    49204920            Indx = {}
    49214921            mainSizer = wx.BoxSizer(wx.VERTICAL)
    4922             if G2frame.RMCchoice == 'PDFfit'and RMCPdict['refinement'] != 'sequential':
     4922            if G2frame.RMCchoice == 'PDFfit':
    49234923                topSizer = wx.BoxSizer(wx.HORIZONTAL)
    49244924                reftype = wx.RadioBox(G2frame.FRMC,label='PDFfit refinement type:',choices=['normal','sequential'])
     
    49964996                            fileSizer.Add((-1,-1),0)
    49974997                            fileSizer.Add((-1,-1),0)
    4998                     elif Rfile != 'Select file': # file specified, but must not exist
    4999                         RMCPdict['files'][fil][0] = 'Select file' # set filSel?
     4998                    elif 'Select' not in Rfile: # file specified, but must not exist
     4999                        RMCPdict['files'][fil][0] = 'Select' # set filSel?
    50005000                        fileSizer.Add(wx.StaticText(G2frame.FRMC,
    50015001                                label='Warning: file not found.\nWill be removed'),0)
     
    50035003                        fileSizer.Add((-1,-1),0)
    50045004                    else:
    5005                         RMCPdict['files'][fil][0] = 'Select file' # set filSel?
     5005                        RMCPdict['files'][fil][0] = 'Select' # set filSel?
    50065006                        #fileSizer.Add((-1,-1),0)
    50075007                        fileSizer.Add((-1,-1),0)
     
    50115011                return mainSizer
    50125012           
    5013             elif G2frame.RMCchoice == 'PDFfit' and RMCPdict['refinement'] == 'sequential':
     5013            if G2frame.RMCchoice == 'PDFfit' and RMCPdict['refinement'] == 'sequential':
    50145014               
    50155015                def OnAddPDF(event):
     
    52125212(2016), 37, 1102-1111. doi: https://doi.org/10.1002/jcc.24304
    52135213 '''))
    5214             if G2pwd.findfullrmc() is None:
    5215                 mainSizer.Add(wx.StaticText(G2frame.FRMC,
    5216                     label="\nsorry, fullrmc not installed or was not located"))
    5217                 return mainSizer
     5214            # if G2pwd.findfullrmc() is None:
     5215            #     mainSizer.Add(wx.StaticText(G2frame.FRMC,
     5216            #         label="\nsorry, fullrmc not installed or was not located"))
     5217            #     return mainSizer
    52185218            G2frame.dataWindow.FRMCDataEdit.Enable(G2G.wxID_SETUPRMC,True)
    52195219            G2frame.dataWindow.FRMCDataEdit.Enable(G2G.wxID_RUNRMC,True)
     
    52265226            Atypes = [atype.split('+')[0].split('-')[0] for atype in data['General']['AtomTypes']]
    52275227            aTypes = dict(zip(Atypes,len(Atypes)*[0.10,]))
    5228             if len(data['RMC']['fullrmc'].get('aTypes',-1)) != len(aTypes):
     5228            if len(data['RMC']['fullrmc'].get('aTypes',{})) != len(aTypes):
    52295229                #print('atypes has changed')
    52305230                atSeq = list(aTypes.keys())
     
    60226022                        strval = atmGrid.GetCellValue(r,c).strip()
    60236023                        try:
    6024                             if strval == '' or ('@' in strval and int(strval.split('@')[-1]) >= 20):
     6024#                            if strval == '' or ('@' in strval and int(strval.split('@')[-1]) >= 20):
     6025                            if strval == '' or '@' in strval:
    60256026                                RMCPdict['AtomConstr'][r][c+1] = strval
    60266027                            else:
     
    60286029                        except ValueError:
    60296030                            atmGrid.SetCellValue(r,c,RMCPdict['AtomConstr'][r][c+1])
    6030                             wx.MessageBox('ERROR - atom constraints must be blank or have "@n" at end with n >= 20',
     6031                            wx.MessageBox('ERROR - atom constraints must be blank or have "@n" with n >= 20',
    60316032                                style=wx.ICON_ERROR)
    60326033               
     
    60516052                    atomVarSizer.Add(wx.StaticText(G2frame.FRMC,label=item),0,WACV)
    60526053                    atomVarSizer.Add(G2G.ValidatedTxtCtrl(G2frame.FRMC,RMCPdict['AtomVar'],
    6053                         item,xmin=-1.,xmax=1.,size=(70,25)),0,WACV)
     6054                        item,xmin=-3.,xmax=3.,size=(70,25)),0,WACV)
    60546055                return atomVarSizer
    60556056
     
    63196320            SeqResult = {'SeqPseudoVars':{},'SeqParFitEqList':[]}
    63206321            SeqResult['histNames'] = []         #this clears the previous seq. result!
     6322            SeqNames = []
    63216323            for itm in range(len(RMCPdict['seqfiles'])):
    6322                 SeqResult['histNames'].append([itm,RMCPdict['seqfiles'][itm][0]])
     6324                SeqNames.append([itm,RMCPdict['seqfiles'][itm][0]])
    63236325            if RMCPdict['SeqReverse']:
    6324                 SeqResult['histNames'].reverse()
    6325             nPDF = len(SeqResult['histNames'])
     6326                SeqNames.reverse()
     6327            nPDF = len(SeqNames)
    63266328            pgbar = wx.ProgressDialog('Sequential PDFfit','PDF G(R) done = 0',nPDF+1,
    63276329                style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_CAN_ABORT)
    63286330            newParms = {}
    6329             for itm,item in enumerate(SeqResult['histNames']):
    6330                 PDFfile = RMCPdict['seqfiles'][item[0]]
     6331            for itm,Item in enumerate(SeqNames):
     6332                PDFfile = RMCPdict['seqfiles'][Item[0]]
    63316333                pfdata = PDFfile[1]['G(R)'][1].T
    63326334#                    pfname = PDFfile[0].replace(' ','_')
     
    63986400                PDFctrl['G(R)'][1] = XYobs
    63996401                G2frame.GPXtree.SetItemPyData(G2gd.GetGPXtreeItemId(G2frame,pId,'PDF Controls'),PDFctrl)
     6402                SeqResult['histNames'].append(Item[1])
    64006403                GoOn = pgbar.Update(itm,newmsg='PDF G(R) done = %d'%(itm))
    64016404                if not GoOn[0]:
  • trunk/GSASIIpwd.py

    r5144 r5152  
    900900    if 'T' in dataType:
    901901        q = 2.*np.pi*parmDict[pfx+'difC']/xdata
     902    elif 'E' in dataType:
     903        const = 4.*np.pi*npsind(parmDict[pfx+'2-theta']/2.0)
     904        q = const*xdata
    902905    else:
    903906        wave = parmDict.get(pfx+'Lam',parmDict.get(pfx+'Lam1',1.0))
     
    991994            pkP = parmDict[pfx+'BkPkpos;'+str(iD)]
    992995            pkI = max(parmDict[pfx+'BkPkint;'+str(iD)],0.1)
    993             pkS = max(parmDict[pfx+'BkPksig;'+str(iD)],1.)
     996            pkS = max(parmDict[pfx+'BkPksig;'+str(iD)],0.01)
    994997            pkG = max(parmDict[pfx+'BkPkgam;'+str(iD)],0.1)
    995998            if 'C' in dataType:
    996999                Wd,fmin,fmax = getWidthsCW(pkP,pkS,pkG,.002)
     1000            elif 'E' in dataType:
     1001                Wd,fmin,fmax = getWidthsED(pkP,pkS)
    9971002            else: #'T'OF
    9981003                Wd,fmin,fmax = getWidthsTOF(pkP,1.,1.,pkS,pkG)
     
    10151020                ybi = pkI*getEpsVoigt(pkP,1.,1.,pkS/100.,pkG/1.e4,xdata[iBeg:iFin])[0]
    10161021                yb[iBeg:iFin] += ybi
     1022            elif 'E' in dataType:
     1023                ybi = pkI*getPsVoigt(pkP,pkS*10.**4,pkG*100.,xdata[iBeg:iFin])[0]
     1024                yb[iBeg:iFin] += ybi
    10171025            sumBk[2] += np.sum(ybi)
    10181026            iD += 1       
     
    10311039    if 'T' in dataType:
    10321040        q = 2.*np.pi*parmDict[hfx+'difC']/xdata
     1041    elif 'E' in dataType:
     1042        const = 4.*np.pi*npsind(parmDict[hfx+'2-theta']/2.0)
     1043        q = const*xdata
    10331044    else:
    10341045        wave = parmDict.get(hfx+'Lam',parmDict.get(hfx+'Lam1',1.0))
     
    11231134            pkP = parmDict[hfx+'BkPkpos;'+str(iD)]
    11241135            pkI = max(parmDict[hfx+'BkPkint;'+str(iD)],0.1)
    1125             pkS = max(parmDict[hfx+'BkPksig;'+str(iD)],1.0)
     1136            pkS = max(parmDict[hfx+'BkPksig;'+str(iD)],0.01)
    11261137            pkG = max(parmDict[hfx+'BkPkgam;'+str(iD)],0.1)
    11271138            if 'C' in dataType:
    11281139                Wd,fmin,fmax = getWidthsCW(pkP,pkS,pkG,.002)
     1140            elif 'E' in dataType:
     1141                Wd,fmin,fmax = getWidthsED(pkP,pkS)
    11291142            else: #'T' or 'B'
    11301143                Wd,fmin,fmax = getWidthsTOF(pkP,1.,1.,pkS,pkG)
     
    11401153            if 'C' in dataType:
    11411154                Df,dFdp,dFds,dFdg,x = getdFCJVoigt3(pkP,pkS,pkG,.002,xdata[iBeg:iFin])
     1155            elif 'E' in dataType:
     1156                Df,dFdp,dFds,dFdg = getdPsVoigt(pkP,pkS*10.**4,pkG*100.,xdata[iBeg:iFin])
    11421157            else:   #'T'OF
    11431158                Df,dFdp,x,x,dFds,dFdg = getdEpsVoigt(pkP,1.,1.,pkS,pkG,xdata[iBeg:iFin])
     
    30773092        for it,item in enumerate(atom):
    30783093            if it > 1 and item:
    3079                 itnum = item.split('@')[1]
    3080                 varname = '@%s'%itnum
    3081                 varnames.append(varname)
    3082                 if it < 6:
    3083                     if varname not in AtomVar:
    3084                         AtomVar[varname] = 0.0      #put ISODISTORT mode displ here?
    3085                 else:
    3086                     for i in range(3):
     3094                itms = item.split('@')
     3095                for itm in itms[1:]:
     3096                    itnum = itm[:2]
     3097                    varname = '@%s'%itnum
     3098                    varnames.append(varname)
     3099                    if it < 6:
    30873100                        if varname not in AtomVar:
    3088                             AtomVar[varname] = Atoms[iat][cia+i+2]
     3101                            AtomVar[varname] = 0.0      #put ISODISTORT mode displ here?
     3102                    else:
     3103                        for i in range(3):
     3104                            if varname not in AtomVar:
     3105                                AtomVar[varname] = Atoms[iat][cia+i+2]
    30893106    varnames = set(varnames)
    30903107    for name in list(AtomVar.keys()):       #clear out unused parameters
     
    32223239            names = ['pf.x(%d)'%(iat+1),'pf.y(%d)'%(iat+1),'pf.z(%d)'%(iat+1),'pf.occ(%d)'%(iat+1)]
    32233240            if it > 1 and item:
    3224                 itnum = item.split('@')[1]
    3225                 if it < 6:
    3226                     rundata += 'pf.constrain(%s,"%s")\n'%(names[it-2],item)
    3227                     if itnum not in used:
    3228                         parms[itnum] = [AtomVar['@%s'%itnum],names[it-2].split('.')[1]]
    3229                         used.append(itnum)
    3230                 else:
    3231                     uijs = ['pf.u11(%d)'%(iat+1),'pf.u22(%d)'%(iat+1),'pf.u33(%d)'%(iat+1)]     
    3232                     for i in range(3):
    3233                         rundata += 'pf.constrain(%s,"%s")\n'%(uijs[i],item)
     3241                itms = item.split('@')
     3242                for itm in itms[1:]:
     3243                    itnum = itm[:2]
     3244                    if it < 6:
     3245                        rundata += 'pf.constrain(%s,"%s")\n'%(names[it-2],item)
    32343246                        if itnum not in used:
    3235                             parms[itnum] = [AtomVar['@%s'%itnum],uijs[i].split('.')[1]]
     3247                            parms[itnum] = [AtomVar['@%s'%itnum],names[it-2].split('.')[1]]
    32363248                            used.append(itnum)
     3249                    else:
     3250                        uijs = ['pf.u11(%d)'%(iat+1),'pf.u22(%d)'%(iat+1),'pf.u33(%d)'%(iat+1)]     
     3251                        for i in range(3):
     3252                            rundata += 'pf.constrain(%s,"%s")\n'%(uijs[i],item)
     3253                            if itnum not in used:
     3254                                parms[itnum] = [AtomVar['@%s'%itnum],uijs[i].split('.')[1]]
     3255                                used.append(itnum)
    32373256                           
    32383257    if 'sequential' in RMCPdict['refinement']:
     
    33323351    for iline,line in enumerate(lines):
    33333352        if 'Rw - ' in line:
    3334             Rwp = float(line.split(':')[1])
     3353            if 'nan' in line:
     3354                Rwp = 100.0
     3355            else:
     3356                Rwp = float(line.split(':')[1])
    33353357    results = resline.replace('(','').split(')')[:-1]
    33363358    results = ['@'+result.lstrip() for result in results]
Note: See TracChangeset for help on using the changeset viewer.