| 1 | # Compute plane interpolating selected atoms and report distances from atoms to plane.
|
|---|
| 2 | import chimera, numpy
|
|---|
| 3 | from StructMeasure import Planes, plane
|
|---|
| 4 |
|
|---|
| 5 | # Currently selected atoms
|
|---|
| 6 | atoms = chimera.selection.currentAtoms()
|
|---|
| 7 |
|
|---|
| 8 | # Draw the plane.
|
|---|
| 9 | Planes.planeManager.createPlane('plane', atoms)
|
|---|
| 10 |
|
|---|
| 11 | # Compute distances
|
|---|
| 12 | coords = chimera.numpyArrayFromAtoms(atoms)
|
|---|
| 13 | p = plane(coords)
|
|---|
| 14 | distances = numpy.array([p.distance(a.coord()) for a in atoms])
|
|---|
| 15 |
|
|---|
| 16 | # Print results to reply log
|
|---|
| 17 | print 'Signed distances for %d points' % len(atoms)
|
|---|
| 18 | print distances
|
|---|
| 19 | print ('Unsigned average %.4g, max %.4g, min %.4g, standard deviation %.4g'
|
|---|
| 20 | % (abs(distances).mean(), distances.max(), distances.min(), distances.std()))
|
|---|