Scripts: closeatoms.py

File closeatoms.py, 936 bytes (added by goddard, 16 years ago)
Line 
1# -----------------------------------------------------------------------------
2# Draw lines between all pairs of selected atoms within a specified distance
3# of each other.
4#
5
6def close_pairs(atoms, distance):
7 pairs = []
8 for i,a1 in enumerate(atoms):
9 for a2 in atoms[i+1:]:
10 d = a1.coord().distance(a2.coord())
11 if d < distance:
12 pairs.append((a1,a2))
13 return pairs
14
15def make_pseudobonds(atom_pairs):
16 if len(atom_pairs) == 0:
17 return
18 from chimera import misc, OpenModels, Bond
19 pg = misc.getPseudoBondGroup('closepairs', modelID = OpenModels.Default,
20 hidden = False)
21 pg.name = 'close pairs'
22 for a1,a2 in atom_pairs:
23 b = pg.newPseudoBond(a1,a2)
24 b.drawMode = Bond.Stick
25 return pg
26
27
28from chimera import selection
29atoms = selection.currentAtoms()
30p = close_pairs(atoms, distance = 8)
31make_pseudobonds(p)