Changeset 3239


Ignore:
Timestamp:
Jan 23, 2018 9:51:03 AM (4 years ago)
Author:
vondreele
Message:

implement use of 2-site disordered amino acid residues in proteins:
1.read disordered residues from PDB files - atoms are interleaved in disordered residues
2.draw disordered residues with no "cross" bonds
3.apply residue rigid body to each disordered residue - makes RB entry for each
4.create restraints for disordered residues - bonds, angles, planes, chiral volumes, torsions & Ramachandran restraints

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIconstrGUI.py

    r3136 r3239  
    15831583                rbId = rbIds[rbNames[sel]]
    15841584                rbData = data['Residue'][rbId]
     1585            else:
     1586                rbData = []
    15851587            dlg.Destroy()
    15861588        else:
  • trunk/GSASIIphsGUI.py

    r3234 r3239  
    10361036    Styles = []
    10371037    Radii = []
     1038    Names = []
    10381039    for atom in atomData:
    10391040        Atoms.append(np.array(atom[cx:cx+3]))
    10401041        Styles.append(atom[cs])
     1042        Names.append(ord(atom[ct-1].ljust(4)[3]))
    10411043        try:
    10421044            if not hydro and atom[ct] == 'H':
     
    10481050    Atoms = np.array(Atoms)
    10491051    Radii = np.array(Radii)
    1050     IASR = zip(Indx,Atoms,Styles,Radii)
    1051     for atomA in IASR:
     1052    Names = np.array(Names)
     1053    IASRN = zip(Indx,Atoms,Styles,Radii,Names)
     1054    for atomA in IASRN:
    10521055        if atomA[2] in ['lines','sticks','ellipsoids','balls & sticks','polyhedra']:
    10531056            Dx = Atoms-atomA[1]
    10541057            dist = ma.masked_less(np.sqrt(np.sum(np.inner(Amat,Dx)**2,axis=0)),0.5) #gets rid of G2frame & disorder "bonds" < 0.5A
     1058            if generalData['Type'] == 'macromolecular':     #eliminate cross disorder residue bonds
     1059                m1 = ma.getmask(dist)
     1060                if atomA[4] in [ord('A'),]:
     1061                    m2 = ma.getmask(ma.masked_equal(Names,ord('B')))
     1062                    dist = ma.array(dist,mask=ma.mask_or(m1,m2))
     1063                if atomA[4] in [ord('B'),]:
     1064                    m2 = ma.getmask(ma.masked_equal(Names,ord('A')))
     1065                    dist = ma.array(dist,mask=ma.mask_or(m1,m2))
    10551066            sumR = atomA[3]+Radii
    10561067            IndB = ma.nonzero(ma.masked_greater(dist-data['Drawing']['radiusFactor']*sumR,0.))                 #get indices of bonded atoms
     
    73207331        wx.BeginBusyCursor()
    73217332        try:
     7333            isave = 0
    73227334            while iatm < len(Atoms):
    73237335                atom = Atoms[iatm]
     
    73317343                VAR = rbRes['rbXYZ'][rbRef[1]]-rbRes['rbXYZ'][rbRef[0]]
    73327344                VBR = rbRes['rbXYZ'][rbRef[2]]-rbRes['rbXYZ'][rbRef[0]]
     7345                incr = 1
     7346                isave = 0
     7347                if 'N  A' in atom[3]:   #disordered residue - read every other atom
     7348                    isave = iatm+1
     7349                    incr = 2
     7350                if 'N  B' in atom[3]:
     7351                    incr = 2
    73337352                rbObj = {'RBname':rbRes['RBname']+':'+str(rbRes['useCount']),'numChain':numChain}
    73347353                rbAtoms = []
     
    73377356                    rbAtoms.append(np.array(Atoms[iatm][cx:cx+3]))
    73387357                    rbIds.append(Atoms[iatm][20])
    7339                     iatm += 1    #puts this at beginning of next residue?
     7358                    iatm += incr    #puts this at beginning of next residue?
     7359                if 'N  B' in atom[3]:   #end of disorder - reset next atom position
     7360                    iatm -= 1
     7361                    incr = 1
    73407362                Orig = rbAtoms[rbRef[0]]
    73417363                rbObj['RBId'] = RBIds[res]
     
    73717393                rbRes['useCount'] += 1
    73727394                RBObjs.append(rbObj)
     7395                if isave:
     7396                    iatm = isave
    73737397            data['RBModels']['Residue'] = RBObjs
    73747398            for RBObj in RBObjs:
  • trunk/GSASIIplot.py

    r3234 r3239  
    43874387            extent=[-180,180,-180,180],origin='lower')
    43884388        if len(PhiPsi):
     4389            PhiPsi = np.where(PhiPsi>180.,PhiPsi-360.,PhiPsi)
    43894390            Phi,Psi = PhiPsi.T
    4390             Phi = np.where(Phi>180.,Phi-360.,Phi)
    4391             Psi = np.where(Psi>180.,Psi-360.,Psi)
    43924391            Plot.plot(Phi,Psi,'ro',picker=5)
    43934392        Plot.set_xlim((-180.,180.))
  • trunk/GSASIIrestrGUI.py

    r3137 r3239  
    182182                    if 'all' in Names[x]:
    183183                        allType = Types[x]
    184                         for name,Type,coords,id in zip(Names,Types,Coords,Ids):
     184                        for name,Type,coords,Id in zip(Names,Types,Coords,Ids):
    185185                            if Type == allType and 'all' not in name:
    186                                 Lists[listName].append([id,Type,coords])
     186                                Lists[listName].append([Id,Type,coords])
    187187                    else:
    188188                        Lists[listName].append([Ids[x],Types[x],Coords[x],])
     
    247247                oIds = []
    248248                oCoords = []
     249                oDis = []
    249250                tIds = []
    250251                tCoords = []
     252                tDis = []
    251253                res = items[1]
    252254                dist = float(items[2])
     
    254256                oAtm,tAtm = items[4:6]
    255257                for Name,coords,Id in atoms:
    256                     names = Name.split()
     258                    names = Name.split(' ',2)
    257259                    if res == '*' or res in names[0]:
    258                         if oAtm == names[2]:
     260                        if oAtm.ljust(3) == names[2][:3]:
    259261                            oIds.append(Id)
    260262                            oCoords.append(np.array(coords))
    261                         if tAtm == names[2]:
     263                            oDis.append(names[2][3])
     264                        if tAtm.ljust(3) == names[2][:3]:
    262265                            tIds.append(Id)
    263266                            tCoords.append(np.array(coords))
    264                 for i,[oId,oCoord] in enumerate(zip(oIds,oCoords)):
    265                     for tId,tCoord in zip(tIds,tCoords)[i:]:
     267                            tDis.append(names[2][3])
     268                for i,[oId,oCoord,odis] in enumerate(zip(oIds,oCoords,oDis)):
     269                    for tId,tCoord,tdis in zip(tIds,tCoords,tDis)[i:]:
     270                        if odis+tdis in ['AB','BA']:
     271                            continue
    266272                        obsd = np.sqrt(np.sum(np.inner(Amat,tCoord-oCoord)**2))
    267273                        if dist/Factor < obsd < dist*Factor:
     
    284290                    if 'all' in Names[x]:
    285291                        allType = Types[x]
    286                         for name,Type,coords,id in zip(Names,Types,Coords,Ids):
     292                        for name,Type,coords,Id in zip(Names,Types,Coords,Ids):
    287293                            if Type == allType and 'all' not in name:
    288294                                if 'A' in listName:
    289295                                    Lists[listName].append(Type)
    290296                                else:
    291                                     Lists[listName].append([id,Type,coords])
     297                                    Lists[listName].append([Id,Type,coords])
    292298                    else:
    293299                        if 'A' in listName:
     
    346352        UpdateAngleRestr(angleRestData)               
    347353
     354    def makeChains(Names,Ids):
     355        Chains = {}
     356        atoms = zip(Names,Ids)
     357        for name,Id in atoms:
     358            items = name.split(' ',2)
     359            rnum,res = items[0].split(':')
     360            rnum = int(rnum)
     361            if items[1] not in Chains:
     362                Residues = {}
     363                Chains[items[1]] = Residues
     364            if rnum not in Residues:
     365                Residues[rnum] = [[],[]]
     366            if items[2][3] in [' ','A']:
     367                Residues[rnum][0].append([res,items[2],Id])
     368            if items[2][3] in [' ','B']:
     369                Residues[rnum][1].append([res,items[2],Id])
     370        return Chains
     371       
    348372    def AddAAAngleRestraint(angleRestData):
    349373        macro = getMacroFile('angle')
    350374        if not macro:
    351375            return
    352         atoms = zip(Names,Ids)
     376        Chains = makeChains(Names,Ids)           
    353377        macStr = macro.readline()
    354378        while macStr:
     
    357381                restrData['Angle']['wtFactor'] = float(items[1])
    358382            elif 'S' in items[0]:
    359                 res = items[1]
    360                 value = float(items[2])
    361                 esd = float(items[3])
     383                Res = items[1]
     384                Value = float(items[2])
     385                Esd = float(items[3])
    362386                Atms = items[4:7]
    363387                pAtms = ['','','']
     
    365389                    if '+' in atm:
    366390                        pAtms[i] = atm.strip('+')
    367                 ids = np.array([0,0,0])
    368                 rNum = -1
    369                 for name,id in atoms:
    370                     names = name.split()
    371                     tNum = int(names[0].split(':')[0])
    372                     if res in names[0]:
    373                         try:
    374                             ipos = Atms.index(names[2])
    375                             ids[ipos] = id
    376                         except ValueError:
    377                             continue
    378                     elif res == '*':
    379                         try:
    380                             ipos = Atms.index(names[2])
    381                             if not np.all(ids):
    382                                 rNum = int(names[0].split(':')[0])
    383                             ids[ipos] = id
    384                         except ValueError:
    385                             try:
    386                                 if tNum == rNum+1:
    387                                     ipos = pAtms.index(names[2])
    388                                     ids[ipos] = id
    389                             except ValueError:
    390                                 continue
    391                     if np.all(ids):
    392                         angle = [list(ids),['1','1','1'],value,esd]
    393                         if angle not in angleRestData['Angles']:
    394                             angleRestData['Angles'].append(angle)
    395                         ids = np.array([0,0,0])
     391                ids = [0,0,0]
     392                chains = list(Chains.keys())
     393                chains.sort()
     394                for chain in chains:
     395                    residues = list(Chains[chain].keys())
     396                    residues.sort()
     397                    for residue in residues:
     398                        for ires in [0,1]:
     399                            if Res != '*':  #works with disordered res
     400                                for res,name,Id in Chains[chain][residue][ires]:
     401                                    if Res == res:
     402                                        try:
     403                                            ipos = Atms.index(name[:3].strip())
     404                                            ids[ipos] = Id
     405                                        except ValueError:
     406                                            continue
     407                            else:
     408                                try:
     409                                    for res,name,Id in Chains[chain][residue][ires]:
     410                                        try:
     411                                            ipos = Atms.index(name[:3].strip())
     412                                            ids[ipos] = Id
     413                                        except ValueError:
     414                                            continue
     415                                    for res,name,Id in Chains[chain][residue+1][ires]:
     416                                        try:
     417                                            ipos = pAtms.index(name[:3].strip())
     418                                            ids[ipos] = Id
     419                                        except ValueError:
     420                                            continue
     421                                except KeyError:
     422                                    continue
     423                            if all(ids):
     424                                angle = [list(ids),['1','1','1'],Value,Esd]
     425                                if angle not in angleRestData['Angles']:
     426                                    angleRestData['Angles'].append(angle)
     427                                ids = [0,0,0]
    396428            macStr = macro.readline()
    397429        macro.close()
     
    419451        if not macro:
    420452            return
    421         atoms = zip(Names,Ids)
     453        Chains = makeChains(Names,Ids)           
    422454        macStr = macro.readline()
    423455        while macStr:
     
    426458                restrData['Plane']['wtFactor'] = float(items[1])
    427459            elif 'S' in items[0]:
    428                 res = items[1]
    429                 esd = float(items[2])
     460                Res = items[1]
     461                Esd = float(items[2])
    430462                Atms = items[3:]
    431463                pAtms = ['' for i in Atms]
     
    433465                    if '+' in atm:
    434466                        pAtms[i] = atm.strip('+')
    435                 rNum = -1
    436                 ids = np.zeros(len(Atms))
     467                ids = [0,]*len(Atms)
    437468                ops = ['1' for i in range(len(Atms))]
    438                 for name,id in atoms:
    439                     names = name.split()
    440                     tNum = int(names[0].split(':')[0])
    441                     if res in names[0]:
    442                         try:
    443                             ipos = Atms.index(names[2])
    444                             ids[ipos] = id
    445                         except ValueError:
    446                             continue
    447                     elif res == '*':
    448                         try:
    449                             ipos = Atms.index(names[2])
    450                             if not np.all(ids):
    451                                 rNum = int(names[0].split(':')[0])
    452                             ids[ipos] = id
    453                         except ValueError:
    454                             try:
    455                                 if tNum == rNum+1:
    456                                     ipos = pAtms.index(names[2])
    457                                     ids[ipos] = id
    458                             except ValueError:
     469                chains = list(Chains.keys())
     470                chains.sort()
     471                for chain in chains:
     472                    residues = list(Chains[chain].keys())
     473                    residues.sort()
     474                    for residue in residues:
     475                        for ires in [0,1]:
     476                            if residue == residues[-1] and Res == '*':
    459477                                continue
    460                     if np.all(ids):
    461                         plane = [list(ids),ops,0.0,esd]
    462                         if plane not in planeRestData['Planes']:
    463                             planeRestData['Planes'].append(plane)
    464                         ids = np.zeros(len(Atms))
     478                            if Res != '*':  #works with disordered res
     479                                for res,name,Id in Chains[chain][residue][ires]:
     480                                    if Res == res:
     481                                        try:
     482                                            ipos = Atms.index(name[:3].strip())
     483                                            ids[ipos] = Id
     484                                        except ValueError:
     485                                            continue
     486                            else:
     487                                try:
     488                                    for res,name,Id in Chains[chain][residue][ires]:
     489                                        try:
     490                                            ipos = Atms.index(name[:3].strip())
     491                                            ids[ipos] = Id
     492                                        except ValueError:
     493                                            continue
     494                                    for res,name,Id in Chains[chain][residue+1][ires]:
     495                                        try:
     496                                            ipos = pAtms.index(name[:3].strip())
     497                                            ids[ipos] = Id
     498                                        except ValueError:
     499                                            continue
     500                                except KeyError:
     501                                    continue
     502                            if all(ids):
     503                                plane = [list(ids),ops,0.0,Esd]
     504                                if plane not in planeRestData['Planes']:
     505                                    planeRestData['Planes'].append(plane)
     506                                ids = [0,]*len(Atms)
    465507            macStr = macro.readline()
    466508        macro.close()
     
    471513        if not macro:
    472514            return
    473         atoms = zip(Names,Ids)
     515        Chains = makeChains(Names,Ids)           
    474516        macStr = macro.readline()
    475517        while macStr:
     
    478520                restrData['Chiral']['wtFactor'] = float(items[1])
    479521            elif 'S' in items[0]:
    480                 res = items[1]
    481                 value = float(items[2])
    482                 esd = float(items[3])
     522                Res = items[1]
     523                Value = float(items[2])
     524                Esd = float(items[3])
    483525                Atms = items[4:8]
    484                 ids = np.array([0,0,0,0])
    485                 for name,id in atoms:
    486                     names = name.split()
    487                     if res in names[0]:
    488                         try:
    489                             ipos = Atms.index(names[2])
    490                             ids[ipos] = id
    491                         except ValueError:
    492                             pass
    493                         if np.all(ids):
    494                             chiral = [list(ids),['1','1','1','1'],value,esd]
    495                             if chiral not in chiralRestData['Volumes']:
    496                                 chiralRestData['Volumes'].append(chiral)
    497                             ids = np.array([0,0,0,0])
     526                ids = [0,0,0,0]
     527                chains = list(Chains.keys())
     528                chains.sort()
     529                for chain in chains:
     530                    residues = list(Chains[chain].keys())
     531                    residues.sort()
     532                    for residue in residues:
     533                        for ires in [0,1]:
     534                            if residue == residues[-1] and Res == '*':
     535                                continue
     536                            if Res != '*':  #works with disordered res
     537                                for res,name,Id in Chains[chain][residue][ires]:
     538                                    if Res == res:
     539                                        try:
     540                                            ipos = Atms.index(name[:3].strip())
     541                                            ids[ipos] = Id
     542                                        except ValueError:
     543                                            continue
     544                            else:
     545                                try:
     546                                    for res,name,Id in Chains[chain][residue][ires]:
     547                                        try:
     548                                            ipos = Atms.index(name[:3].strip())
     549                                            ids[ipos] = Id
     550                                        except ValueError:
     551                                            continue
     552                                except KeyError:
     553                                    continue
     554                            if all(ids):
     555                                chiral = [list(ids),['1','1','1','1'],Value,Esd]
     556                                if chiral not in chiralRestData['Volumes']:
     557                                    chiralRestData['Volumes'].append(chiral)
     558                                ids = [0,0,0,0]
    498559            macStr = macro.readline()
    499560        macro.close()
    500561        UpdateChiralRestr(chiralRestData)               
    501        
    502     def makeChains(Names,Ids):
    503         Chains = {}
    504         atoms = zip(Names,Ids)
    505         for name,id in atoms:
    506             items = name.split()
    507             rnum,res = items[0].split(':')
    508             if items[1] not in Chains:
    509                 Residues = {}
    510                 Chains[items[1]] = Residues
    511             if int(rnum) not in Residues:
    512                 Residues[int(rnum)] = []
    513             Residues[int(rnum)].append([res,items[2],id])
    514         return Chains
    515562       
    516563    def AddAATorsionRestraint(torsionRestData):
     
    539586                    if '+' in atm:
    540587                        pAtms[i] = atm.strip('+')
    541                 ids = np.array([0,0,0,0])
     588                ids = [0,0,0,0]
    542589                chains = list(Chains.keys())
    543590                chains.sort()
     
    546593                    residues.sort()
    547594                    for residue in residues:
    548                         if residue == residues[-1] and Res == '*':
    549                             continue
    550                         if Res != '*':
    551                             for res,name,id in Chains[chain][residue]:
    552                                 if Res == res:
    553                                     try:
    554                                         ipos = Atms.index(name)
    555                                         ids[ipos] = id
    556                                     except ValueError:
    557                                         continue
    558                         else:
    559                             try:
    560                                 for res,name,id in Chains[chain][residue]:
    561                                     try:
    562                                         ipos = Atms.index(name)
    563                                         ids[ipos] = id
    564                                     except ValueError:
    565                                         continue
    566                                 for res,name,id in Chains[chain][residue+1]:
    567                                     try:
    568                                         ipos = pAtms.index(name)
    569                                         ids[ipos] = id
    570                                     except ValueError:
    571                                         continue
    572                             except KeyError:
     595                        for ires in [0,1]:
     596                            if residue == residues[-1] and Res == '*':
    573597                                continue
    574                         if np.all(ids):
    575                             torsion = [list(ids),['1','1','1','1'],Name,Esd]
    576                             if torsion not in torsionRestData['Torsions']:
    577                                 torsionRestData['Torsions'].append(torsion)
    578                             ids = np.array([0,0,0,0])                           
     598                            if Res != '*':  #works with disordered res
     599                                for res,name,Id in Chains[chain][residue][ires]:
     600                                    if Res == res:
     601                                        try:
     602                                            ipos = Atms.index(name[:3].strip())
     603                                            ids[ipos] = Id
     604                                        except ValueError:
     605                                            continue
     606                            else:
     607                                try:
     608                                    for res,name,Id in Chains[chain][residue][ires]:
     609                                        try:
     610                                            ipos = Atms.index(name[:3].strip())
     611                                            ids[ipos] = Id
     612                                        except ValueError:
     613                                            continue
     614                                    for res,name,Id in Chains[chain][residue+1][ires]:
     615                                        try:
     616                                            ipos = pAtms.index(name[:3].strip())
     617                                            ids[ipos] = Id
     618                                        except ValueError:
     619                                            continue
     620                                except KeyError:
     621                                    continue
     622                            if all(ids):
     623                                torsion = [list(ids),['1','1','1','1'],Name,Esd]
     624                                if torsion not in torsionRestData['Torsions']:
     625                                    torsionRestData['Torsions'].append(torsion)
     626                                ids = [0,0,0,0]                           
    579627            macStr = macro.readline()
    580628        macro.close()
     
    613661                    elif '-' in atm:
    614662                        mAtms[i] = atm.strip('-')
    615                 ids = np.array([0,0,0,0,0])
     663                ids = [0,0,0,0,0]
    616664                chains = list(Chains.keys())
    617665                chains.sort()
     
    621669                    if not (any(mAtms) or any(pAtms)):
    622670                        for residue in residues:
    623                             for res,name,id in Chains[chain][residue]:
    624                                 if Res == res:
    625                                     try:
    626                                         ipos = Atms.index(name)
    627                                         ids[ipos] = id
    628                                     except ValueError:
    629                                         continue
    630                             if np.all(ids):
    631                                 rama = [list(ids),['1','1','1','1','1'],Name,Esd]
    632                                 if rama not in ramaRestData['Ramas']:
    633                                     ramaRestData['Ramas'].append(rama)
    634                                 ids = np.array([0,0,0,0,0])
    635                     else:
    636                         for residue in residues[1:-1]:
    637                             try:
    638                                 for res,name,id in Chains[chain][residue-1]:
    639                                     try:
    640                                         ipos = mAtms.index(name)
    641                                         ids[ipos] = id
    642                                     except ValueError:
    643                                         continue
    644                                 for res,name,id in Chains[chain][residue+1]:
    645                                     try:
    646                                         ipos = pAtms.index(name)
    647                                         ids[ipos] = id
    648                                     except ValueError:
    649                                         continue
    650                                 for res,name,id in Chains[chain][residue]:
     671                            for ires in [0,1]:
     672                                for res,name,Id in Chains[chain][residue][ires]:
    651673                                    if Res == res:
    652674                                        try:
    653                                             ipos = Atms.index(name)
    654                                             ids[ipos] = id
     675                                            ipos = Atms.index(name[:3].strip())
     676                                            ids[ipos] = Id
    655677                                        except ValueError:
    656678                                            continue
    657                                 if np.all(ids):
     679                                if all(ids):
    658680                                    rama = [list(ids),['1','1','1','1','1'],Name,Esd]
    659681                                    if rama not in ramaRestData['Ramas']:
    660682                                        ramaRestData['Ramas'].append(rama)
    661                                     ids = np.array([0,0,0,0,0])
    662                             except KeyError:
    663                                 continue
     683                                    ids = [0,0,0,0,0]
     684                    else:
     685                        for ires,residue in enumerate(residues[1:-1]):
     686                            for jres in [0,1]:
     687                                try:
     688                                    for res,name,Id in Chains[chain][residue-1][jres]:
     689                                        try:
     690                                            ipos = mAtms.index(name[:3].strip())
     691                                            ids[ipos] = Id
     692                                        except ValueError:
     693                                            continue
     694                                    for res,name,Id in Chains[chain][residue+1][jres]:
     695                                        try:
     696                                            ipos = pAtms.index(name[:3].strip())
     697                                            ids[ipos] = Id
     698                                        except ValueError:
     699                                            continue
     700                                    for res,name,Id in Chains[chain][residue][jres]:
     701                                        if Res == res:
     702                                            try:
     703                                                ipos = Atms.index(name[:3].strip())
     704                                                ids[ipos] = Id
     705                                            except ValueError:
     706                                                continue
     707                                    if all(ids):
     708                                        rama = [list(ids),['1','1','1','1','1'],Name,Esd]
     709                                        if rama not in ramaRestData['Ramas']:
     710                                            ramaRestData['Ramas'].append(rama)
     711                                        ids = [0,0,0,0,0]
     712                                except KeyError:
     713                                    continue
    664714            macStr = macro.readline()
    665715        macro.close()
     
    676726                if 'all' in Names[x]:
    677727                    allType = Types[x]
    678                     for name,Type,id in zip(Names,Types,Ids):
     728                    for name,Type,Id in zip(Names,Types,Ids):
    679729                        if Type == allType and 'all' not in name:
    680                             ids.append(id)
     730                            ids.append(Id)
    681731                            factors.append(1.0)
    682732                else:
     
    10171067
    10181068        AngleRestr.SetSizer(mainSizer)
    1019         Size = mainSizer.Fit(AngleRestr)
    1020         Size[0] = 600
    1021         Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    1022         AngleRestr.SetSize(Size)
    1023         AngleRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     1069        G2phsGUI.SetPhaseWindow(AngleRestr,mainSizer,Scroll=0)
    10241070   
    10251071    def UpdatePlaneRestr(planeRestData):
     
    11461192
    11471193        PlaneRestr.SetSizer(mainSizer)
    1148         Size = mainSizer.Fit(PlaneRestr)
    1149         Size[0] = 600
    1150         Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    1151         PlaneRestr.SetSize(Size)
    1152         PlaneRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     1194        G2phsGUI.SetPhaseWindow(PlaneRestr,mainSizer,Scroll=0)
    11531195   
    11541196    def UpdateChiralRestr(chiralRestData):
     
    12771319
    12781320        ChiralRestr.SetSizer(mainSizer)
    1279         Size = mainSizer.Fit(ChiralRestr)
    1280         Size[0] = 600
    1281         Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    1282         ChiralRestr.SetSize(Size)
    1283         ChiralRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     1321        G2phsGUI.SetPhaseWindow(ChiralRestr,mainSizer,Scroll=0)
    12841322   
    12851323    def UpdateTorsionRestr(torsionRestData):
     
    13641402                        TorsionRestr.Torsions.SetCellStyle(r,c,VERY_LIGHT_GREY,True)
    13651403                TorsionRestr.Torsions.Bind(wg.EVT_GRID_LABEL_LEFT_CLICK,OnRowSelect)
    1366                 if 'phoenix' in wx.vrsion():
     1404                if 'phoenix' in wx.version():
    13671405                    TorsionRestr.Torsions.Bind(wg.EVT_GRID_CELL_CHANGED, OnCellChange)
    13681406                else:
     
    13991437
    14001438        TorsionRestr.SetSizer(mainSizer)
    1401         Size = mainSizer.Fit(TorsionRestr)
    1402         Size[0] = 600
    1403         Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    1404         TorsionRestr.SetSize(Size)
    1405         TorsionRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     1439        G2phsGUI.SetPhaseWindow(TorsionRestr,mainSizer,Scroll=0)
    14061440
    14071441    def UpdateRamaRestr(ramaRestData):
     
    15231557
    15241558        RamaRestr.SetSizer(mainSizer)
    1525         Size = mainSizer.Fit(RamaRestr)
    1526         Size[0] = 600
    1527         Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    1528         RamaRestr.SetSize(Size)
    1529         RamaRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     1559        G2phsGUI.SetPhaseWindow(RamaRestr,mainSizer,Scroll=0)
    15301560
    15311561    def UpdateChemcompRestr(chemcompRestData):
     
    16571687
    16581688        ChemCompRestr.SetSizer(mainSizer)
    1659         Size = mainSizer.Fit(ChemCompRestr)
    1660         Size[0] = 600
    1661         Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    1662         ChemCompRestr.SetSize(Size)
    1663         ChemCompRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     1689        G2phsGUI.SetPhaseWindow(ChemCompRestr,mainSizer,Scroll=0)
    16641690           
    16651691    def UpdateTextureRestr(textureRestData):
     
    17331759            mainSizer.Add(wx.StaticText(TextureRestr,-1,'No texture restraints for this phase'),0,)
    17341760        TextureRestr.SetSizer(mainSizer)
    1735         Size = mainSizer.Fit(TextureRestr)
    1736         Size[0] = 600
    1737         Size[1] = min(Size[1]+50,500)       #make room for tab, but not too big
    1738         TextureRestr.SetSize(Size)
    1739         TextureRestr.SetScrollbars(10,10,Size[0]/10-4,Size[1]/10-1)
     1761        G2phsGUI.SetPhaseWindow(TextureRestr,mainSizer,Scroll=0)
    17401762           
    17411763    def OnPageChanged(event):
     
    18621884    AtLookUp = G2mth.FillAtomLookUp(Atoms,cia+8)
    18631885    if 'macro' in General['Type']:
    1864         Names = [atom[0]+':'+atom[1]+atom[2]+' '+atom[3] for atom in Atoms]
     1886        Names = [atom[0]+':'+atom[1]+atom[2]+' '+atom[3].ljust(4) for atom in Atoms]
    18651887        Ids = []
    18661888        Coords = []
  • trunk/GSASIIspc.py

    r3234 r3239  
    15261526                ssChoice.append(item)
    15271527    return ssChoice
    1528    
    15291528
    15301529def splitSSsym(SSymbol):
  • trunk/imports/G2phase.py

    r3224 r3239  
    138138                    S[12:17].strip(),Type.strip().capitalize(),'',XYZ[0],XYZ[1],XYZ[2],
    139139                    float(S[55:61]),SytSym,Mult,'I',Uiso,0,0,0,0,0,0]
    140                 if S[16] in [' ','A']:      #remove disorered residues - can't handle them just now
    141                     Atom[3] = Atom[3][:3]
     140                if S[16] in [' ','A','B']:      #remove disorered residues - can't handle them just now
     141#                    Atom[3] = Atom[3][:3]
    142142                    Atom.append(ran.randint(0,sys.maxsize))
    143143                    Atoms.append(Atom)
Note: See TracChangeset for help on using the changeset viewer.