コード例 #1
0
def findLigandRings(atoms):
    matrix = hf.getDistMatrix(atoms)
    bdist = 2.0 # angstrom of bond dinstance
    graph = hf.makeGraph(nodes_list = range(len(matrix)), distance_matrix = matrix, cutoff = bdist**2)
    rings5,rings6 = findRings(graph)
    RING = rings5+rings6
    ligand_rings = {}
    for r in range(len(RING)):
        # res name first...
        
        # get the first atom PDB string in the ring
        atstring = atoms[RING[r][0]][2]
        ringname = hf.pmvAtomStrip(atstring) 
        ringname_short = ringname.rsplit(":",1)[0].strip()
        if ringname_short:
            c = 0
            while ringname_short+":"+str(c) in ligand_rings.keys():
                c+=1
                if c > 20:
                    ringname_short = None
                    break
        if ringname_short:
            lnam = ringname_short+":"+str(c) 
        else:
            lnam = "rng:"+str(r)

        ligand_rings[lnam] = []
        for a in RING[r]:
            ligand_rings[lnam].append(atoms[a][2])
    return ligand_rings