Changeset 854


Ignore:
Timestamp:
Feb 20, 2013 9:51:42 AM (11 years ago)
Author:
vondreele
Message:

more rigid body stuff

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIconstrGUI.py

    r852 r854  
    12711271            def ChangeAngle(event):
    12721272                Obj = event.GetEventObject()
    1273                 rbId,Seq = Indx[Obj.GetId()]
     1273                rbId,Seq = Indx[Obj.GetId()][:2]
    12741274                val = Seq[2]
    12751275                try:
     
    13011301            seqSizer.Add(bond,0,wx.ALIGN_CENTER_VERTICAL)
    13021302            Indx[radBt.GetId()] = [Seq,iSeq,ang.GetId()]
    1303             Indx[ang.GetId()] = [rbId,Seq]
     1303            Indx[ang.GetId()] = [rbId,Seq,ang]
    13041304            ang.Bind(wx.EVT_TEXT_ENTER,ChangeAngle)
    13051305            ang.Bind(wx.EVT_KILL_FOCUS,ChangeAngle)
     
    13381338            for seq in rbData['rbSeq']:
    13391339                for i in seq[3]:
    1340                     choiceIds.remove(i)
     1340                    try:
     1341                        choiceIds.remove(i)
     1342                    except ValueError:
     1343                        pass
    13411344            rbRef = rbData['rbRef']
    13421345            for i in range(3):
    1343                 choiceIds.remove(rbRef[i])
     1346                try:
     1347                    choiceIds.remove(rbRef[i])
     1348                except ValueError:
     1349                    pass
    13441350            refChoice[rbId] = [choiceIds[:],choiceIds[:],choiceIds[:]]
    13451351            for i in range(3):
  • trunk/GSASIIphsGUI.py

    r853 r854  
    16411641        rbId = ran.randint(0,sys.maxint)
    16421642        RBData['Residue'][rbId] = {'RBname':'UNKRB','rbXYZ':rbXYZ,'rbTypes':rbType,
    1643             'atNames':atNames,'rbRef':[0,1,2],'rbSeq':[],'SelSeq':[0,0],'useCount':0}
     1643            'atNames':atNames,'rbRef':[0,1,2,False],'rbSeq':[],'SelSeq':[0,0],'useCount':0}
    16441644        G2frame.dataFrame.SetStatusText('New rigid body UNKRB added to set of Residue rigid bodies')
    16451645
     
    31873187                    refName.append(reftype+' '+str(rbRef[0]))
    31883188                atNames = [{},{},{}]
     3189                AtNames = {}
    31893190                for iatm,atom in enumerate(atomData):
     3191                    AtNames[atom[ct-1]] = iatm
    31903192                    for i,reftype in enumerate(refType):
    31913193                        if atom[ct] == reftype:
    31923194                            atNames[i][atom[ct-1]] = iatm
    31933195                data['testRBObj']['atNames'] = atNames
     3196                data['testRBObj']['AtNames'] = AtNames
    31943197                data['testRBObj']['rbObj'] = {'Orig':[[0,0,0],False],'Orient':[[0,0,0,1.],' '],
    3195                     'RBId':rbId,'Torsions':[],'numChain':'','RBname':rbData[rbType][rbId]['RBname']}               
     3198                    'RBId':rbId,'Torsions':[],'numChain':'','RBname':rbData[rbType][rbId]['RBname']}
     3199                data['testRBObj']['torAtms'] = []               
    31963200                for item in rbData[rbType][rbId].get('rbSeq',[]):
    3197                     data['testRBObj']['rbObj']['Torsions'].append([0.0,False])
     3201                    data['testRBObj']['rbObj']['Torsions'].append([item[2],False])
     3202                    data['testRBObj']['torAtms'].append([-1,-1,-1])
    31983203                Draw()
    31993204               
     
    32733278                    data['testRBObj']['rbObj']['Orig'][0] = Nxyz-Oxyz
    32743279                Draw()
     3280               
     3281            def OnTorAngle(event):
     3282                Obj = event.GetEventObject()
     3283                tor = Indx[Obj.GetId()]
     3284                Tors = data['testRBObj']['rbObj']['Torsions'][tor]
     3285                try:
     3286                    value = Obj.GetValue()
     3287                except ValueError:
     3288                    value = Tors[0]
     3289                Tors[0] = value
     3290                Obj.SetValue('%8.3f'%(value))
     3291                G2plt.PlotStructure(G2frame,data)
     3292
     3293            def OnTorAtPick(event):
     3294                Obj = event.GetEventObject()
     3295                tor,ind = Indx[Obj.GetId()]
     3296                atName = Obj.GetValue()
     3297                data['testRBObj']['torAtms'][tor][ind] = AtNames[atName]
     3298                if all([i > -1 for i in data['testRBObj']['torAtms'][tor]]):
     3299                    rbObj = data['testRBObj']['rbObj']
     3300                    rbId = rbObj['RBId']
     3301                    rbXYZ = rbData['Residue'][rbId]['rbXYZ']
     3302                    Oatm,Patm,Ratm = data['testRBObj']['torAtms'][tor]
     3303                    Seq = rbData['Residue'][rbId]['rbSeq'][tor]
     3304                    Tors = data['testRBObj']['rbObj']['Torsions'][tor]
     3305                    VBR = rbXYZ[Oatm]-rbXYZ[Patm]
     3306                    VAR = rbXYZ[Ratm]-rbXYZ[Patm]
     3307                    VAC = np.inner(Amat,atomData[Seq[3][0]][cx:cx+3])-np.inner(Amat,atomData[Seq[1]][cx:cx+3])
     3308                    QuatA,D = G2mth.makeQuat(VAR,VAC,VBR)
     3309                    angle = 180.*D/np.pi
     3310                    Tors[0] = angle
     3311                G2plt.PlotStructure(G2frame,data)
     3312                Draw()
    32753313
    32763314            if len(data['testRBObj']):
     
    32863324                Osizers = []
    32873325                OriSizer = wx.FlexGridSizer(1,6,5,5)
    3288                 Orig = data['testRBObj']['rbObj']['Orig'][0]
    3289                 Orien = data['testRBObj']['rbObj']['Orient'][0]
     3326                rbObj = data['testRBObj']['rbObj']
     3327                rbId = rbObj['RBId']
     3328                Orig = rbObj['Orig'][0]
     3329                Orien = rbObj['Orient'][0]
    32903330                rbRef = data['testRBObj']['rbRef']
     3331                Torsions = rbObj['Torsions']
    32913332                refName = []
    32923333                for ref in rbRef:
     
    33333374                mainSizer.Add(OriSizer)
    33343375                mainSizer.Add((5,5),0)
    3335                
     3376                if Torsions:
     3377                    AtNames = data['testRBObj']['AtNames']
     3378                    rbAtTypes = data['testRBObj']['rbAtTypes']
     3379                    TorSizer = wx.FlexGridSizer(1,9,5,5)
     3380                    TorAtms = data['testRBObj']['torAtms']
     3381                    rbSeq = rbData['Residue'][rbId]['rbSeq']
     3382                    for t,[torsion,seq] in enumerate(zip(Torsions,rbSeq)):
     3383                        torName = []
     3384                        for item in [seq[0],seq[1],seq[3][0]]:
     3385                            torName.append(data['testRBObj']['rbAtTypes'][item]+str(item))
     3386                        TorSizer.Add(wx.StaticText(RigidBodies,-1,'Side chain torsion: Select match to:'),0,wx.ALIGN_CENTER_VERTICAL)
     3387                        for i,item in enumerate([seq[0],seq[1],seq[3][0]]):
     3388                            atChoice = []
     3389                            for at in AtNames.keys():
     3390                                if rbAtTypes[item] in at:
     3391                                    atChoice.append(at)
     3392                            Value = ''
     3393                            if TorAtms[t][i] > -1:
     3394                                Value = atomData[TorAtms[t][i]][ct-1]
     3395                            TorSizer.Add(wx.StaticText(RigidBodies,-1,torName[i]),0,wx.ALIGN_CENTER_VERTICAL)
     3396                            torPick = wx.ComboBox(RigidBodies,-1,value=Value,
     3397                                choices=atChoice,style=wx.CB_READONLY|wx.CB_DROPDOWN)
     3398                            torPick.Bind(wx.EVT_COMBOBOX,OnTorAtPick)
     3399                            Indx[torPick.GetId()] = [t,i]
     3400                            TorSizer.Add(torPick,0,wx.ALIGN_CENTER_VERTICAL)
     3401                        TorSizer.Add(wx.StaticText(RigidBodies,-1,' Angle: '),0,wx.ALIGN_CENTER_VERTICAL)
     3402                        ang = wx.TextCtrl(RigidBodies,-1,value='%8.3f'%(torsion[0]),style=wx.TE_PROCESS_ENTER)
     3403                        ang.Bind(wx.EVT_TEXT_ENTER,OnTorAngle)
     3404                        ang.Bind(wx.EVT_KILL_FOCUS,OnTorAngle)
     3405                        Indx[ang.GetId()] = t
     3406                        TorSizer.Add(ang,0,wx.ALIGN_CENTER_VERTICAL)
     3407                           
     3408                    mainSizer.Add(TorSizer)
     3409                else:
     3410                    mainSizer.Add(wx.StaticText(RigidBodies,-1,'No side chain torsions'),0,wx.ALIGN_CENTER_VERTICAL)
    33363411            else:
    33373412                topSizer = wx.BoxSizer(wx.HORIZONTAL)
     
    33543429            btnSizer.Add((20,20),1)
    33553430            mainSizer.Add(btnSizer,0,wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
    3356             RigidBodies.SetSizer(mainSizer)
    33573431            mainSizer.FitInside(RigidBodies)
    33583432            Size = mainSizer.GetMinSize()
     3433            RigidBodies.SetSizer(mainSizer)
    33593434            Size[0] += 40
    33603435            Size[1] = max(Size[1],290) + 35
    33613436            RigidBodies.SetSize(Size)
    33623437            RigidBodies.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
    3363             Size[1] = min(Size[1],450)
    33643438            G2frame.dataFrame.setSizePosLeft(Size)
    3365            
    33663439        Draw()
    33673440       
  • trunk/GSASIIplot.py

    r853 r854  
    35213521        for Atype in rbTypes:
    35223522            Radii.append(AtInfo[Atype][0])
     3523            if Atype == 'H':
     3524                Radii[-1] = 0.5
    35233525        Radii = np.array(Radii)
    35243526        Bonds = [[] for i in range(len(Radii))]
Note: See TracChangeset for help on using the changeset viewer.