Small vs Large Modes (Debugging vs Responsiveness)

Bundles and example generators should support two modes:

mode="small" (quick debug)

Goals

  • Starts fast (< 1–2s on a laptop/workstation).

  • Low memory footprint.

  • Enough structure to exercise selection, stacking, downsampling, and basic overlays.

Typical sizes (guidelines)

  • Grid iEEG: n_ap=8, n_ml=8, n_time=20_000 (float32 recommended)

  • Spectrogram: nml=10, nap=10, nt=80, nf=60

  • Bursts: n_peaks=5–20

mode="large" (responsiveness check)

Goals

  • Stresses GUI rendering and interaction (pan/zoom, selection changes) without being “impossible” to allocate.

  • Large enough to reveal performance problems (downsampling budgets, Dask materialization, expensive transposes).

Typical sizes (guidelines)

  • Grid iEEG: n_ap=16, n_ml=16, n_time=200_000 (float32 recommended)

    • This is ~256 × 200k = 51.2M samples (~205MB as float32), big enough to matter but not instantly OOM.

  • Multichannel (non-grid): n_channel=32–64, n_time=1_000_000 (float32 recommended)

  • Spectrogram: nml=16, nap=16, nt=200–500, nf=100–200

Implementation notes (for when we implement)

  • These defaults are implemented in cogpy.datasets.entities and used by cogpy.datasets.gui_bundles.

  • ieeg_grid_bundle(..., large_backend="dask") is supported when dask is installed; it currently wraps the generated array in a dask array to support later “windowed materialization” work.

  • Avoid np.random.randn(n_channel, n_time) in “large” if it creates >GB arrays unintentionally. Prefer:

    • float32,

    • chunked/Dask-backed arrays where possible,

    • or “large time, moderate channels” profiles.

  • Always document the chosen defaults and estimated memory use per mode.