Ignore:
Timestamp:
Sep 7, 2017 4:13:57 PM (4 years ago)
Author:
vondreele
Message:

fixes to MCSA gui routines; trap <3 atom RBs
fix missing AtLookup? error in LeBail? refinements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIconstrGUI.py

    r3000 r3054  
    15051505                break
    15061506            items = txtStr.split()
    1507         rbXYZ = np.array(rbXYZ)-np.array(rbXYZ[0])
    1508         data['Residue'][rbId] = {'RBname':'UNKRB','rbXYZ':rbXYZ,'rbTypes':rbTypes,
    1509             'atNames':atNames,'rbRef':[0,1,2,False],'rbSeq':[],'SelSeq':[0,0],'useCount':0}
    1510         data['RBIds']['Residue'].append(rbId)
    1511         print 'Rigid body UNKRB added'
     1507        if len(atNames) < 3:
     1508            G2G.G2MessageBox(G2frame,'Not enough atoms in rigid body; must be 3 or more')
     1509        else:
     1510            rbXYZ = np.array(rbXYZ)-np.array(rbXYZ[0])
     1511            data['Residue'][rbId] = {'RBname':'UNKRB','rbXYZ':rbXYZ,'rbTypes':rbTypes,
     1512                'atNames':atNames,'rbRef':[0,1,2,False],'rbSeq':[],'SelSeq':[0,0],'useCount':0}
     1513            data['RBIds']['Residue'].append(rbId)
     1514            print 'Rigid body UNKRB added'
    15121515        text.close()
    15131516        UpdateResidueRB()
     
    15241527        IndB = ma.nonzero(ma.masked_greater(dist-0.85*sumR,0.))
    15251528        for j in IndB[0]:
    1526             if j != Orig:
     1529            if j != Orig and atTypes[j] != 'H':
    15271530                Neigh.append(atNames[j])
    15281531        return Neigh
     
    18271830                wx.CallAfter(UpdateResidueRB)
    18281831               
     1832            def OnStripH(event):
     1833                Obj = event.GetEventObject()
     1834                rbId = Indx[Obj.GetId()]
     1835                if rbId in data['Residue']:
     1836                    newNames = []
     1837                    newTypes = []
     1838                    newXYZ = []
     1839                    for i,atype in enumerate(rbData['rbTypes']):
     1840                        if atype != 'H':
     1841                            newNames.append(rbData['atNames'][i])
     1842                            newTypes.append(rbData['rbTypes'][i])
     1843                            newXYZ.append(rbData['rbXYZ'][i])
     1844                    rbData['atNames'] = newNames
     1845                    rbData['rbTypes'] = newTypes
     1846                    rbData['rbXYZ'] = newXYZ
     1847                wx.CallAfter(UpdateResidueRB)
     1848                   
    18291849            def OnPlotRB(event):
    18301850                Obj = event.GetEventObject()
     
    18511871                delRB.Bind(wx.EVT_CHECKBOX,OnDelRB)
    18521872                nameSizer.Add(delRB,0,wx.ALIGN_CENTER_VERTICAL)
     1873                if 'H'  in rbData['rbTypes']:
     1874                    stripH = wx.CheckBox(ResidueRBDisplay,-1,'Strip H-atoms?')
     1875                    Indx[stripH.GetId()] = rbId
     1876                    stripH.Bind(wx.EVT_CHECKBOX,OnStripH)
     1877                    nameSizer.Add(stripH,0,wx.ALIGN_CENTER_VERTICAL)
    18531878            return nameSizer
    18541879           
     
    18911916                sel = Obj.GetValue()
    18921917                ind = atNames.index(sel)
     1918                if rbData['rbTypes'][ind] == 'H':
     1919                    G2G.G2MessageBox(G2frame,'You should not select an H-atom for rigid body orientation')
    18931920                rbData['rbRef'][iref] = ind
    18941921                FillRefChoice(rbId,rbData)
     
    19401967            if rbData['rbRef'][3] or rbData['useCount']:
    19411968                refAtmSizer.Add(wx.StaticText(ResidueRBDisplay,-1,
    1942                     'Orientation reference atoms A-B-C: %s, %s, %s'%(atNames[rbRef[0]], \
     1969                    'Orientation reference non-H atoms A-B-C: %s, %s, %s'%(atNames[rbRef[0]], \
    19431970                     atNames[rbRef[1]],atNames[rbRef[2]])),0)
    19441971            else:
    19451972                refAtmSizer.Add(wx.StaticText(ResidueRBDisplay,-1,
    1946                     'Orientation reference atoms A-B-C: '),0,wx.ALIGN_CENTER_VERTICAL)
     1973                    'Orientation reference non-H atoms A-B-C: '),0,wx.ALIGN_CENTER_VERTICAL)
    19471974                refObj = [0,0,0]
    19481975                for i in range(3):
     
    20632090        for rbId in data['RBIds']['Residue']:
    20642091            rbData = data['Residue'][rbId]
     2092            if len(rbData['rbXYZ']) < 3:    #patch - skip around bad RBs with too few atoms
     2093                continue
    20652094            FillRefChoice(rbId,rbData)
    20662095            ResidueRBSizer.Add(rbNameSizer(rbId,rbData),0)
Note: See TracChangeset for help on using the changeset viewer.