Space Weather Workshop 2026 · Boulder, CO · Poster #18 · Wed Apr 29 View the poster →

SPACE ATLAS

Causal learning for neutral density in LEO with uncertainty quantification.

Space Atlas decomposes thermospheric density response into independent causal edges between five space weather drivers and 180 spatial voxels — each with its own learned multiplier, response lag, and certainty. The question isn’t “what is the density?” It’s “how much of this density change came from IMF Bz reconnection vs. ring-current intensification vs. auroral Joule heating?” — and how confident should we be in that attribution, voxel by voxel.

The method

Per-driver decomposition, not a scalar prediction.

Empirical models (NRLMSISE-2.0, JB2008) and ML models compress thermospheric chaos into a single number. Both produce an answer; neither tells you why. Space Atlas resolves the response into a graph of causal edges with learned dynamics and explicit uncertainty.

5 drivers × 180 voxels

IMF Bz, Dst, AE index, solar wind speed, solar wind density → voxels at 6 latitude bands × 4 local-time sectors × 8 altitude layers (460–850 km). Each edge carries a multiplier m, a response lag, and a certainty score Z.

Dissipative learning

Learning rate η = 1 / (1 + e10(Z−0.5)) — aggressive when uncertain, conservative when confident. Agile where ignorant, stable where certain.

Edge-deployable

The learning loop runs onboard at <1% compute, <50 MB memory, <0.5 W power. Operators share causal vectors (~1 KB/day), not raw telemetry — privacy-preserving fleet learning by construction.

Earned certainty

You can’t be confident about a relationship you haven’t observed under load.

An early version of this pipeline awarded confidence to drivers for being asleep. During quiet geomagnetic conditions — which dominate any 13-month dataset — most drivers contribute near-zero to the prediction, so their attributed error looks like a perfect fit. Certainty climbed for the wrong reason.

The fix is activity gating: only update a driver’s certainty when its activity weight exceeds 10% of total driver activity. Quiet observations contribute no history entry, no variance update, no free certainty.

// Activity-gated certainty update
if (weight >= 0.10) {
    // Driver was meaningfully active
    certaintyResult = updateCertainty(currentCert, perDriverError, history);
} else {
    // Driver was inactive — skip entirely
    newCertainty = currentCertainty;
}

This is the epistemic stance the system enforces everywhere: certainty has to be earned from consistent evidence under varying load, not accumulated from quiet periods. It’s also what makes the grid below honest about where the system has signal and where it doesn’t.

Distributed error signals

GRACE-FO is one. Live LEO sats produce them everywhere they fly.

Solid cells are voxels lit up by GRACE-FO’s drag observations — high-cadence error signal from one satellite. Outlined cells are altitude / latitude / local-time bins where a partner satellite, computing the same kind of drag residual from its onboard GPS, would extend that certainty.

Looking for satellite partners. Modern LEO satellites already compute drag residuals from onboard GPS for navigation — functionally the same signal GRACE-FO produces with its accelerometer. Sharing that signal (no telemetry, no proprietary orbital elements — just GPS-derived drag residuals) would extend GRACE-FO-level certainty across every altitude and latitude band your fleet flies. Get in touch: heidi@nervousmachine.com.
Dawn (03–09)
Noon (09–15)
Dusk (15–21)
Midnight (21–03)
Polar N (60–90°) Mid-Lat N (30–60°) Tropical N (0–30°) Tropical S (0–30°) Mid-Lat S (30–60°) Polar S (60–90°)
460 525 550 575 600 650 700 850 km
Awaiting partner sat
0.35–0.50
0.50–0.70
> 0.90
SAT GRACE-FO source
Every dashed cell is a satellite-shaped hole in the map. The signal that fills it isn’t telemetry or proprietary state — it’s the drag residual a sat’s GPS already computes for navigation. One satellite lit up its row. A contributing fleet fills the grid wherever it flies.
From one sensor to a fleet

Every active LEO satellite is already a thermospheric sensor.

Driver ZTLE ZGRACE-FO Δ
AE index
auroral electrojet · Joule heating
0.389 0.949 +0.560
Dst
ring current intensity
0.490 0.940 +0.450
Solar wind density
proton flux
0.196 0.937 +0.741
IMF Bz
reconnection trigger
0.450 0.912 +0.462
Solar wind speed
boundary condition
0.132 0.854 +0.722

The signal that lit up GRACE-FO’s corner of the grid is already being computed onboard every LEO sat with GPS — for navigation, not for thermospheric characterization. It’s just not being aggregated.

GRACE-FO carries a precision accelerometer that measures non-gravitational forces directly — drag at 10-second cadence, hourly-averaged into 89,861 observations across 24 voxels at 460–510 km. That single high-cadence stream pulled every driver out of the TLE noise floor: 97 of 104 edges cleared 0.91 certainty.

Modern LEO spacecraft compute continuous GPS-based orbit solutions for navigation. The drag residuals — predicted vs. observed position — encode atmospheric density at minute-level cadence. Functionally the same signal the engine learned from on GRACE-FO, already being produced by every active satellite in LEO. The data exists. It’s just sitting in flight-dynamics logs.

One sensor lit up 24 voxels. A contributing fleet would light up the grid wherever satellites fly — across altitude bands, latitude sectors, and local-time bins no single mission could ever cover. The pipeline is proven; the architecture is built. What’s missing is operators contributing what their onboard GPS already computes. Distributed sensors, already in orbit, already underutilized.

Validation & roadmap

Three phases. Two complete. One open.

The pipeline was built and validated against operational baselines before the bar was raised internally to require per-edge response lag and activity-gated certainty. Each phase taught the next.

Phase 1 Complete

Pipeline & initial certainty

Built and validated the dissipative learning pipeline against TLE-derived density: 156 voxels at 525–850 km, 726 validated causal edges from 49 debris objects. 16% MAPE vs 85% for JB2008. Every voxel converged to meaningful certainty under daily cadence. The architecture worked. Then we raised the bar.

Phase 2 Complete

Earned certainty under a stricter bar

Added per-edge response lag, activity-gated certainty (no free credit during quiet periods), and quiet-time baselines. The stricter standard exposed daily cadence as the real ceiling. GRACE-FO’s 89,861 hourly observations cleared it: 97 of 104 edges above 0.80, all five drivers above 0.85. Same engine; the cadence was always the variable.

Phase 3 Open

First operator pilot

Ingest GPS-derived drag residuals from a partner constellation. Produce per-driver causal nowcasts for the operator’s corridors. Validate against their flight-dynamics ground truth. One satellite lit up 24 voxels; the first partner extends the grid wherever their fleet flies.

Read more

The thinking behind the system.

Two essays from the Nervous Machine Substack frame the epistemic core of this work — why uncertainty is a first-class citizen, and what high-cadence data unlocks for causal learning.