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