Skip to content

Qiu et al., 2026

This dataset contains responses of mouse retinal ganglion cell axonal boutons, imaged with chronic two-photon calcium imaging in the superficial layers of the superior colliculus of awake mice watching natural movie clips. Unlike the other datasets in OpenRetina, the recordings are made at the retinal output rather than in the retina itself, and every session ships the animal's behaviour (pupil size, locomotion) and eye position alongside the responses.

Dataset at a glance

Species Recording site Recording technique Stimulus type(s) Stim channels Behaviour channels Boutons (quality filtered) Sessions Recording fs Stim fs Stimulus geometry
mouse (awake) superior colliculus, superficial layers 2P imaging of RGC axonal boutons natural movie clips, 10 s 1 (grayscale) 2 of 3 used (pupil size, locomotion) 17,272 of 63,747 recorded 10 (3 animals) 30 Hz 30 Hz 36 × 64 px

Bouton counts are the lengths of the shipped neurons_fluor_good masks, counted from the data rather than taken from the paper.

Sessions

Session keys are dynamic{animal}-{scan}-{idx}-Fluorescence-7b721b-v4a; the leading number groups the ten sessions into three animals. Clips are 300 frames (10 s at 30 Hz) throughout, in every tier.

Session Boutons (of recorded) Train clips Validation clips Test clips × repeats Non-clip test trials
28188-16-3 2,710 (7,636) 100 28 95 × 1–10 65 (monet2, trippy)
28188-16-5 2,046 (3,605) 99 27 94 × 1–10 66 (monet2, trippy)
28188-17-2 1,714 (4,788) 110 28 96 × 1–10 77 (monet2, trippy)
28188-18-4 1,593 (5,759) 377 98 6 × 14–18 —
28188-19-9 787 (6,760) 382 86 6 × 15–20 18 (chirp, moving bar)
28712-3-8 1,728 (7,338) 401 105 6 × 16–19 21 (chirp, moving bar)
29163-2-7 1,327 (6,634) 105 26 94 × 1–9 69 (monet2, trippy)
29163-4-4 3,175 (6,177) 320 86 6 × 14–18 10 (chirp, moving bar)
29163-5-8 1,113 (8,029) 410 101 6 × 17–19 17 (chirp, moving bar)
29163-6-5 1,079 (7,021) 420 97 6 × 18–20 21 (chirp, moving bar)

The dataset ships its own train/validation assignment per trial, and the OpenRetina dataloader honours it rather than drawing validation clips at random.

Two test designs

Sessions do not share one test paradigm, which matters when pooling results across them:

  • Six sessions (18-4, 19-9, 3-8, 4-4, 5-8, 6-5) were tested on the same six clips, each repeated 14–20 times. These are the sessions with plenty of training data (320–420 train clips).
  • Four sessions (16-3, 16-5, 17-2, 2-7) were instead tested on 94–96 distinct clips with only 1–10 repeats each, and have roughly a quarter of the training data (~100 train clips). Each of these sets is a superset of the six shared clips.

Across all ten sessions there are 96 distinct test clips, of which 6 are common to every session — the only ones for which a cross-session, repeat-averaged comparison is well powered.

Other stimuli in the file tree

Each session's test tier also holds trials that are not natural-movie clips, and these differ by session: functional-characterisation movies (chirp, moving bar) in five sessions, and monet2 / trippy parametric noise in the four small-training sessions. The OpenRetina loaders select natural-movie trials via stimulus_type="clip" and ignore the rest, which also protects the repeat-stacking code from the frame-count jitter those trials carry.

Dataset structure

The data ships in Sensorium FileTree format — one .npy per trial per stream, with trial i of every stream describing the same trial, aligned to row i of each meta/trials/*.npy array:

dynamic28188-19-9-Fluorescence-7b721b-v4a
├── data
│   ├── videos         # {i}.npy — (36, 64, T) grayscale movie
│   ├── responses      # {i}.npy — (n_boutons, T) raw calcium fluorescence
│   ├── behavior       # {i}.npy — (3, T) pupil size, Δ-pupil, locomotion
│   └── pupil_center   # {i}.npy — (2, T) eye position, input to the shifter
└── meta
    ├── trials         # tiers, condition_hash, clip_movie_name, … (one row per trial)
    ├── neurons        # unit_ids, cell_motor_coordinates, …
    └── statistics     # per-stream mean/std used for normalisation

Trials are NaN-padded at the end to a length that is uniform within a session but differs between sessions (300, 450 or 960 frames, the longest trial that session contains); the valid portion of a clip trial is always the first 300 frames. Neuron quality masks live one level up, in data-quality/<session-prefix>_neurons_fluor_good.npy, and are index arrays rather than boolean masks.

Resources

OpenRetina support

Train the core-readout model on this dataset with:

uv run openretina train --config-name qiu_2026_core_readout

See the Qiu dataset API reference for the dataloaders, stimulus and response loaders, the pupil loader that feeds the shifter, and the shared trial helpers.