SC-WBD: an integrated whole-brain foundation model across modalities, scales and dynamics
SC-WBD builds a working model of one person's brain and keeps it consistent across every way that brain can be measured — electrical activity, blood flow, stimulation, and what the person actually does. Each kind of signal corrects only the part of the model it can speak to, so a person measured one way still improves it, and what was never measured is left unknown rather than invented.
The World's First Whole Brain Dynamics (WBD) Model
Every way of looking at a brain sees something different. Electrodes read it a thousand times a second but can barely say where the signal came from. An MRI scanner sees the whole brain but reads it once every two seconds, and reads blood flow rather than activity. A magnetic pulse or a beam of focused ultrasound goes the other way, pushing on the tissue instead of watching it — ultrasound reaching structures deep enough that no non-invasive instrument can otherwise touch them. Additionally, what a person looks at, or types, or says is not a brain measurement at all, and yet even that information can inform our understanding of a given brain.
Most people are only ever measured one way, so results from each instrument never quite add up, and almost none of them are about any particular brain. SC-WBD keeps one shared model and lets each kind of signal constrain the part it can actually speak to.
Sorting signals this way is what makes partial data usable.1In the
schema these are stimulus, observation,
boundary_output and context, and the distinction is
enforced: an observation must declare the forward operator it is
measured through, or it is refused. Without that axis, eye tracking and button
presses could only be declared as measurements of neural state, which is a
different and wrong claim. Someone's gaze is real evidence, but it is not a
reading of their cortex, and a model that confuses the two learns the wrong
thing.
400 on the surface + 14 deep inside
each constraining only what it observes
weights, data and code all public
all five claim gates could_not_run
Modelling brain activity
The first thing the model does is the ordinary thing: given what a brain has been doing, say what it does next. Each of the 414 regions carries its own state and its own uncertainty, and they are wired to each other the way the real ones are, so activity in one region moves the regions it is actually connected to.
Show someone a film and you know exactly what they saw, where they looked, and what they said about it — alongside what their brain did. Four different kinds of evidence about one response, all landing on one model.
The prediction comes back with a confidence attached rather than as a bare number, and a value the model could not actually resolve comes back marked unresolved instead of as a plausible guess.
Simulating intervention responses
Once a model can say what a brain does next, you can ask what it would do if you changed something. Magnetic stimulation is already used to treat depression, and where you aim it matters a great deal — but nobody can currently say what a given pulse did to the network, so targeting is done by scalp landmark and the answer arrives weeks later as a symptom score.
For example, sleep: the depth and timing of slow-wave activity is one of the better-characterised things stimulation can push on, and it is measurable the same night rather than in six weeks. A model that predicts what a pulse at a given site and phase does to that person's own network turns sleep optimisation from a protocol applied to everyone into a target chosen for one person and checked against their own recording.
A magnetic pulse goes in; the electrical response, the blood-flow response and the muscle twitch all come back out. The field is computed through that person's own head, not an average one.
Two coil positions produce measurably different predicted EEG here, and the difference is carried by the coil's orientation rather than by how strong the field is.2A 200-permutation shuffled-normal null puts the real contrast above every permutation (p = 0.005). The criterion was committed while the checkpoint directory was still empty. The field calculations are validated. The step from field to neural response is not, and is flagged as unvalidated in the code, because no model here has been trained on stimulation data.
Fine-tuneable for personalized neurotechnology
The last step is the one the whole programme is for. A model of the average brain is a statistic, and no device is worn by a statistic. Because every signal is attached to the part of the model it can speak to, the shared model can be fitted to one person from whatever recordings that person actually has — and the rest is left marginalised rather than filled in with someone else's anatomy.
Reading intent from the scalp to move a cursor. What makes this hard is not decoding once; it is decoding the same way tomorrow, which is a problem about modelling a person rather than a population.
There is also a tool for asking, before anyone is scanned, what a proposed experiment could actually resolve — so a session that cannot separate two hypotheses is visible in advance rather than after. Possibilities sets out what this makes reachable, in the order it becomes reachable.
Artifacts
Stated at the granularity someone could check, with the public artifacts in the same table as the parts they are made of. Every row is a thing you could run or download.
| Component | State | What it is |
|---|---|---|
| Schema and compiler | built | Typed contracts for units, clocks, frames and transform lineage, with eleven refusals (R01–R11) that fail closed rather than warn.scwbd/schema/refusals.py |
| Anatomy prior | published | The 414 regions — 400 Schaefer cortical, 14 Tian subcortical — with the connectome, geometry and cortical normals, carrying receptor density, intrinsic timescale, myelin and thickness. Partitioned into nine families by a rule fixed before the test ran.3Ship the finest candidate partition in which every pair of families separates under a spin null. Yeo-7 separated 6 of 21 pairs and was rejected. The surviving split is binary over cortex — cortex_unimodal (138 parcels) and cortex_association (262) — plus seven subcortical families of two parcels each. |
| Dynamics backends | built | Six generative backends — Wilson–Cowan, Jansen–Rit, reduced Wong–Wang, Stuart–Landau, Kuramoto, Linear–Gaussian — plus an equal-capacity learned control, interchangeable by one config key. |
| Simulated corpus | published | 37,888 trajectories over the 414 regions at 125 Hz, generated from five of the backends.reports/run2_corpus.md |
| Real EEG corpus | built | 109 PhysioNet participants, 64 channels, split 71/11/27 and verified participant-disjoint. Real human recording, kept strictly separate from the simulated corpus.4A simulated corpus can never be evidence that the model has learned anything about biology. Conflating the two would be the most basic error available to this project. |
| Stimulation path | partial | A validated E-field solver joined to the dynamics as an additive drive. The field computations pass their gates; the mapping from drive to neural response is flagged unvalidated in code, because no checkpoint has been trained on stimulation data.scwbd/intervene/impulse_response.py |
| scwbd-001-beta | negative result | Run-1 weights, published because they lose to copying the last observed sample forward. Structurally the control arm of our own ablation. |
| scwbd-002-pilot | negative result | 2.5M parameters over the 414 regions, the treatment arm. It loses to every
baseline on both columns, NLL and MSE.5NLL 3.179 against 2.045 for the
best baseline; MSE 36.27 against 4.53. Every paired participant-clustered
interval excludes zero. And 3.179 flatters it: SC-WBD is scored on
target/s with the Jacobian folded into the log-variance while
every baseline is scored on the raw target, so in their units the NLL is ≈
3.75 and the gap ≈ 1.70 nats. Separately, subject_specific_ar is
bit-for-bit identical to ar16 — the participant-disjoint split
leaves no test participant with a fitted model — so read the comparison as
five comparators, not six. The same property of the split means
individualisation could not be measured on this holdout at all:
no held-out person has a fitted person effect, so the between-participant
spread of the applied θ shift is exactly 0.000e+00. That is a
property of the split, not a defect of the run, and it is why nothing here
reports whether fitting to an individual helps. Two reasons, both mechanical: five of six
curriculum gates were named for the previous run's stages, so no gradient was
ever taken on a real recording; and 88.7% of the parameters could not
receive a gradient at all, including the entire family-indexed
regional model that is the treatment arm's whole thesis.6The regional
modules were renamed local → family_local and so on
when the family-padded architecture landed. The permission cards still grant
local.*, and fnmatch("family_local.ports.out_proj.weight",
"local.*") is False. An unmatched glob is not an error —
it is an empty permission set, which is a legal permission set. The 285,083
reachable parameters were enough to fit something, so the loss fell, the run
finished, and five separate audits passed over it. Mechanism and measurement
agree: those modules are bit-identical across every consecutive pair of the
five stage checkpoints. So this result does not say structured regional
state fails to help. That part of the model was a random initialisation
taking part in the forward pass for 8,700 steps. |
| A model that beats its baselines | does not exist | Nothing on this site should be read as a claim that we have one. |
Licences differ per artifact because the data underneath them differs; each is computed per artifact and stated on its card and on the attribution page. It is a modelling and engineering programme, and nothing here is a medical device.