Changeset 3054


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

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

Location:
trunk
Files:
3 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)
  • trunk/GSASIIphsGUI.py

    r3048 r3054  
    76507650            resultsSizer.Add(resultsGrid,0,wx.EXPAND)
    76517651            return resultsSizer
     7652
     7653        def OnSelect(event):
     7654            rbId = rbids[select.GetSelection()]
     7655            wx.CallLater(100,RepaintRBInfo,rbId)
     7656           
     7657        def RepaintRBInfo(rbId,Scroll=0):
     7658            oldFocus = wx.Window.FindFocus()
     7659            G2frame.bottomSizer.DeleteWindows()
     7660            Indx.clear()
     7661            rbObj = data['MCSA']['Models'][rbId]
     7662            G2frame.bottomSizer.Insert(0,rbSizer(rbObj))
     7663            mainSizer.Layout()
     7664            G2frame.dataWindow.Refresh()
     7665            G2frame.dataWindow.SendSizeEvent()
     7666            wx.CallAfter(oldFocus.SetFocus)
    76527667       
    76537668        # UpdateMCSA executable code starts here
     
    76757690            mainSizer.Add(wx.StaticText(G2frame.MCSA,-1,'MC/SA models:'),0,WACV)
    76767691            mainSizer.Add((5,5),0)
    7677             for model in data['MCSA']['Models']:
    7678                 Xsize = 500
     7692            rbNames = []
     7693            rbids = []
     7694            for im,model in enumerate(data['MCSA']['Models']):
    76797695                if model['Type'] == 'MD':
    76807696                    mainSizer.Add(MDSizer(model))
     
    76827698                    Asizer = atomSizer(model)
    76837699                    mainSizer.Add(Asizer)
    7684                     Xsize = max(Asizer.GetMinSize()[0],Xsize)
    76857700                else:
    7686                     Rsizer = rbSizer(model)
    7687                     mainSizer.Add(Rsizer)
    7688                     Xsize = max(Rsizer.GetMinSize()[0],Xsize)
    7689                 G2G.HorizontalLine(mainSizer,G2frame.MCSA)
     7701                    rbNames.append(model['name'])
     7702                    rbids.append(im)
     7703            G2G.HorizontalLine(mainSizer,G2frame.MCSA)
     7704            if len(rbNames):
     7705                rbName = rbNames[0]
     7706                select = wx.ListBox(G2frame.MCSA,choices=rbNames,style=wx.LB_SINGLE,size=(-1,65))
     7707                select.SetSelection(rbNames.index(rbName))
     7708                select.SetFirstItem(rbNames.index(rbName))
     7709                select.Bind(wx.EVT_LISTBOX,OnSelect)
     7710                mainSizer.Add(select,0,WACV)
     7711                G2frame.bottomSizer = wx.BoxSizer(wx.VERTICAL)
     7712                G2frame.bottomSizer.Add(rbSizer(data['MCSA']['Models'][rbids[0]]))
     7713                mainSizer.Add(G2frame.bottomSizer)
    76907714               
    76917715        if not data['MCSA']['Results']:
  • trunk/GSASIIstrIO.py

    r3046 r3054  
    18831883        SGData = General['SGData']
    18841884        Atoms = Phase['Atoms']
     1885        AtLookup = []
    18851886        if Atoms and not General.get('doPawley'):
    18861887            cx,ct,cs,cia = General['AtomPtrs']
Note: See TracChangeset for help on using the changeset viewer.