| 1 | # -----------------------------------------------------------------------------
|
|---|
| 2 | # Draw lines between all pairs of selected atoms within a specified distance
|
|---|
| 3 | # of each other.
|
|---|
| 4 | #
|
|---|
| 5 |
|
|---|
| 6 | def 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 |
|
|---|
| 15 | def 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 |
|
|---|
| 28 | from chimera import selection
|
|---|
| 29 | atoms = selection.currentAtoms()
|
|---|
| 30 | p = close_pairs(atoms, distance = 8)
|
|---|
| 31 | make_pseudobonds(p)
|
|---|