One measured number, taken over and over, contains the shape of the hidden system that made it. Takens' theorem says how to get it back: stack delayed copies of the record into a vector and the folded-over trace stretches out into a space of higher dimension where its trajectories no longer cross. This bench lets you watch that happen. Choose a signal, including the three nerve-cell behaviors Dr. Charles Jorgensen, former Chief Neuro Scientist at NASA Ames, builds his computing architecture from, in Izhikevich's canonical model; turn the delay and the dimension; watch the record unfold from a line into a two-, three- and higher-dimensional attractor; then read its recurrence plot the way his paper teaches. A fourth and fifth instrument bring in Schramm–Loewner evolution, in both directions: one real-valued signal drives the growth of a curve in the plane whose dimension, 1 + κ/8, rises above one when the signal is rough. Every readout is computed live from the formulas beside it.
Jorgensen's bio-oscillator architecture is built from three nerve-cell behaviors: bursters, which answer complicated time-and-phase patterns with a packet of spikes; resonators, which amplify small signals at one frequency for a limited time because they are damped; and oscillators, which lock together and keep going once switched on, which is what makes them a memory. All three come out of one two-variable equation, Izhikevich's canonical spiking model, by changing four parameters. The equation is integrated live below; the membrane potential v is the single measured variable the rest of the bench works from.
Izhikevich 2003 Parameters (a, b, c, d) select the cell type; I is the injected current. Jorgensen's drafts cite the earlier canonical-model work (Hoppensteadt and Izhikevich); the later simple model used here is the same family reduced to one equation that reproduces twenty known firing patterns. The heart-like and chaotic presets are there so you can see what a three-dimensional attractor looks like next to a limit cycle.
Left: the measured variable. Right, for the neuron presets: the trajectory in the (v, u) plane, which is the true two-dimensional state the bench will try to recover from v alone. A burster's loop has a slow drift in u that a single spike train hides; a resonator rings below threshold; an oscillator's loop closes on itself. The point of the next instrument is that you do not need to see u to get this picture back.
Whitney showed that any n-dimensional manifold can be embedded without self-crossings in 2n+1 dimensions. Takens showed that you do not need 2n+1 separate measurements to do it: delayed copies of one measured variable will serve. Build, for every moment, the vector of the present value and its values τ, 2τ, … (m−1)τ ago. For almost every smooth measurement and a large enough m, the cloud of those vectors is a faithful copy of the hidden attractor, topology and all. Jorgensen's phrase for it is exact: a manifold awkwardly compressed into too few dimensions is completely unfolded, stretched out, in a larger space where no two points land on the same spot.
Choosing τ and m The bench uses the two standard recipes his paper names. The delay τ is the first minimum of the average mutual information between s(t) and s(t−τ), so that successive coordinates are as independent as possible without losing the connection. The dimension m is the smallest at which the false-nearest-neighbor fraction falls to about zero (below 1 % here, using both of Kennel's criteria): neighbors that were only neighbors because the fold squeezed them together fly apart when the next dimension is added. A spiking record keeps a floor of a few percent from the reset at each spike, which is a discontinuity no smooth embedding removes, so for the neuron presets the bench takes the dimension at which the curve levels off. Beyond m = 3 the bench shows the first three principal axes of the m-dimensional cloud, so the stretch in the higher dimensions is still visible.
What the dimension counts The embedding dimension m and the correlation dimension D₂ count the degrees of freedom that are active in the measured dynamics. They are a lower bound on how many degrees of freedom the system has in all, not that number itself: water, a plasma or a heart can carry vastly more ways to move than its motion shows. That distinction matters for the scaled-metric reading. Dr. Norbert Schwarzer’s scaling acts on the metric tensor, Gαβ = F·gαβ, so the determinant carries Fn with n the total number of degrees of freedom, and every volume effect depends on it (personal communication, October 2026). This bench measures the floor under n for any record you give it; nothing here measures n itself.
Center: the delay vectors, one per sample, joined in time order. Turn stretch from 0 to 1 to watch the record unfold from the flat line it was measured as into the embedding; at m = 2 it is a plane, at 3 a volume, above 3 a projection of the higher cloud onto its principal axes. Where the curve crosses itself the embedding is too small; where it stops crossing, you have the attractor. Right: the two curves that choose τ and m. The correlation dimension plateaus once m is large enough; for a limit cycle it sits near 1, for a chaotic attractor between 2 and 3, for noise it keeps climbing with m.
With the attractor rebuilt, ask of every pair of moments whether the system was in nearly the same state. The square of answers is the recurrence plot, and its texture is the fingerprint Jorgensen read in pilots and that Recurrence and the Seam proposes reading in the footage. The measures count the texture: determinism from the diagonal lines, laminarity and trapping time from the vertical ones, entropy from the spread of line lengths. The radius ε is set as a fraction of the embedded cloud's spread.
The plot uses the τ and m set on the unfolding dial, so turning the dimension changes the texture here too: the same record at too small an m shows lines perpendicular to the main diagonal, Jorgensen's sign of a wrong embedding, and they vanish when m is right. The window knob limits the plot to the last part of the record so long signals stay readable. Three readings follow Eugene Kononov’s Visual Recurrence Analysis: distance-shaded drops the radius and colors every pair by its distance, close dark and far pale, scaled either to the whole record (global) or to the window alone (local, better when the record trends); spatio-temporal entropy compares the spread of distance colors along each diagonal with the spread over the whole plot, near 0 % for a periodic signal and near 100 % for noise (the bench computes it from his published description, so values may differ from his program’s); and the close-returns histogram below the plot counts how often the state comes back within ε after each lag, so a rhythm shows as a peak at its period. A main return is reported only when its peak stands well above the histogram’s typical level.
Jorgensen opened his pilot paper with one line: “An important problem in the study of complex systems is early detection of change.” The theory of critical phenomena says where to look. Away from a transition a system has a dominating scale, a characteristic time over which it forgets a disturbance. As a transition nears, recovery slows and that scale grows: fluctuations get larger, last longer and stay coherent over more cycles. At the transition itself no single scale dominates. So the early sign of change is a dominating scale that is growing, and two cheap measures read it from one record: the variance in a sliding window, and the autocorrelation at one dominant period.
How to read the answer A rising trend proves nothing by itself, because a steady rhythm also wanders. The bench compares the record’s trend (Kendall’s τ of the two measures) with the same trend computed on 60 surrogate records that share its spectrum but are stationary by construction. It tests the record at eleven checkpoints, from half its length to all of it, and raises a warning at the first checkpoint where the trend beats the surrogates (p < 0.02) twice in a row. That is how early the record itself allows a warning; asking for more would mean false alarms. The drifting preset is a noise-driven rhythm whose damping falls toward zero, so the bench can say how far along the way to the transition the warning came. This is an exercise, not a finding.
Top: the record, with the analysis window drawn at its start and, if raised, the warning point in amber. For the drifting preset the transition itself lies beyond the end of the record, where the damping would reach zero. Bottom left: variance (teal) and one-period autocorrelation (gold) in sliding windows, each scaled to its own range. Bottom right: the surrogate p-value as more of the record is analyzed, with the 0.02 line. Bottom strip: visual coding, every window drawn as a closed loop (the signal against itself a quarter of a period later, at one common scale), on a disc shaded by the window’s rank on the two indicators; as recovery slows the loops grow and close into cleaner rings, a change you can see at a glance. The strip is built in the direction of Jorgensen’s work on visual coding of signals for displays: two 2009 papers with S. Sharma (MSV 2009, CSREA Press, pp. 293–299 and 307–313), NASA Tech Brief ARC-16386-1 (2014) on visualizing analog signals to identify changes or faults, and the rank-coded figures of U.S. Patent 8,337,208. It does not reproduce the method of those papers; that method, TESPAR symbol coding drawn as box-code glyphs, is the instrument in 03·D. On 8,000-sample records the bench raised a false alarm on 2 of 20 steady rhythms, and warned on 14 of 20 records that end 95 % of the way to the transition, typically about 80 % of the way there. An early warning is a probability, not a certainty. After Jorgensen, recurrence analysis of pilot heart-rate variability. The dominating-scale approach follows a suggestion by Dr. Norbert Schwarzer (personal communication, October 2026), who pointed to the existence of dominating scales and to C. Domb and M. S. Green, eds., Phase Transitions and Critical Phenomena, Vol. 6 (Academic Press, 1976). Dr. Schwarzer has not reviewed this bench. Methods: Scheffer et al., Nature 461 (2009): 53–59; Dakos et al., PLoS ONE 7 (2012): e41010.
A recurrence plot depends on the dimension you plot the attractor in. Too few dimensions and the attractor is folded onto itself: states that are far apart look close, and the plot fills with false recurrences, often as short lines running across the main diagonal instead of along it. Add a dimension and the fold opens. Once the attractor is fully unfolded, adding more dimensions no longer changes which moments count as close, and the plot stops changing. This instrument draws the same record at every plot dimension from 1 to 8 side by side, counts at each step how many of its recurrences were false, and marks the dimension at which the record settles. Three independent tests stand beside the plots: false nearest neighbors, the correlation dimension, and forecasting.
Keeping the comparison fair A larger dimension spreads the points further apart, so a fixed radius would empty the plot as m grows and the count would measure the radius, not the attractor. By default the bench therefore holds the recurrence rate fixed (the radius is set at each m so the same share of pairs count as close), which is the usual practice when plots at different dimensions are compared. The other rule, a radius of ε·σ·√m, matches the recurrence plot in 03. Both use the delay suggested by mutual information in 02 unless you set one here, and both drop the band of pairs closer in time than τ. The false-recurrence count describes the plot, but it cannot decide the dimension alone: noise can pass it, because in many dimensions all distances in noise become alike and few pairs break apart, and a strongly chaotic record can fail it, because each added coordinate stretches nearby pairs apart. So the settled dimension comes from false nearest neighbors (Kennel's test, both criteria), which noise never passes, with three checks beside it: Kononov's prediction-based version of the same test from Visual Recurrence Analysis, in which a neighbor is false if it predicts the next sample no better than the last value does (white noise sits near 50 %); D₂ against the line D₂ = m that noise follows; and a forecast one delay ahead from the four most similar past states, trained on the first half of the record and scored on the second, in units of the record’s spread (1 means no skill). Spiking records keep a few percent of false neighbors from the reset at each spike, the floor noted in 02.
What the settled dimension is The dimension at which the record settles is the number of coordinates the measured record needs. Like the false-nearest-neighbor dimension in 02, it is a lower bound on the total degrees of freedom n in Schwarzer's scaled metric, never a count of them: degrees of freedom that do not reach this one measurement leave no mark here.
Top row: the last part of the record as a recurrence plot at every plot dimension from 1 to 8, all at the same delay and the same rule for the radius. Under each tile is the share of its recurrences that break apart in the next dimension; the tile where the record settles is marked in green and the selected one in magenta. Middle: the selected plot enlarged, and the attractor drawn in that dimension (above 3 dimensions, its first three principal axes; drag to turn it). Bottom, left to right: false nearest neighbors by Kennel’s test (solid) and Kononov’s (dashed), with the 10 % line; false recurrences between neighboring dimensions; the correlation dimension D₂ with the line D₂ = m that noise follows; and the forecast error, with its best dimension ringed. A deterministic attractor settles: false neighbors drop to the floor, D₂ levels off and forecasts sharpen. Noise never settles: Kononov’s count stays near 50 %, D₂ keeps climbing and forecasts stay at no skill.
Jorgensen’s display work turned a signal into a short alphabet of symbols and the symbols into a picture a pilot could read at a glance. His starting point was British work on TESPAR (time encoded signal processing and recognition, King and Phipps): cut the signal at its zero crossings, and describe each stretch between crossings, an epoch, by two numbers, its duration D in samples and its shape S, the number of interior bumps (minima in a positive epoch, maxima in a negative one), which stand in for the complex zeros of the signal. He then took the probability density of the (D, S) pairs, picked a fixed number of locations in that “root space” as the alphabet, coded every epoch by the nearest one, drew each symbol as an angular box-code figure, and repeated the string around several axes to make one radial image. For signals that never cross zero, such as altitude or fuel burn, he and S. Sharma used a circuit code instead: sample at a fixed interval and read each step’s slope as the angle of a clock hand, one symbol per sector.
Why it fits the seam test TESPAR splits a signal along the same line the seam test does. D is a duration counted in samples, so across a pure seam every D stretches by the clock-rate ratio r. S counts bumps, a shape, so it should not change. Turn on the seam check to code the same record as it would be seen across a seam: the durations should shift by one common factor, the shape counts should hold, and once durations are rescaled by the measured factor the symbol mix should match. A circuit code reads slopes in samples, which a seam does change, so it is a useful caution: it only compares across a seam with its interval rescaled. The shape count holds only when both sides are sampled well above their fastest wiggle. This is an exercise, not a finding.
Top: the last part of the record, each epoch (or each circuit-code step) shaded in its symbol’s color. Middle left: the radial glyph, the first symbols of the record as box-code figures built outward from the center and repeated around the axes. Middle: for TESPAR, the density of (D, S) pairs as circles with the alphabet’s centers marked; for a circuit code, the clock face with the share of steps in each sector. Middle right: how often each symbol occurs. Bottom: glyphs for five successive parts of the record, each with its distance in symbol mix from the first, so a change in the signal shows as a change in the figure; with the seam check on, the near side, the far side as coded and the far side after its durations are rescaled. The glyph figures are drawn to the rules in Jorgensen and Sharma’s 2009 papers but are the bench’s own; the alphabet is fitted to each record, as Jorgensen proposed, not King’s fixed TESPAR codebook.
Takens recovers a hidden shape from one measured number. Schramm–Loewner evolution runs the other way: it takes one real-valued signal, the driving function W(t), and grows from it a curve in the plane. Loewner's equation describes the growing curve through the conformal map gt that straightens it back onto the real line; at each instant the tip of the curve sits where the map sends the current value of the driver. In 1999 Oded Schramm showed that if the driver is Brownian motion with variance rate κ, the curve that grows is exactly the random interface found at the critical point of a whole family of physical systems, and a single number, κ, decides which one.
Increased dimensionality, stated precisely This is the exact sense in which a signal “stretches out” into more dimensions. The driver lives on a line. The curve it grows has a Hausdorff dimension of 1 + κ/8 (Beffara, 2008): a smooth line at κ = 0, a fractal for 0 < κ < 8, and a curve so crumpled it fills area at κ ≥ 8. The extra dimension is not a new direction of space; it is how much of the plane the curve explores. The bench measures it by box counting and compares it with 1 + κ/8.
Left: the curve in the upper half-plane, colored from start (green) to tip (magenta), grown by composing Loewner's slit maps one time step at a time. Top right: the driving function that made it. Bottom right: the number of boxes of side ε the curve touches, against 1/ε on log axes; the slope is its dimension. Drive with the signal feeds the bench's own record from instrument 01 into Loewner's equation, scaled so that its quadratic variation at this resolution equals the κ on the dial, so it can be compared with SLEκ like for like. What then decides the curve is the signal's roughness exponent H, read from how its increments grow with lag. Brownian motion has H = ½ and grows SLE. A smooth record has H near 1: its roughness is only an artifact of the sampling, so its curve straightens as the steps are refined. A white-noise record has H near 0 and folds back on itself. Higher dimension, in the scaling sense, needs a driver that stays rough at every scale.
Instrument 04 grows a curve from a signal. This one runs the arrow the other way, which is how SLE is used on real data and, in Dr. Jorgensen's phrase, where its secret sauce is. Start from a curve that the data itself contains: a boundary between two regions, an interface, the zero-field contour on a magnetic map of the chest. Peel it back onto the real line one small piece at a time with the zipper algorithm, and record where each piece lands. That record is the driving function the curve would have needed. If it is Brownian, the whole two-dimensional curve has been reduced to one number, κ, and κ names the universality class: which family of physical systems the data belongs to. This is how two-dimensional turbulence was found to hide percolation geometry, κ = 6, in its vorticity contours.
How to read the answer A curve made on a lattice or a sensor grid is smooth below its pixel size, so at the finest scales κ̂ always reads low. The signature of SLE is a plateau: as the scale Δt grows past the grid, κ̂ rises and then levels off at the curve's true κ, and the normalized increments of the driver look Gaussian and uncorrelated. A curve with no plateau, or with strongly correlated increments, is not SLE, and the bench says so. Single curves are noisy at large scales, because a curve contains only a few independent increments at the plateau scale; the averaged readout carries a 95 % confidence range that narrows as samples are added. In the bench's own tests, twenty-five blind SLE4 samples read 4.0 ± 0.4. Twenty-five percolation samples on the default 60-site domain read about 5.1 ± 0.4, below the exact 6: a lattice curve this short has not yet reached its scaling limit at the plateau scale. That finite-size bias is real and is the main thing to control when the method meets real data.
Left: the curve, with the real line along the bottom. In draw mode, press on the real line near the gold marker and draw upward; in pasted mode, supply x,y vertices of a curve extracted from your own data, starting at the origin. Top right: the driving function the zipper extracted, against capacity time. Bottom right: κ̂ against the scale it is measured at, with the plateau window shaded and the classical values marked. The chest field map is synthetic: the zero-field contour of a dipole-like map of the kind an optically pumped magnetometer array records, with noise of adjustable strength and correlation length. With no noise the contour is smooth and κ̂ ≈ 0. With strong, short-correlated noise it becomes a percolation-like interface and κ̂ rises toward the percolation value at scales above the correlation length, subject to the same finite-size bias as the percolation preset. Whether real cardiac field maps show a plateau, and at what κ, is the open question this instrument is built to ask.
Every record analyzed on this bench can be saved to a shared library held in a private database behind this page, so a study builds up over time instead of disappearing when the tab closes. A record is a time series (one value per sample) or a curve (x,y vertices starting on the real line). For each one the bench runs a dimensional sampling: the embedding dimensions 1 to 8 with their false-nearest-neighbor fractions, the correlation dimension at each, the recurrence measures at the suggested embedding and one either side of it, the roughness exponent, the same measures on consecutive windows to show whether the record is stationary, and, for curves, the inverse-Loewner κ with its confidence range. The results are written back into the record, and the whole sampling downloads as a report.
A dimensionality ledger Saved together, the reports form a ledger of measured lower bounds on the number of degrees of freedom of each system studied, the first entry the scaled-metric framework needs before any volume effect, an energy, a mass, a brightness, can be given a number.
Access code required for the shared library The shared library needs an access code. Analysis does not: everything on this bench, including the dimensional sampling and the HTML, CSV and JSON report downloads, works without a code, entirely in your browser. The code only unlocks saving records to, and loading them from, the shared library. If you have a code, enter it once under Library; it is remembered on this device only. Saved records are shared with everyone who has the code. If you do not have one, you lose nothing but the saving: nothing you paste is stored or sent. Please do not store anything that identifies a person: give records neutral names and keep any identity key outside the library. For access, write through the contact page on bryaningram.com.
Records in the library are shared with everyone who has the code. Never save data that identifies a person.
Signature wheel. Every time series in the library becomes one branch, drawn as box-code glyphs of its most frequent TESPAR symbols, after the many-sensor radial display in Sharma and Jorgensen (2009, Figure 9); the selected record’s branch is drawn heavier. For comparisons across records the bench uses one fixed codebook of 21 symbols (seven duration bands by three shape classes) rather than a fitted alphabet, so every signature means the same thing. Right: the other records ranked by distance from the selected one’s signature (total variation, 0 identical, 1 disjoint). Comparing a record with the same source’s own earlier records, not with a population, follows the approach of Jorgensen’s heart-signal patents (U.S. 8,489,181 and 8,924,736). Durations are counted in samples, so compare records taken at the same sample rate.
Left of the chart: the false-nearest-neighbor fraction (bars) and correlation dimension D₂ (line) for each embedding dimension, the dimensional sampling proper. Right: the suggested dimension and determinism on consecutive windows of the record; a flat row means the record is stationary and one embedding describes it, a drifting row means the hidden system changed during the recording, which in Jorgensen's pilot study is the signal of interest. The HTML report is self-contained and prints cleanly; the CSV has one row per sampled quantity; the JSON carries everything, for other tools.
His pilot paper collects the interpretive rules that have emerged across the recurrence literature. They are reproduced here, with the preset on this bench that shows each one.
A system has a two-dimensional hidden state. How many simultaneous measurements does Whitney's theorem ask for to embed it, and how many does Takens let you replace them with? Confirm on the bench with the oscillator preset: at what m do the false nearest neighbors fall to about zero?
Set the Lorenz preset, m = 3, τ at the suggested value, and turn stretch slowly from 0 to 1. Describe what happens to the crossings. Then set m = 2 and explain why the two lobes still overlap.
With any neuron preset, set τ = 1 and then τ far beyond the suggested value. What does the attractor look like in each case, and why does mutual information pick the value in between?
Run the oscillator, burster and resonator presets through the unfolding and the recurrence plot at suggested τ and m. Which has the highest determinism, which the longest trapping time, and which shows white bands? Relate each to Jorgensen's assignment of feature detection, amplification and storage.
Set the noise preset and increase m from 2 to 8, watching the correlation dimension. Then do the same with the Lorenz preset. What distinguishes a deterministic attractor from noise in that readout?
Paste a record of your own, a heart-rate trace, a tracked position, a dial on an instrument. Find τ and m, read D₂, and read the recurrence plot against the guide above. What does the bench tell you about the number of independent things the hidden system is doing, and what can it not tell you?
On the Loewner bench, grow curves at κ = 2, 8/3, 4, 6 and 8 and compare the measured dimension with 1 + κ/8. At which κ does the curve first touch itself, and at which does it start to fill area?
Switch the Loewner bench to “drive with the signal” at κ = 4 and feed it the oscillator, the Lorenz record and noise in turn, reading the roughness exponent H each time. Then raise the time steps from 400 to 1600. Which record's curve keeps its dimension as the steps are refined, and why?
On the inverse bench, set a true κ, grow and unzip eight samples, and compare the averaged κ̂ with the truth. Then switch to percolation, whose interface is known to be SLE6, and do the same. Why does the lattice curve need the plateau window when the SLE curve does not?
Use the chest field map with noise 0, then 1.5 with correlation length 0, then 1.5 with correlation length 5. What κ̂ do you read each time, does the Brownian test pass, and what would it mean if a real magnetocardiography map gave a clean plateau?
In the dimension sweep (03·C), run the Lorenz, heart-like, burster and white-noise records. At what dimension does each settle, and where are its forecasts best? For the one that never settles, which charts tell you why, and why can the false-recurrence chart not decide the question by itself?
In symbol coding (03·D), choose the heart-like record, TESPAR coding, and turn on the seam check with r = 1.6. Read the duration ratio and the shape shift, then compare the far side’s symbol mix before and after rescaling. Repeat with dynamics changed, and then with the circuit code. Which number tells a pure seam from changed dynamics, and why does the circuit code need its interval rescaled?
If you have Eugene Kononov’s Visual Recurrence Analysis installed, open its Lorenz, Hénon and white-noise sample files with Open a data file in 01. What delay and dimension does the bench suggest for each, and how do they compare with the values VRA’s own help file gives for Lorenz? Why does the bench choose a delay of 1 for Hénon?
The Unfolding Bench is an open, browser-based instrument for recovering hidden structure from measured signals: delay embedding after Takens, recurrence quantification after the recurrence-analysis methods Jorgensen applied to pilot heart-rate variability, symbol coding after his TESPAR-based display work with S. Sharma, and Schramm–Loewner evolution in both directions. Everything runs in your browser; nothing you paste leaves it unless you save to a shared library. Every number on the page is computed live from the formulas shown, and each instrument says where it simplifies.
It is a research and teaching instrument. It is not a medical device, and nothing it reports is a diagnosis.
Ingram, B. M. (2026). The Unfolding Bench: delay embedding, recurrence quantification and Schramm–Loewner evolution for measured signals [Interactive software]. bryaningram.com. After methods in Jorgensen, recurrence analysis of pilot heart-rate variability (unpublished, cited with permission).
Questions, data to test, or a curve that breaks the method: bryaningram.com. Reports downloaded from section 06 carry their method and parameters so results can be reproduced.