ProteinMotion
Reference navigation
On this page

CLASS · v0.9.1

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')

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).

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
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.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.
**kwargsAdditional 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.