fly_onoff_split — FLYVISION lamina op

• Data kinds: matrix → matrix

• Call: import fullseye as fs; fs.ledger.fly_onoff_split(movie, dt_s, tau_on_s=0.02, tau_off_s=0.02, rectify=True) (implementation को सीधे call करना हो तो import flyvision; flyvision.fly_onoff_split(movie, dt_s, tau_on_s=0.02, tau_off_s=0.02, rectify=True), registry से लेना हो तो opsflyvision.get("fly_onoff_split"))

उपयोग

contrast movie को उन ON और OFF channels में बाँटता है जिन्हें medulla ले जाता है।

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

Beyond the lamina the fly stops carrying one signed signal and carries two:

an ON channel (Mi1 / Tm3, brightening) and an OFF channel (Tm1 / Tm2, darkening), each with its own relay dynamics. This op is that split, and it keeps the rectification *optional* on purpose: the split was measured downstream, in the motion response (Joesch et al., *Nature* 468:300, 2010), while L1/L2 themselves respond linearly (Clark et al., *Neuron* 70:1165, 2011), so a pathway that rectifies at the lamina is making a claim the recordings do not.

movie: (T, n) contrast, rows = time (the return of fly_lamina_filter). dt_s: sample interval, seconds. tau_on_s / tau_off_s: the low-pass time constant of each channel, seconds.

rectify: True half-wave rectifies (ON = max(c, 0), OFF = max(-c, 0), both >= 0); False passes the signed contrast into the ON channel and its negation into the OFF channel, which is the linear L1/L2 case and lets the rectification happen downstream instead.

Returns (T, 2n) float64: columns 0..n-1 are ON, n..2n-1 are OFF, the same ommatidium order in each half.

Ground truth (exact, with tau_on_s == tau_off_s so the two channels share one filter):

• ON - OFF is the low-passed input, whichever *rectify* you chose;

• with rectify=True, ON + OFF is the low-passed absolute value;

• a movie that never goes negative leaves the OFF channel identically zero (and vice versa) — the split does not invent a dark event.

Raises ValueError: a non-2-D / too-short / non-finite *movie*, a movie

over MAX_MOVIE_ELEMENTS, and a non-positive *dt_s* / *tau_on_s* / *tau_off_s*.

उपयोग की विस्तृत 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_optomotor_steering — py -3.11 examples/poc_fly_optomotor_steering.py

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

fly_lamina_filter · fly_t4t5_field · fly_flow_from_directions · fly_egomotion_from_flow · fly_hs_readout

इसी category के (lamina)

fly_lamina_filter


*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.