fly_hs_readout — FLYVISION integrate op

• Data kinds: matrix × table → measurement

• Call: import fullseye as fs; fs.ledger.fly_hs_readout(responses, lattice, n_pref, el_min_deg=0.0, rectify=True) (implementation को सीधे call करना हो तो import flyvision; flyvision.fly_hs_readout(responses, lattice, n_pref, el_min_deg=0.0, rectify=True), registry से लेना हो तो opsflyvision.get("fly_hs_readout"))

उपयोग

horizontal-system wide-field readout: ऊपरी field पर opponent sum।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

Given a stack of motion-detector responses over the ommatidia — the first *n_pref* rows the preferred-direction type, the rest the anti-preferred — the opponent readout over the ommatidia above the horizon is::

(a - b) / (a + b + 1e-6)

where a and b are the (optionally rectified) totals of the preferred and anti-preferred responses over the columns with el > el_min_deg.

Only the upper visual field is used because the ground flow of forward motion is 1/distance while the rotational flow it must be separated from is distance-independent: an eye 1.2 mm above the floor sees floor flow of 330-1000 deg/s, above the ~200 deg/s bandwidth of the motion detectors, so the lower field carries speed the correlator cannot read and is excluded.

responses: a (k, n) matrix of responses, n matching the lattice.

lattice: the dict returned by fly_hex_lattice.

n_pref: how many leading rows are the preferred-direction type

(1 <= n_pref < k).

el_min_deg: the horizon; only ommatidia above it contribute.

rectify: half-wave rectify (clip negatives to 0) before summing.

Returns the opponent ratio as a float in [-1, 1].

Ground truth: with the preferred rows active only in the upper field and the anti-preferred rows silent, the readout is +1 (and the sign and value match the hand calculation); an el_min_deg above every ommatidium raises (pinned in the tests).

Raises ValueError: a non-2-D / empty / non-finite *responses*, a *responses* over the element cap, a *lattice* that is not a fly_hex_lattice result, a column count not matching the lattice, a *n_pref* outside [1, k-1], a non-real *el_min_deg*, a non-bool *rectify*, and an *el_min_deg* above every ommatidium (no upper field to read).

उपयोग की विस्तृत guide

• fly_vision family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_fly_vision — py -3.11 examples/poc_fly_vision.py

वे अगले ops जिनसे type जुड़ता है (measurement को input के रूप में लेते हैं)

—

इसी category के (integrate)

—


*Provenance: flyvision.py — FLYVISION operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.