Ticket #4690: color_by_rms.py

File color_by_rms.py, 762 bytes (added by Tom Goddard, 4 years ago)

Tristan's script to color by CA RMS

Line 
1from chimerax.atomic import Residues, Atoms, selected_residues
2from math import sqrt
3import numpy
4models = selected_residues(session).unique_structures
5from chimerax.core.commands import run
6
7run(session, f'match {"|".join(["#"+m.id_string for m in models[1:]])} to #{models[0].id_string}')
8
9for residues in zip(*[m.residues for m in models]):
10 residues = Residues(residues)
11 pas = Atoms(residues.principal_atoms)
12 if not len(pas):
13 residues.atoms.bfactors = 0
14 continue
15
16 coords = pas.scene_coords
17 avg = numpy.mean(coords, axis=0)
18 deviations = coords-avg
19 distances = numpy.linalg.norm(deviations, axis=0)
20 rms = sqrt(numpy.mean(distances**2))
21 residues.atoms.bfactors = rms
22
23run(session, f'color bfactor sel')