ProteinMotion
Reference navigation
On this page

ColorScale

A fixed linear scale mapping scalar values to RGB colors.

python
from proteinmotion import ColorScale

Constructor

python
ColorScale(
    vmin,
    vmax,
    *,
    colors=('#355f9e', '#56c5bd', '#f5d477'),
    missing='#87909c',
    boundaries=None,
)

Parameters

ParameterDefaultDescription
vminRequiredFinite lower limit of the fixed color scale.
vmaxRequiredFinite upper limit, greater than vmin.
colorskeyword only('#355f9e', '#56c5bd', '#f5d477')Two or more RGB colors, interpolated between equally spaced stops.
missingkeyword only'#87909c'Color for missing values (NaN).
boundarieskeyword onlyNoneIncreasing values that split the scale into bands, one fewer than colors; None interpolates.

Notes

Values outside the limits use endpoint colors. NaN uses the missing color. Intermediate colors interpolate between equally spaced stops.

Example and output

This excerpt runs inside a scene’s construct() method. The full example file includes imports, structure loading, and camera setup. Run it from a repository checkout.

Code Full script
python
"""Map 1UBQ Cα B factors to residue color and cartoon thickness."""

from pathlib import Path

from proteinmotion import (
    ColorByProperty,
    ColorLegend,
    ColorScale,
    Protein,
    ProteinScene,
    Representation,
    ResidueValues,
    Rotate,
    Text,
)

DATA = Path(__file__).parent / "data"


class NumericalProperties(ProteinScene):
    def construct(self):
        protein = Protein.from_file(DATA / "1ubq.cif").center()
        values = ResidueValues.b_factors(protein)
        scale = ColorScale(0, 40)
        self.add(protein)
        self.camera.frame(protein, margin=1.08)
        self.add(Text("Residue properties", position=(0.06, 0.07), font_size=42))
        self.add(Text("Ubiquitin · Cα B factors", position=(0.06, 0.13), font_size=25))
        self.add(ColorLegend(scale, title="B factor", unit="Ų", position=(0.06, 0.8)))
        self.play(
            ColorByProperty(protein, values, scale=scale, thickness=(0.6, 1.8), residue_delay=0.012),
            Rotate(protein, 0.25),
            run_time=2.5,
        )
        self.wait(0.5)
        self.play(Representation(protein, "ball_and_stick"), run_time=1.5)
        self.play(Rotate(protein, 0.3), run_time=1)
        self.play(Representation(protein, "surface"), run_time=1.5)
        self.play(Rotate(protein, 0.25), run_time=1.5)
Output Preview · 8.5 s · 60 fps
B factors across representations

1UBQ B factors control residue color and cartoon thickness.

Methods and properties

NameDescription
hydropathy()class methodHydrophilic blue, neutral near-white, hydrophobic orange; symmetric about 0.
conservation()class methodConSurf's palette from variable (turquoise) through white to conserved (maroon).
plddt()class methodAlphaFold's four confidence bands, split at pLDDT 50, 70 and 90.
pae()class methodPredicted aligned error in Å: confident dark green to uncertain near-white.
distance()class methodCurrent endpoint distance in ångströms, regardless of the label unit.
difference()class methodA signed change in Å: closer in blue, unchanged near-white, farther in red.
from_values()class methodChoose limits from finite values; expand a constant range by ±0.5.
normalize()methodClip values to [0, 1], keeping NaN for missing data.
map()methodMap values to an RGB array shaped (*values.shape, 3).
python
ColorScale.hydropathy(scale='kyte-doolittle')

Hydrophilic blue, neutral near-white, hydrophobic orange; symmetric about 0.

ParameterDefaultDescription
scale'kyte-doolittle'"kyte-doolittle" or "eisenberg".
python
ColorScale.conservation(vmin=0.0, vmax=1.0)

ConSurf's palette from variable (turquoise) through white to conserved (maroon).

ParameterDefaultDescription
vmin0.0Score drawn turquoise (variable).
vmax1.0Score drawn maroon (conserved).
python
ColorScale.plddt()

AlphaFold's four confidence bands, split at pLDDT 50, 70 and 90.

python
ColorScale.pae(max_error=31.75)

Predicted aligned error in Å: confident dark green to uncertain near-white.

ParameterDefaultDescription
max_error31.75Error in ångströms drawn near white.
python
ColorScale.distance(max_distance=40.0)

Current endpoint distance in ångströms, regardless of the label unit.

ParameterDefaultDescription
max_distance40.0Distance in ångströms drawn darkest.
python
ColorScale.difference(limit=10.0)

A signed change in Å: closer in blue, unchanged near-white, farther in red.

ParameterDefaultDescription
limit10.0Change in ångströms at either end of the symmetric scale.
python
ColorScale.from_values(values, **kwargs)

Choose limits from finite values; expand a constant range by ±0.5.

ParameterDefaultDescription
valuesRequiredNumerical input values; see the shape and missing-value rules for this object.
**kwargs—Additional keyword options described below or in the linked constructor.
python
ColorScale.normalize(values)

Clip values to [0, 1], keeping NaN for missing data.

ParameterDefaultDescription
valuesRequiredNumerical input values; see the shape and missing-value rules for this object.
python
ColorScale.map(values)

Map values to an RGB array shaped (*values.shape, 3).

ParameterDefaultDescription
valuesRequiredNumerical input values; see the shape and missing-value rules for this object.