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.
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.
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.
Learning rate η = 1 / (1 + e10(Z−0.5)) — aggressive when uncertain, conservative when confident. Agile where ignorant, stable where certain.
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.
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.
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.
| 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.
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.
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.
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.
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.
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.