Changeset 1930 for trunk/GSASIIphsGUI.py


Ignore:
Timestamp:
Jul 16, 2015 1:37:20 PM (7 years ago)
Author:
vondreele
Message:

allow exclude atoms from H-atom position calcs.
hydrogen add complete(?) - needs testing
new hydrogen update implemented

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r1928 r1930  
    15711571                if 'C' in neigh[0] or 'N' in neigh[0]:
    15721572                    nH = 4-len(neigh[1][0])
    1573                 bonds = dict(neigh[1][0])
     1573                bonds = {item[0]:item[1:] for item in neigh[1][0]}
    15741574                nextName = ''
    15751575                if len(bonds) == 1:
     
    15771577                for bond in bonds:
    15781578                    if 'C' in neigh[0]:
    1579                         if 'C' in bond and bonds[bond] < 1.42:
     1579                        if 'C' in bond and bonds[bond][0] < 1.42:
    15801580                            nH -= 1
    15811581                            break
    1582                         elif 'O' in bond and bonds[bond] < 1.3:
     1582                        elif 'O' in bond and bonds[bond][0] < 1.3:
    15831583                            nH -= 1
    15841584                            break
    1585                     elif 'O' in neigh[0] and 'C' in bonds and bonds[bond] < 1.3:
     1585                    elif 'O' in neigh[0] and 'C' in bonds and bonds[bond][0] < 1.3:
    15861586                        nH -= 1
    15871587                        break
     
    15951595                    Neigh.append(neigh)
    15961596            if Neigh:
     1597                HydIds = {}
    15971598                mapError = False
    15981599                dlg = G2gd.AddHatomDialog(G2frame,Neigh,data)
     
    16071608                            continue                           
    16081609                        Hxyz = G2mth.AddHydrogens(AtLookUp,generalData,atomData,AddHydIds[ineigh])
    1609                         for X in Hxyz:
     1610                        for iX,X in enumerate(Hxyz):
    16101611                            Nat += 1
    16111612                            AtomAdd(X[0],X[1],X[2],'H','H(%d)'%(Nat))
     1613                            Id = data['Atoms'][-1][cia+8]
     1614                            HydIds[Id] = [iX,AddHydIds[ineigh]]
    16121615                if mapError:
    16131616                    G2frame.ErrorDialog('Add H atom error','Adding O-H atoms requires delt-F map')
    16141617                SetupGeneral()
     1618                data['General']['HydIds'] = HydIds
     1619                G2frame.dataFrame.AtomEdit.Enable(G2gd.wxID_UPDATEHATOM,True)
    16151620                FillAtomsGrid(Atoms)
    16161621                dlg.Destroy()
     
    16181623            else:
    16191624                wx.MessageBox('No candidates found',caption='Add H atom Error',style=wx.ICON_EXCLAMATION)
     1625               
     1626    def OnHydAtomUpdate(event):
     1627        Error = ''
     1628        generalData = data['General']
     1629        cx,ct,cs,cia = generalData['AtomPtrs']
     1630        atomData = data['Atoms']
     1631        AtLookUp = G2mth.FillAtomLookUp(atomData,cia+8)
     1632        HydIds = data['General']['HydIds']
     1633        for HId in HydIds:
     1634            hydIds = HydIds[HId]
     1635            num = hydIds[0]
     1636            Hxyz = G2mth.AddHydrogens(AtLookUp,generalData,atomData,hydIds[1])
     1637            try:
     1638                data['Atoms'][AtLookUp[HId]][cx:cx+3] = Hxyz[num]
     1639            except KeyError:
     1640                Error += 'Hydrogen atom not in atom list - ignored\n'
     1641                continue
     1642        FillAtomsGrid(Atoms)
     1643        G2plt.PlotStructure(G2frame,data)
     1644        if Error:
     1645            wx.MessageBox(Error,caption=' H atom update Error',style=wx.ICON_EXCLAMATION)
    16201646       
    16211647    def OnAtomMove(event):
     
    62626288        G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomViewInsert, id=G2gd.wxID_ATOMVIEWINSERT)
    62636289        G2frame.dataFrame.Bind(wx.EVT_MENU, OnHydAtomAdd, id=G2gd.wxID_ADDHATOM)
     6290        G2frame.dataFrame.Bind(wx.EVT_MENU, OnHydAtomUpdate, id=G2gd.wxID_UPDATEHATOM)
    62646291        G2frame.dataFrame.Bind(wx.EVT_MENU, OnAtomMove, id=G2gd.wxID_ATOMMOVE)
    62656292        G2frame.dataFrame.Bind(wx.EVT_MENU, AtomDelete, id=G2gd.wxID_ATOMSEDITDELETE)
     
    62726299        G2frame.dataFrame.Bind(wx.EVT_MENU, OnDistAnglePrt, id=G2gd.wxID_ATOMSPDISAGL)
    62736300        G2frame.dataFrame.Bind(wx.EVT_MENU, OnIsoDistortCalc, id=G2gd.wxID_ISODISP)
     6301        if 'HydIds' in data['General']:
     6302            G2frame.dataFrame.AtomEdit.Enable(G2gd.wxID_UPDATEHATOM,True)
     6303        else:
     6304            G2frame.dataFrame.AtomEdit.Enable(G2gd.wxID_UPDATEHATOM,False)
    62746305        for id in G2frame.dataFrame.ReImportMenuId:     #loop over submenu items
    62756306            G2frame.dataFrame.Bind(wx.EVT_MENU, OnReImport, id=id)
Note: See TracChangeset for help on using the changeset viewer.