Neuro Twin

An empty twin of a HEAD: sensors sit on a scalp surface and their readings paint a topographic field across it, which is what an EEG montage is. Extends Digital Twin (the whole sensor chain, the legend and the presentation tools come with it) and adds a head-shaped scalp solid plus a scalarbar for the band-power key, minus the ground grid — a head does not stand on anything. The scalp ships as structural geometry (a primitives sphere scaled to adult head proportions, 195 mm front-to-back by 155 mm across by 160 mm tall, dense enough that per-vertex heat reads as a blob rather than a diamond); no electrodes ship, because a sensor path is matched by plain string and a pre-wired site would read a path your recording does not publish and sit at —. WIRING A MONTAGE: the 10-20 system is geometric, not a table to copy — every site is a percentage along a scalp arc between nasion, inion and the two preauricular points, so on this scalp Cz is the vertex, Fz/Pz are 20% either side of it along the sagittal arc, T7/T8 are 10% up from the ears, and the Fp/F/P/O chains lie on the horizontal ring 10% up from the equator. Place each electrode as a marker on the scalp with heatmap:{target:'id:<scalpId>'} so it BECOMES a heat source, then bind its band power to target.property 'intensity' and the reading drives its patch of scalp live. heatBlend: 'add' makes N electrodes SUM into one field instead of N unrelated dots, which is what a topographic map is — but additive can only brighten, so it needs a dark scalp beneath it; over a pale scalp use 'alpha', which never clips at the cost that overlapping sites composite by priority rather than summing. heatRadius wants to be comparable to the inter-electrode spacing (about 25 to 36 degrees of arc here, so roughly a third of the head radius): smaller and the montage reads as isolated dots, larger and everything merges into one wash. Because heat falls off by world-space distance, a site on the far side of the head still contributes through the skull unless the radius is kept under half the head width. STREAMING: the demo feed is 'simulated' so every viewer sees the same history, but the same bindings work unchanged against adapter 'stream' with a streamId — real hardware POSTs to the stream-ingest endpoint and the values arrive over Realtime. Publish band powers (one value per site per second, or a few per second), not raw samples: a 256 Hz waveform is neither what the bus is for nor what a topographic map shows. Aggregate feed fields turn 19 sites into the one number a reader watches (posterior mean, worst site), a threshold rule with revert:true latches into the alarm list, and each group of sites can be switched together from the Layers legend.