The viewer tells its treatment windows apart, and hands a visitor a recording - #85
Merged
Conversation
Three things about the import page, from Tony looking at it. **The windows were one colour.** Baseline abutting drug abutting washout drew as one grey block with three names floating over it: you could see that periods existed and not which was which. Each label now takes a hue from a fixed categorical palette — assigned to the LABEL and not the position, so `TTX` is the same colour in every recording of the folder and comparing two of them is a comparison. The order is the one validated for colour-vision deficiency, adjacent pairs clearing ΔE 8 under protanopia and deuteranopia in both modes, and a ninth distinct label gets a neutral rather than a ninth hue that would collide. No text is ever painted in it: the wash stays pale enough that a mark over it is still a mark, a saturated rail along the top of the band carries identity, and the name sits in ink beside a colour chip. **Most people who open this page have no folder to point it at**, and a viewer with nothing in it is a screenshot of a promise. So the page will write one: invented recordings, emitted as the CSV text the import contract describes and handed to the same loader, which is not told where they came from. What an explorer drives is the real reading path — same parser, same folder check, same raster — and the NA row for an ROI that fired nothing is exercised rather than described. The settings it opens at are the measured ones, and that is the load-bearing part. Rate, ROI count, participation and jitter come off untreated slices: about six of thirty-three ROIs per event with a third of a second of spread, not half the field firing together. Shipping the old guesses as the public default would have published the arrangement that scored every detector at F1 0.9-1.0 and cost two weeks. They are on the switches instead, next to the flat background, because the difference is the thing worth looking at. Three things it refuses to do: match Python's numbers (same model, different generator — a seed reproduces in this browser), simulate a treatment (the windows are labels over identical statistics; simulating the effect spends the one the experiment exists to measure), and let any of it read as evidence — which the page says on the picture, not only beside the controls. **The sidebar is three accordion sections** — a folder you have, a folder that does not exist, and the recordings either produced — one open at a time, because the list wants the height and the controls want attention while they are being set. The folder check's verdict rides on the Recordings header, since that section can be shut and a check nobody sees is a check nobody ran. One bug found on the way: `all: unset` on the list rows took `box-sizing` with it, so `width: 100%` went content-box and every row ran its event count past the panel edge, where the sidebar clipped it to a bare number. The page still reaches nothing, and `tests/test_site_viewer.py` still proves it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`bg_rate_shape` was fitted to reproduce one fact: 35% of ROIs record no event at all in a real baseline window. It does — 28.8% at bench structure. Plant the fifteen coordinated events on top at the measured participation and it falls to 0.5%, because participants are drawn uniformly and an ROI escapes all fifteen draws about 4% of the time. So the two features fitted off real recordings cannot both be true of the same simulated one. A recording matching the real silent fraction has almost no coordination in it; a recording with realistic coordination has a background nothing like a real field's. This is a third face of the mechanism PR #50 documents twice, and neither section states it: §1's version needs the promiscuity probe switched on and is explicitly about a test construct, §2's is about the uniform draw as an unchosen assertion. This one needs nothing switched on and is about the data every bench run would produce the day the fitted background is adopted — which sharpens §2's ask rather than answering it, since whether busy cells coordinate more is the lab's question and not this repo's. `tools/quiet_tail_vs_events.py` prints the table, so it can be re-taken when the generator moves instead of quoted from a note. Two implementations agree: the browser port that ships with the viewer gives 28.2% and 1.1%. Found by building the viewer's simulator, which needed defaults a stranger could trust and so had to be pointed at the measured values. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three things Tony asked for after looking at the import page, plus one finding that fell out of building them.
Treatment regions blended together
Every window drew in the same grey wash, so baseline abutting drug abutting washout was one block with three names floating over it. Each label now takes a hue from a fixed categorical palette, assigned to the label rather than the position — so
TTXis the same colour in every recording of the folder and comparing two of them is a comparison. The slot order is the one validated for colour-vision deficiency (adjacent pairs clear ΔE 8 under protanopia and deuteranopia in both light and dark); a ninth distinct label gets a neutral rather than a ninth hue that would collide with one of the eight.No text is ever painted in the window colour. The wash stays pale enough that a mark over it is still a mark, a saturated rail along the top of the band carries identity, and the name sits in ink beside a colour chip — on the raster and in the legend.
Simulated data, for a visitor with no folder
The page will now invent one: recordings emitted as the CSV text the import contract describes and handed to the same loader, which is not told where they came from. An explorer drives the real reading path — same parser, same folder check, same raster — and the
NArow for an ROI that fired nothing is exercised rather than described.It opens at the measured settings, and that is the load-bearing part. Rate, ROI count, participation and jitter come off untreated slices: about six of thirty-three ROIs per event with a third of a second of spread. Shipping the old guesses as the public default would have published the arrangement that scored every detector at F1 0.9–1.0 and cost two weeks; they are on the switches instead, beside the flat background, because the difference is the thing worth looking at.
Three refusals, said on the page: it does not match Python's numbers (same model, different generator — a seed reproduces in this browser), it does not simulate a treatment (the windows are labels over identical statistics), and none of it is evidence — which the page says on the picture, not only beside the controls.
Accordion sidebar
Three sections — a folder you have, a folder that does not exist, and the recordings either produced — one open at a time, because the list wants the height and the controls want attention while they are being set. The folder check's verdict rides on the Recordings header, since that section can be shut and a check nobody sees is a check nobody ran.
One bug, one finding
all: unseton the list rows tookbox-sizingwith it, sowidth: 100%went content-box and every row ran its event count past the panel edge, where the sidebar clipped it to a bare number.And: the fitted background's quiet tail does not survive the events planted on top of it — 28.8% of ROIs with no event becomes 0.5% once the fifteen coordinated events go in, because participants are drawn uniformly. A third face of the mechanism PR #50 documents twice, and one neither section states, since it needs nothing switched on. Written up in
docs/todo/, withtools/quiet_tail_vs_events.pyto re-take the table rather than quote it. Two implementations agree.Checks
pytestgreen (481 passed, 1 skipped), sapper clear,tools/build_site.pybuilds — including its refusal to publish a viewer that can reach the network, whichtests/test_site_viewer.pyalso proves.