Changeset 1097


Ignore:
Timestamp:
Oct 10, 2013 10:35:50 AM (8 years ago)
Author:
vondreele
Message:

mods to restraint GUI & LS output for restraints
correct torsion & Ramachandran penalties

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIImath.py

    r1096 r1097  
    752752            XYZ[j] -= x
    753753            tor = getRestTorsion(XYZ,Amat)
    754             p,d1 = calcTorsionEnergy(tor,Coeff)
     754            p1,d1 = calcTorsionEnergy(tor,Coeff)
    755755            XYZ[j] += 2*x
    756756            tor = getRestTorsion(XYZ,Amat)
    757             p,d2 = calcTorsionEnergy(tor,Coeff)           
     757            p2,d2 = calcTorsionEnergy(tor,Coeff)           
    758758            XYZ[j] -= x
    759             deriv[j][i] = (d2-d1)/(2*dx)
     759            deriv[j][i] = (p2-p1)/(2*dx)
    760760    return deriv.flatten()
    761761
     
    824824            XYZ[j] -= x
    825825            phi,psi = getRestRama(XYZ,Amat)
    826             p,d1 = calcRamaEnergy(phi,psi,Coeff)
     826            p1,d1 = calcRamaEnergy(phi,psi,Coeff)
    827827            XYZ[j] += 2*x
    828828            phi,psi = getRestRama(XYZ,Amat)
    829             p,d2 = calcRamaEnergy(phi,psi,Coeff)
     829            p2,d2 = calcRamaEnergy(phi,psi,Coeff)
    830830            XYZ[j] -= x
    831             deriv[j][i] = (d2-d1)/(2*dx)
     831            deriv[j][i] = (p2-p1)/(2*dx)
    832832    return deriv.flatten()
    833833
  • trunk/GSASIIphsGUI.py

    r1076 r1097  
    16391639            PhaseName = rd.Phase['General']['Name']
    16401640            print 'Read phase '+str(PhaseName)+' from file '+str(G2frame.lastimport)
    1641             print rd.Phase['Atoms']
     1641            atomData = data['Atoms']
     1642            for atom in rd.Phase['Atoms'][:5]:
     1643                print atom
     1644            for atom in atomData[:5]:
     1645                print atom
     1646           
    16421647            return
    16431648                       
  • trunk/GSASIIrestrGUI.py

    r1077 r1097  
    765765        wtBox = wx.BoxSizer(wx.HORIZONTAL)
    766766        wtBox.Add(wx.StaticText(wind,-1,'Restraint weight factor:'),0,wx.ALIGN_CENTER_VERTICAL)
    767         wtfactor = wx.TextCtrl(wind,-1,value='%.2f'%(restData['wtFactor']),style=wx.TE_PROCESS_ENTER)
     767        wtfactor = wx.TextCtrl(wind,-1,value='%.2f'%(restData['wtFactor']),style=wx.TE_PROCESS_ENTER,size=(50,20))
    768768        wtfactor.Bind(wx.EVT_TEXT_ENTER,OnWtFactor)
    769769        wtfactor.Bind(wx.EVT_KILL_FOCUS,OnWtFactor)
     
    775775        if 'Bonds' in restData or 'Angles' in restData:
    776776            wtBox.Add(wx.StaticText(wind,-1,'Search range:'),0,wx.ALIGN_CENTER_VERTICAL)
    777             sRange = wx.TextCtrl(wind,-1,value='%.2f'%(restData['Range']),style=wx.TE_PROCESS_ENTER)
     777            sRange = wx.TextCtrl(wind,-1,value='%.2f'%(restData['Range']),style=wx.TE_PROCESS_ENTER,size=(50,20))
    778778            sRange.Bind(wx.EVT_TEXT_ENTER,OnRange)
    779779            sRange.Bind(wx.EVT_KILL_FOCUS,OnRange)
     
    875875            rowLabels = []
    876876            bad = []
     877            chisq = 0.
    877878            Types = [wg.GRID_VALUE_STRING,]+4*[wg.GRID_VALUE_FLOAT+':10,3',]
    878879            if 'macro' in General['Type']:
     
    886887                        XYZ = np.array(G2mth.GetAtomItemsById(Atoms,AtLookUp,indx,cx,3))
    887888                        calc = G2mth.getRestDist(XYZ,Amat)
     889                        chisq += bondRestData['wtFactor']*((obs-calc)/esd)**2
    888890                        table.append([name[:-3],calc,obs,esd,(obs-calc)/esd])
    889891                        rowLabels.append(str(i))               
     
    899901                        XYZ = G2mth.getSyXYZ(XYZ,ops,SGData)
    900902                        calc = G2mth.getRestDist(XYZ,Amat)
     903                        chisq += bondRestData['wtFactor']*((obs-calc)/esd)**2
    901904                        table.append([names[0]+'+('+ops[0]+') - '+names[1]+'+('+ops[1]+')',calc,obs,esd,(obs-calc)/esd])
    902905                        rowLabels.append(str(i))
     
    921924            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeValue, id=G2gd.wxID_RESRCHANGEVAL)
    922925            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeEsd, id=G2gd.wxID_RESTCHANGEESD)
     926            mainSizer.Add(wx.StaticText(BondRestr,-1,
     927                'Bond restraints: sum(wt*(delt/sig)^2) =    %.2f, mean(wt*(delt/sig)^2) =    %.2f'    \
     928                %(chisq,chisq/len(bondList))),0,wx.ALIGN_CENTER_VERTICAL)
    923929            mainSizer.Add(Bonds,0,)
    924930        else:
     
    9961002            rowLabels = []
    9971003            bad = []
     1004            chisq = 0.
    9981005            Types = [wg.GRID_VALUE_STRING,]+4*[wg.GRID_VALUE_FLOAT+':10,2',]
    9991006            if 'macro' in General['Type']:
     
    10071014                        XYZ = np.array(G2mth.GetAtomItemsById(Atoms,AtLookUp,indx,cx,3))
    10081015                        calc = G2mth.getRestAngle(XYZ,Amat)
     1016                        chisq += angleRestData['wtFactor']*((obs-calc)/esd)**2
    10091017                        table.append([name[:-3],calc,obs,esd,(obs-calc)/esd])
    10101018                        rowLabels.append(str(i))                               
     
    10221030                        XYZ = G2mth.getSyXYZ(XYZ,ops,SGData)
    10231031                        calc = G2mth.getRestAngle(XYZ,Amat)
     1032                        chisq += angleRestData['wtFactor']*((obs-calc)/esd)**2
    10241033                        table.append([name,calc,obs,esd,(obs-calc)/esd])
    10251034                        rowLabels.append(str(i))
     
    10441053            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeValue, id=G2gd.wxID_RESRCHANGEVAL)
    10451054            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeEsd, id=G2gd.wxID_RESTCHANGEESD)
     1055            mainSizer.Add(wx.StaticText(AngleRestr,-1,
     1056                'Angle restraints: sum(wt*(delt/sig)^2) =    %.2f, mean(wt*(delt/sig)^2) =    %.2f'    \
     1057                %(chisq,chisq/len(angleList))),0,wx.ALIGN_CENTER_VERTICAL)
    10461058            mainSizer.Add(Angles,0,)
    10471059        else:
     
    11101122            rowLabels = []
    11111123            bad = []
     1124            chisq = 0.
    11121125            Types = [wg.GRID_VALUE_STRING,]+3*[wg.GRID_VALUE_FLOAT+':10,2',]
    11131126            if 'macro' in General['Type']:
     
    11231136                        XYZ = np.array(G2mth.GetAtomItemsById(Atoms,AtLookUp,indx,cx,3))
    11241137                        calc = G2mth.getRestPlane(XYZ,Amat)
     1138                        chisq += planeRestData['wtFactor']*((calc)/esd)**2
    11251139                        table.append([name[:-3],calc,obs,esd])
    11261140                        rowLabels.append(str(i))
     
    11361150                        XYZ = G2mth.getSyXYZ(XYZ,ops,SGData)
    11371151                        calc = G2mth.getRestPlane(XYZ,Amat)
     1152                        chisq += planeRestData['wtFactor']*((calc)/esd)**2
    11381153                        name = ''
    11391154                        for a,atom in enumerate(atoms):
     
    11631178            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=G2gd.wxID_RESTDELETE)
    11641179            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeEsd, id=G2gd.wxID_RESTCHANGEESD)
     1180            mainSizer.Add(wx.StaticText(PlaneRestr,-1,
     1181                'Plane restraints: sum(wt*(delt/sig)^2) =    %.2f, mean(wt*(delt/sig)^2) =    %.2f'    \
     1182                %(chisq,chisq/len(planeList))),0,wx.ALIGN_CENTER_VERTICAL)
    11651183            mainSizer.Add(Planes,0,)
    11661184        else:
     
    12391257            rowLabels = []
    12401258            bad = []
     1259            chisq = 0.
    12411260            Types = [wg.GRID_VALUE_STRING,]+4*[wg.GRID_VALUE_FLOAT+':10,2',]
    12421261            if 'macro' in General['Type']:
     
    12501269                        XYZ = np.array(G2mth.GetAtomItemsById(Atoms,AtLookUp,indx,cx,3))
    12511270                        calc = G2mth.getRestChiral(XYZ,Amat)
     1271                        chisq += chiralRestData['wtFactor']*((obs-calc)/esd)**2
    12521272                        table.append([name,calc,obs,esd,(obs-calc)/esd])
    12531273                        rowLabels.append(str(i))
     
    12651285                        XYZ = G2mth.getSyXYZ(XYZ,ops,SGData)
    12661286                        calc = G2mth.getRestChiral(XYZ,Amat)
     1287                        chisq += chiralRestData['wtFactor']*((obs-calc)/esd)**2
    12671288                        table.append([name,calc,obs,esd,(obs-calc)/esd])
    12681289                        rowLabels.append(str(i))
     
    12871308            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeValue, id=G2gd.wxID_RESRCHANGEVAL)
    12881309            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeEsd, id=G2gd.wxID_RESTCHANGEESD)
     1310            mainSizer.Add(wx.StaticText(ChiralRestr,-1,
     1311                'Chiral volume restraints: sum(wt*(delt/sig)^2) =    %.2f, mean(wt*(delt/sig)^2) =    %.2f'    \
     1312                %(chisq,chisq/len(volumeList))),0,wx.ALIGN_CENTER_VERTICAL)
    12891313            mainSizer.Add(Volumes,0,)
    12901314        else:
     
    13211345            for row in rows:
    13221346                torsionList.remove(torsionList[row])
    1323             UpdateTorsionRestr(torsionRestData)               
     1347            wx.CallAfter(UpdateTorsionRestr,torsionRestData)               
    13241348           
    13251349        def OnChangeEsd(event):
     
    13351359                    torsionRestData['Torsions'][r][4] = parm
    13361360            dlg.Destroy()
    1337             UpdateTorsionRestr(torsionRestData)               
     1361            wx.CallAfter(UpdateTorsionRestr,torsionRestData)               
    13381362                                           
    13391363        TorsionRestr.DestroyChildren()
     
    13451369        coeffDict = torsionRestData['Coeff']
    13461370        torsionList = torsionRestData['Torsions']
    1347         mainSizer.Add(wx.StaticText(TorsionRestr,-1,'Torsion restraints:'),0,wx.ALIGN_CENTER_VERTICAL)
    13481371        if len(torsionList):
    13491372            table = []
    13501373            rowLabels = []
    13511374            bad = []
     1375            chisq = 0.
    13521376            Types = 2*[wg.GRID_VALUE_STRING,]+4*[wg.GRID_VALUE_FLOAT+':10,2',]
    13531377            if 'macro' in General['Type']:
     
    13621386                        tor = G2mth.getRestTorsion(XYZ,Amat)
    13631387                        restr,calc = G2mth.calcTorsionEnergy(tor,coeffDict[cofName])
     1388                        chisq += torsionRestData['wtFactor']*(restr/esd)**2
    13641389                        table.append([name,cofName,tor,calc,restr,esd])
    13651390                        rowLabels.append(str(i))
     
    13831408            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=G2gd.wxID_RESTDELETE)
    13841409            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeEsd, id=G2gd.wxID_RESTCHANGEESD)
     1410            mainSizer.Add(wx.StaticText(TorsionRestr,-1,
     1411                'Torsion restraints: sum(wt*(delt/sig)^2) =    %.2f, mean(wt*(delt/sig)^2) =    %.2f'    \
     1412                %(chisq,chisq/len(torsionList))),0,wx.ALIGN_CENTER_VERTICAL)
    13851413            mainSizer.Add(Torsions,0,)
    13861414           
     
    14651493            rowLabels = []
    14661494            bad = []
     1495            chisq = 0.
    14671496            Types = 2*[wg.GRID_VALUE_STRING,]+5*[wg.GRID_VALUE_FLOAT+':10,2',]
    14681497            if 'macro' in General['Type']:
     
    14771506                        phi,psi = G2mth.getRestRama(XYZ,Amat)
    14781507                        restr,calc = G2mth.calcRamaEnergy(phi,psi,coeffDict[cofName])
     1508                        chisq += ramaRestData['wtFactor']*(restr/esd)**2
    14791509                        table.append([name,cofName,phi,psi,calc,restr,esd])
    14801510                        rowLabels.append(str(i))
     
    14981528            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=G2gd.wxID_RESTDELETE)
    14991529            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeEsd, id=G2gd.wxID_RESTCHANGEESD)
     1530            mainSizer.Add(wx.StaticText(RamaRestr,-1,
     1531                'Ramachandran restraints: sum(wt*(delt/sig)^2) =    %.2f, mean(wt*(delt/sig)^2) =    %.2f'    \
     1532                %(chisq,chisq/len(ramaList))),0,wx.ALIGN_CENTER_VERTICAL)
    15001533            mainSizer.Add(Ramas,0,)
    15011534        else:
     
    15961629            rowLabels = []
    15971630            bad = []
     1631            chisq = 0.
    15981632            Types = [wg.GRID_VALUE_STRING,]+5*[wg.GRID_VALUE_FLOAT+':10,2',]
    15991633            colLabels = ['Atoms','mul*frac','factor','calc','obs','esd']
     
    16051639                    mulfrac = mul*frac
    16061640                    calcs = mul*frac*factors
     1641                    chisq += chiralRestData['wtFactor']*((obs-np.sum(calcs))/esd)**2
    16071642                    for iatm,[atom,mf,fr,clc] in enumerate(zip(atoms,mulfrac,factors,calcs)):
    16081643                        table.append([atom,mf,fr,clc,'',''])
     
    16421677            G2frame.dataFrame.Bind(wx.EVT_MENU, OnDeleteRestraint, id=G2gd.wxID_RESTDELETE)
    16431678            G2frame.dataFrame.Bind(wx.EVT_MENU, OnChangeValue, id=G2gd.wxID_RESRCHANGEVAL)
     1679            mainSizer.Add(wx.StaticText(ChemCompRestr,-1,
     1680                'Chemical composition restraints: sum(wt*(delt/sig)^2) =    %.2f, mean(wt*(delt/sig)^2) =    %.2f'    \
     1681                %(chisq,chisq/len(chemcompList))),0,wx.ALIGN_CENTER_VERTICAL)
    16441682            mainSizer.Add(ChemComps,0,)
    16451683        else:
  • trunk/GSASIIstrMath.py

    r1092 r1097  
    356356                            phi,psi = G2mth.getRestRama(XYZ,Amat)
    357357                            restr,calc = G2mth.calcRamaEnergy(phi,psi,coeffDict[cofName])                               
    358                         pVals.append(obs-calc)
     358                        pVals.append(restr)
    359359                        pWt.append(wt/esd**2)
    360                         pWsum[name] += wt*((obs-calc)/esd)**2
     360                        pWsum[name] += wt*(restr/esd)**2
    361361                elif name == 'ChemComp':
    362362                    for i,[indx,factors,obs,esd] in enumerate(itemRest[rest]):
     
    20032003        pSum = np.sum(pWt*pVals**2)
    20042004        for name in pWsum:
    2005             print '  Penalty function for %s = %.3f'%(name,pWsum[name])
     2005            print '  Penalty function for %8s = %.3f'%(name,pWsum[name])
    20062006        print 'Total penalty function: %.3f on %d terms'%(pSum,len(pVals))
    20072007        Nobs += len(pVals)
Note: See TracChangeset for help on using the changeset viewer.