Reference — photosensitivity literature¶
This is the evidence base behind the toolbox's flicker-safety warnings
(src/ssvep/stim/flicker.py, surfaced in the Build run tab) and, for a deployment that operates
under an ethics-board approval, behind that approval's photosensitivity sections too. Each entry
states what the source says and what the toolbox does about it, so a reader can trace any
threshold in the code to a citation.
Why there are no PDFs here. These are publisher-copyrighted works; redistributing them — including in a repository that will become public — is not permitted, and neither are the full-text web clippings that previously stood in for them. Every source below is cited by DOI or by its publisher's permanent link. Read them through your institutional subscription — no copy needs to live in this repository. Local copies of the governance documents that cite them belong on your institution's own secure storage, never in git.
All DOIs and bibliographic details below were verified against Crossref on 2026-09-12; the ITU Recommendation was verified against the ITU's own publication record. [6]'s bibliographic record was verified against Crossref, and [7] against the W3C's own publication, on 2026-09-27; what [6]'s entry takes from its full text, and from which copy, is stated in the entry.
The thresholds the toolbox actually implements¶
flicker.py encodes these facts from this literature, and nothing else. The first four grade a target's relative risk (photosensitivity_risk, #332): frequency sets a base grade — elevated at 3–10 and 25–30 Hz, high at 10–25 Hz at high contrast, moderate at 30–60 Hz, low outside 3–60 Hz — and each of [6]'s Table 4 conditions the design meets raises it one step, additively, up to high: a large area (the target's own, or every target flickering at the same time, summed); saturated red or red–blue alternation (one step, never two); 1–8 cyc/deg stripes (converted from cycles across the target in norm units when the display declares its geometry); and a luminance of 20 cd/m² or more, presumed when the display does not declare one, since nearly every display flashes that bright. A value the toolbox cannot determine is named as unknown in the message and does not raise the grade. A contrast-reversing target is graded on the worse of its declared frequency and its reversal rate. The rest are separate warnings about its pattern and its colour (pattern_density, chromatic_flicker). All of them warn, and none refuses a design.
| Constant | Value | Source |
|---|---|---|
PROVOCATIVE_LO_HZ / PROVOCATIVE_HI_HZ |
3–60 Hz | The band the toolbox warns on. [2] sets the hazard floor at ≥3 Hz; [6]'s Table 4 advises avoiding flashes, colour flashes and oscillating stripes at 3–60 Hz. [1] puts the provocative range at 1–65 Hz, so outside 3–60 Hz is lower risk, never "safe"; see the caution below. |
PEAK_LO_HZ / PEAK_HI_HZ |
10–25 Hz | Where the grade is highest: the union of [6]'s 10–20 Hz maximum and [1]'s "frequencies of 15–25 Hz are most provocative", so that neither source's peak is dropped. |
ELEVATED_HI_HZ |
30 Hz | A grade boundary, not a literature value: below it a target is graded at least elevated, from it to 60 Hz moderate before its raising factors. It is the toolbox's former warning ceiling, kept so that no design warns less than before. |
LARGE_AREA_FRACTION, FLASH_LUMINANCE_CD_M2, STRIPES_LO_CPD / STRIPES_HI_CPD |
25 % of the screen; 20 cd/m²; 1–8 cyc/deg | [6], Table 4: its advice to media designers says to avoid flashes of 20 cd/m² or more, alternating colour flashes (especially red–blue), and bright or coloured stripes of 1–8 cycles per degree, at 3–60 Hz. Its area clause — more than about 25 % of the visual field of both eyes, for more than about 0.5 s — is what makes them "particularly likely to provoke seizures"; the quotation belongs to that clause. The toolbox measures 25 % of the screen, which under-counts the visual field. With colour (saturated red, after [2], or red–blue), each condition a design meets raises its grade one step. An undeclared luminance is presumed to be 20 cd/m² or more; only a declared value below it removes that step. A true unknown (a stripe pattern's cycles per degree with no viewing geometry) is named in the message and does not raise the grade. |
MAX_PAIRS_MODULATED / MAX_PAIRS_STATIC |
5 / 8 light–dark pairs | [2]: a pattern of more than five light–dark pairs is potentially harmful when it flashes, oscillates or reverses contrast, eight when it is unchanging. [2] counts stripes "in any orientation", so the toolbox counts the worst of a checkerboard's three orientations rather than its width alone. The count is the renderer's own: spatial frequency × target width in degrees (in norm units the spatial frequency already is the count), down the height for a tall checkerboard, and across the diagonal too — a checkerboard's same-coloured checks line up corner to corner, but a single straight 45-degree line can't run further than the board's shorter side before leaving it, so the diagonal holds about 2 × (the shorter side's pair count) − 0.5 pairs, nearly twice that side's count. On a square board of n pairs per side that is about 2n − 0.5 (a 4-pair board shows about 7.5, which exceeds the 5-pair modulated limit even though neither its width nor its height does); on a non-square board the diagonal is bounded by the shorter side alone, not the sum of both. It warns on the worst-orientation count alone, without the area, luminance and duration conditions [2] also states, because a design rarely records luminance and a multi-target array adds up in area. |
COLOUR_FLASH_LO_HZ / COLOUR_FLASH_HI_HZ |
3–60 Hz | [6], Table 4 ("Advice for media designers"): avoid alternating colour flashes, especially red–blue, at 3–60 Hz. The toolbox warns when a target flickers or reverses in that range and any colour involved is a colour: more than CHROMATIC_UV_DISTANCE (0.01) from neutral grey in the CIE 1976 u′v′ diagram. "Involved" means what the target shows, and also its declared colour and the background, so that lowering the contrast cannot switch the warning off. So a flickering target is achromatic only when its colour, its background and everything it shows are black, white or grey. A reversing target is tested at f and 2f. |
SATURATED_RED_RATIO |
R/(R+G+B) ≥ 0.8 | Half of [7]'s definition of a red flash, which also requires the two states to differ by more than 0.2 in the CIE 1976 UCS diagram. The toolbox takes the ratio and deliberately leaves out the 0.2 clause: red flashing on black is the case [2] names first, and black has no chromaticity here, so the clause cannot be evaluated for it. Computing the ratio on linear-light values is the toolbox's choice, not a quotation of [7]. A target involving saturated red gets a stronger colour warning, because [2] names a transition to or from saturated red as an independent risk factor; one that alternates saturated red with blue gets the strongest, the combination [6]'s Table 4 singles out. |
⚠️ The grade is relative, and no grade means "safe". Nearly every SSVEP design sits inside 3–60 Hz, so a flat "inside the band" rating would be accurate and useless for choosing between designs; the grade says how far inside, relative to other designs. [1] reports a provocative range extending to ~65 Hz, and no frequency is reliably safe for a person who is photosensitive, so a "low" rating outside 3–60 Hz means lower risk, never "safe" — and the warning text says so. The 30 Hz grade boundary is a design choice, not a literature finding. Raising a threshold could only make the guard stricter. A deployment whose ethics approval confines stimulation to a narrower band sets that limit in its own configuration (the site profile), never in these constants. The alpha band (8–14 Hz) straddles the 10 Hz start of the peak, and the toolbox grades it elevated below 10 Hz and high from 10 Hz at full contrast.
Risk in this literature is not frequency alone — it scales with luminance, contrast, the solid angle subtended, and pattern structure. [2] is the source of the quantitative limits, and the toolbox's warnings are deliberately advisory: they inform the designer, they do not gate the protocol, and where an ethics approval governs the study, its submission is where the full risk case is made.
The grade travels with the recording (#286 P5). Each recording's sidecar stamps the grade of every target and the factors that raised it, as codes rather than messages (a message is reworded between versions; a code means the same to every reader), graded from the manifest that recording carries. At lock the operator is shown the session's highest grade and its factors, and a high grade with a human present must be acknowledged before the session locks; the acknowledgement is recorded. This covers the case screening cannot: someone whose first event has not happened yet. The grade's codes are high_contrast (the peak's base step), large_area, large_array_area, chromatic_separation, red_blue, saturated_red, stripes, luminance and luminance_presumed. A target's modulation depth (flicker.contrast) is not used to drop the high_contrast step: [2]'s flash hazard is an absolute luminance change of 20 cd/m², which a shallow modulation of a bright display still exceeds, and a display rarely declares its luminance, so the toolbox keeps the worst case, which can only over-warn.
References¶
[1] R. S. Fisher, G. Harding, G. Erba, G. L. Barkley, and A. Wilkins, "Photic- and pattern-induced seizures: A review for the Epilepsy Foundation of America Working Group," Epilepsia, vol. 46, no. 9, pp. 1426–1441, Sep. 2005, doi: 10.1111/j.1528-1167.2005.31405.x.
Relevance. The background review for the EFA consensus — the prevalence and dose-response evidence the toolbox's warnings rest on.
Key takeaways. - Photosensitivity (an abnormal EEG response to light or pattern) occurs in ~0.3–3% of the population; seizures from light stimuli ~1 per 10,000, or ~1 per 4,000 aged 5–24. People with epilepsy have a 2–14% chance of light- or pattern-precipitated seizures. - Frequencies of 15–25 Hz are most provocative; the range is 1–65 Hz. This is the direct source of the upper half of
PEAK_LO_HZ/PEAK_HI_HZ, and the reason a "low" grade outside 3–60 Hz is lower risk rather than a safety boundary. - Light–dark borders induce pattern-sensitive seizures; saturated red is an additional factor. - Photic or pattern stimulation provokes seizures in predisposed individuals but is not known to increase the chance of subsequent epilepsy — relevant to how risk is described on the consent form. - The Pokémon broadcast incident (685 children presenting to hospital) is the canonical case; notably 76% of those who seized had no prior seizure history, which is why screening cannot be the only control.
[2] G. Harding, A. J. Wilkins, G. Erba, G. L. Barkley, and R. S. Fisher, "Photic- and pattern-induced seizures: Expert consensus of the Epilepsy Foundation of America Working Group," Epilepsia, vol. 46, no. 9, pp. 1423–1425, Sep. 2005, doi: 10.1111/j.1528-1167.2005.31305.x.
Relevance. The operative one — the source of the quantitative hazard thresholds the toolbox's flicker limits derive from, and the closest thing this field has to a testable standard.
Key takeaways. - A flash is a potential hazard if it has luminance ≥20 cd/m², occurs at ≥3 Hz, and occupies a solid angle of ≥0.006 steradians (~10% of the central visual field, or ~25% of screen area at typical viewing distances). Source of
PROVOCATIVE_LO_HZ. - Transition to or from saturated red is an independent risk factor. - A provocative pattern has more than five light–dark stripe pairs in any orientation, when it subtends >0.006 sr, the lightest stripe exceeds 50 cd/m², and it is shown for ≥0.5 s. If the pattern oscillates, flashes, reverses contrast or changes direction the limit is five stripe pairs; if unchanging or smoothly drifting, eight. Source ofMAX_PAIRS_MODULATED/MAX_PAIRS_STATIC. - All three of frequency, area, and luminance must be exceeded together for the flash criterion to trip — which is the argument the protocol makes for small, frequency-multiplexed targets: subtended area, not frequency alone, is the lever the design pulls. - The consensus notes these principles are far easier to apply to fixed media than to interactive displays. An SSVEP experiment is fixed media in this sense — the stimulus is fully specified by the manifest before it runs, which is exactly why design-time validation is possible at all.
[3] A. J. Wilkins, C. E. Darby, and C. D. Binnie, "Neurophysiological aspects of pattern-sensitive epilepsy," Brain, vol. 102, no. 1, pp. 1–25, 1979, doi: 10.1093/brain/102.1.1.
Relevance. The primary work establishing that spatial pattern, independent of flash, provokes epileptiform discharge — the basis for the toolbox warning on checkerboard and grating stimuli, not just on luminance flicker.
Key takeaways. - Epileptiform response to gratings depends on spatial frequency, with a broad maximum near ~2–4 cycles/degree, and increases with the area of retina stimulated and with pattern contrast. - Binocular presentation is substantially more provocative than monocular. - Pattern sensitivity and photosensitivity overlap heavily in the same individuals, which is why the toolbox treats a patterned flickering target as carrying both risks rather than evaluating flicker alone.
[4] A. Wilkins et al., "A neurological basis for visual discomfort," Brain, vol. 107, no. 4, pp. 989–1017, 1984, doi: 10.1093/brain/107.4.989.
Relevance. The discomfort/aversion literature — the evidence that stimuli well below any seizure threshold still reliably cause headache, eyestrain and illusions. This is what the post-condition symptom questionnaire (
docs/QUESTIONNAIRES.md) exists to capture, and it is the reason adverse-symptom monitoring is not optional in a long SSVEP session.Key takeaways. - Striped patterns provoke illusions of colour, shape and motion in the general (non-epileptic) population, with the same spatial-frequency tuning that maximises epileptiform EEG response — suggesting a shared cortical mechanism. - Discomfort rises with contrast, duration, and the area of the visual field stimulated. - Susceptibility to pattern-induced discomfort is elevated in people prone to migraine, an exclusion/monitoring consideration for participant screening.
[5] International Telecommunication Union, "Guidance for the reduction of photosensitive epileptic seizures caused by television," Recommendation ITU-R BT.1702-3, Geneva, Switzerland, Nov. 2023. [Online]. Available: https://www.itu.int/rec/R-REC-BT.1702/en (PDF)
Relevance. The broadcast-industry codification of [2], and the standard commonly cited by ethics protocols covering this kind of flicker risk; useful mainly because it turns the consensus thresholds into measurable, testable acceptance criteria. ITU Recommendations have no DOI.
Key takeaways. - Restates the [2] limits as broadcast guidance and asks broadcasters to make producers aware of the risk of seizure-inducing content. - Recommends adaptive temporal filtering to attenuate frame-to-frame stimuli in the 10–30 Hz region, typically ≥20 dB at temporal frequencies of 10 Hz and above. - Annexes 1–5 carry the measurement methodology — the practical route to verifying a display's output rather than trusting the nominal design, which is the same job the flik-o-meter does for this toolbox. - ⚠️ Superseded revisions exist (BT.1702-1, -2). Cite -3 (11/2023); the ITU page above always resolves to the in-force version.
[6] R. S. Fisher, A. Wilkins, Y. Takahashi, et al., "Visually-provoked seizures: Consensus of the Epilepsy Foundation Working Group," Epilepsia, vol. 67, no. 2, pp. 565–581, Feb. 2026, doi: 10.1111/epi.18702.
Relevance. The update to the 2005 guidance ([1], [2]), and the source of the toolbox's colour-flash warning.
What was checked against what. The bibliographic record above against Crossref. The abstract (the version Crossref carries) advises avoiding bright flashing patterns at 10–20 Hz, repetitive colour flashes, and oscillating or static stripes of about 1–8 cycles per degree; it gives no band for colour and does not mention red–blue. The 3–60 Hz band and the red–blue clause are from the full text's Table 4, "Advice for media designers", checked against the publisher's own full text (the copy first used to draft this entry was the open-access one in Utrecht University's repository, hdl.handle.net/1874/468647).
Key takeaways. - Table 4 advises media designers to avoid flashes of ≥20 cd/m² recurring at 3–60 Hz; alternating colour flashes, especially red–blue, at 3–60 Hz; and bright or coloured stripes of 1–8 cycles per degree, particularly if they oscillate at 3–60 Hz — and states that they are "particularly likely to provoke seizures" when they cover more than about 25% of the visual field of both eyes for more than about 0.5 s (the quotation attaches to that area clause), with a footnote putting maximum risk at 10–20 Hz. The colour clause is the source of
COLOUR_FLASH_LO_HZ/COLOUR_FLASH_HI_HZ. - Fig. 2 is the CIE 1976 UCS chromaticity diagram. The paper places the risk of an alternating colour flash in how far apart the two colours lie on it: the greater the separation, the greater the risk, so red–blue alternation at 3–60 Hz is a hazard and red–orange much less of one. Red–blue is the example, not the rule. This is the source ofMAX_UV_SEPARATION(red–blue's u′v′ distance on sRGB, 0.457, the widest pair a display can show) and ofCHROMATIC_SEPARATION_FRACTION(0.80), which is the toolbox's own threshold and not a number from the paper (#332). - Moves the maximum-risk band to about 10–20 Hz. The toolbox'sPEAK_LO_HZ/PEAK_HI_HZ(10–25 Hz) cover both this band and [1]'s 15–25 Hz, and its warned band,PROVOCATIVE_LO_HZ/PROVOCATIVE_HI_HZ, is Table 4's 3–60 Hz (#332).
[7] World Wide Web Consortium, "Web Content Accessibility Guidelines (WCAG) 2.2," W3C Recommendation, Oct. 2023. [Online]. Available: https://www.w3.org/TR/WCAG22/
Relevance. Not a clinical source. It is where the broadcast flash guidance ([2], [5]) is written down as a test a program can apply, and the toolbox takes one definition from it.
Key takeaways. - A "pair of opposing transitions involving a saturated red" is one where a transition is to or from a state with R/(R+G+B) ≥ 0.8, and the two states differ by more than 0.2 in the CIE 1976 UCS chromaticity diagram.
SATURATED_RED_RATIOis the ratio half only; the table above says why the 0.2 clause is left out. - Content is below its general and red flash thresholds if it has no more than three flashes in any one second, or if the flashing area is at most 0.006 sr, the same area as [2].
Governance sources (not reproduced here)¶
The ethics-board, TCPS2 and FOIPOP documents that bind this project are institutional records,
not repository content — they live on this lab's own secure storage per its SOP, never in git.
This deployment keeps its own internal record of the enforceable rules
derived from them and of the divergences needing an amendment; docs/DATA_GOVERNANCE.md states
the mechanisms those rules bind to.
- An ethics-board approval, where one governs this deployment — the approved protocol and its amendments, if applicable. Approval is evidenced only by the institution's own current record, never by a row in a markdown file.
- TCPS2 (2022) — Tri-Council Policy Statement: Ethical Conduct for Research Involving Humans. [Online]. Available: https://ethics.gc.ca/eng/policy-politique_tcps2-eptc2_2022.html
- Nova Scotia Freedom of Information and Protection of Privacy Act. [Online]. Available: https://nslegislature.ca/sites/default/files/legc/statutes/freedom%20of%20information%20and%20protection%20of%20privacy.pdf