Recover the signal from the noise: Gaussian-process smoothing
Compute a Gaussian-process posterior in the browser to pull a smooth latent trajectory out of noisy observations — the temporal core of GPFA — then end at the real sealed measurement.
The model
A Gaussian process places a prior over functions: any finite set of points is jointly Gaussian, with covariance given by a kernel. With the RBF kernel k(s,t) = exp(−(s−t)²/2ℓ²), nearby times are strongly correlated and distant times are nearly independent, so the prior favours smooth trajectories. Condition on noisy observations and the posterior mean is the smoothest function consistent with the data — recovered here by an exact Cholesky solve, not an approximation.
Why this is the heart of GPFA
Gaussian Process Factor Analysis extracts a few smooth latent trajectories from many noisy spike trains. It has two parts: a factor-analysis map from latents to observations, and a Gaussian-process prior on each latent's time course. This lesson computes that second part exactly — the temporal smoothing GPFA applies to every factor. It is honestly the GP core, not a full multi-channel factor-analysis fit.
The claim boundary
The true latent is a fixed sum of two sinusoids; observations add Gaussian noise from a fixed-seed PRNG, so every run with the same parameters replays identically. Because the model knows the true latent, it can measure exactly how much closer the smoothed estimate lands than the raw observations — which is precisely what makes it a bounded educational model, not a measurement of unknown data.
Run the smoother
Run with the defaults: the GP-smoothed RMSE is well below the noisy RMSE — the posterior has recovered the latent. Now push the lengthscale ℓ too small and the posterior chases the noise (smoothing fails); push it too large and it over-smooths past the real structure. The lengthscale is the assumption you bring, and the lesson lets you feel it cost you.
Inspect the evidence, then meet the real kernel
The bundle records the noisy and smoothed RMSE with the exact parameters that produced them, admitted only as a bounded model. The production counterpart is sc-neurocore's GPFA kernel — measured for real across five language backends, sealed, and recorded in the transparency log. The table below is that measurement, loaded from the shipped databank; note that Julia is far slower here than the compiled backends, an inversion the platform publishes rather than launders.
The real, sealed measurement
The browser model above is a bounded educational kernel. The production kernel is
measured for real: gpfa in the sc-neurocore 3.15.35 benchmark databank,
sealed and recorded in the transparency log.
| Metric | rust | mojo | julia | go | python |
|---|---|---|---|---|---|
| median_call_ms (ms) | 2.014656 | 3.326446 | 2180.965885 | 5.649015 | 2.884177 |
Part of these topics.
The research topics this lesson sits inside — the science, the studios, and the literature.