[Chimera-users] Zones to create inspector list of "contacts"
Thomas Goddard
goddard at cgl.ucsf.edu
Wed Mar 23 11:37:18 PST 2005
Hi Grant,
Below is some Python code that will create pseudobonds between all
pairs of selected atoms from different molecules that are within 3 angstroms.
It is quite slow for large sets of selected atoms. It could be made much
faster but I chose to keep it simple.
Tom
# ----------------------------------------------------------------------------
# Check all pairwise distances between selected atoms and connect those
# atom pairs that are close by a pseudobond if the atoms belong to different
# molecules.
#
# To run this use Tools / Programming / Idle to show the Python shell and
# type
#
# >>> execfile('path-to-this-file.py')
#
# For large selected sets of atoms this will be slow.
#
# ----------------------------------------------------------------------------
#
def connect_close(dist):
from chimera import selection, distance
atoms = selection.currentAtoms()
atom_pairs = []
n = len(atoms)
for i1 in range(n):
a1 = atoms[i1]
for i2 in range(i1+1, n):
a2 = atoms[i2]
if a1.molecule != a2.molecule:
if distance(a1.xformCoord().xyz, a2.xformCoord().xyz) <= dist:
atom_pairs.append((a1,a2))
print len(atom_pairs), 'atom pairs'
from chimera import PseudoBondGroup, PseudoBondMgr_mgr, PseudoBond
pg = PseudoBondMgr_mgr().newPseudoBondGroup('close contacts')
bonds = []
for a1, a2 in atom_pairs:
bonds.append(pg.newPseudoBond(a1, a2))
import chimera
chimera.openModels.add([pg])
selection.setCurrent(bonds)
# ----------------------------------------------------------------------------
#
connect_close(3)
More information about the Chimera-users
mailing list