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=60Bursts:
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.entitiesand used bycogpy.datasets.gui_bundles.ieeg_grid_bundle(..., large_backend="dask")is supported whendaskis 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.