Documents · Verb reference
synchrony_surface_diagnostics
Describe structure in one local synchrony surface.
Callable type: Grammar verb / pipe stage · Browse: Synchrony and comparison
Usage
from cubedynamics import verbs as v
v.synchrony_surface_diagnostics(*, metric='delta_s', radial_bin_width_km=5.0, angular_bin_width_degrees=15.0, min_count=3)
Arguments
| Argument | Meaning | Default |
|---|---|---|
| metric | Surface variable to describe: cold_synchrony, warm_synchrony, or delta_s. | 'delta_s' |
| radial_bin_width_km | Width of fine radial-profile bins. | 5.0 |
| angular_bin_width_degrees | Width of bearing sectors; must divide 360 degrees. | 15.0 |
| min_count | Minimum valid values required for a radial or angular bin. | 3 |
Accepts
One Dataset produced by v.local_synchrony_surface(...).
Returns
Experimental radial spread, radially adjusted directional profiles, harmonic anisotropy, half-plane contrast, candidate-scale censoring, low-order 2-D reconstruction, and residual-complexity diagnostics.
Order / grammar behavior
Compare candidates against the full surface before adopting a compact signature. Near-limit scales remain right-censored or unresolved.
Minimal example
Run from the repository root after python -m pip install -e '.[vignettes]'. Uses the checked observational PRISM fixture; no network is required.
from pathlib import Path
import xarray as xr
import matplotlib.pyplot as plt
from cubedynamics import pipe, verbs as v
# Frozen, reviewed PRISM observations; run from the repository root.
path = Path("tests/fixtures/real_data/prism_boulder_january_2024.nc")
with xr.open_dataset(path, engine="scipy") as observed:
cube = observed["tmax"].load()
assert cube.attrs["units"] == "degC"
with xr.open_dataset(path, engine="scipy") as observed:
temperature = observed[["tmin", "tmax"]].isel(y=slice(0, 12), x=slice(0, 12)).load()
pairs = (pipe(temperature) | v.local_synchrony_pairs(lower_var="tmin", upper_var="tmax", max_radius_km=30, window_days=30, min_t=3)).unwrap()
surface = (pipe(pairs) | v.local_synchrony_surface(focal_y_index=5, focal_x_index=5)).unwrap()
result = (pipe(surface) | v.synchrony_surface_diagnostics(radial_bin_width_km=5, angular_bin_width_degrees=30, min_count=2)).unwrap()
result["radial_profile"].plot(x="radius_km")
plt.show()
Works with
One Dataset produced by v.local_synchrony_surface(...).
See also
Implementation notes
Radial, directional, harmonic, anisotropy, half-plane, low-order reconstruction, and residual-complexity outputs are experimental descriptors. They are not a finalized signature or climate classification.
Implementation source. Signatures and descriptions on this page are generated from this checkout, not hand-maintained copies.