Synchrony
Synchrony asks when places, events, or biological responses move together. In CubeDynamics, it is a grammar:
raw cube -> state cube -> event result -> synchrony operator -> spatial summary
That separation matters. A threshold rule should not be tangled up with a spatial comparison choice, and a center pixel should not define the whole idea of synchrony.
Start Here
Theory Map
Ecological synchrony, Moran effects, event synchronization, climate networks, and compound events.
State and Events
Turn raw climate or biological values into standard state cubes and event catalogs.
Four Primitives
Compare occurrence, severity, timing, and duration with shared spatial modes.
Biology Coupling
Rasterize observations, align cubes, and compare lagged climate-biology states.
The First Visual
This synthetic cube shows occurrence synchrony: nearby pixels become similar when hot-state events occur at the same times. Drag the cube to inspect the time-depth and spatial faces.
Why Four Operators?
Two locations can be synchronized in one sense and independent in another:
- Occurrence: did the state happen at the same times?
- Severity: were magnitudes high together when both were active?
- Timing: did matched events begin, peak, or end together?
- Duration: did matched events persist for similar lengths of time?
The plot below shows why the distinction is useful. In the same synthetic system, occurrence and severity tell different stories through rolling windows.

Synthetic validation case generated by examples/synchrony_section_assets.py.
Core Pattern
from cubedynamics import pipe, verbs as v
hot = (
pipe(tmax_cube)
| v.threshold_state(threshold=35, direction="above")
).unwrap()
events = (
pipe(hot)
| v.detect_events(state_var="state", min_duration=2, max_gap=1)
).unwrap()
occurrence = (
pipe(hot)
| v.occurrence_synchrony(spatial_mode="neighbors", radius_km=100)
).unwrap()
Read next: State and Events, then Four Primitives.