tuning op• Data kinds: signal → table
• Call: import fullseye as fs; fs.ledger.fly_dsi(responses, angles_deg) (to call the implementation directly, import flyvision; flyvision.fly_dsi(responses, angles_deg); from the registry, opsflyvision.get("fly_dsi"))
Direction-selectivity index and preferred direction from tuning responses.
A vector sum on the circle::
DSI = |sum_k r_k exp(i theta_k)| / (sum_k r_k + 1e-9)
preferred = angle(sum_k r_k exp(i theta_k))
where `r_k >= 0` is the response to a stimulus moving at angle
`theta_k = angles_deg[k]` (negatives clipped to 0).
responses: a 1-D array of responses, one per direction.
angles_deg: the stimulus directions in degrees, same length.
Returns a dict `{"dsi": float, "pref_deg": float} with pref_deg` in
`[-180, 180]`.
Ground truth: a response at a single direction gives `dsi == 1`; an isotropic
response over directions evenly spanning the circle gives `dsi == 0` (pinned
in the tests).
Raises `ValueError`: a non-1-D / empty / non-finite *responses* or
*angles_deg*, mismatched lengths, an array over :data:MAX_SIGNAL_POINTS, and
an all-zero *responses* (no direction tuning to report).
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_fly_vision — py -3.11 examples/poc_fly_vision.py
table as input)fly_hex_resample · fly_hs_readout
tuning)—
*Provenance: flyvision.py — FLYVISION operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.