Skip to content

v1.1.1

Choose a tag to compare

@neuromechanist neuromechanist released this 02 Jun 22:45
· 14 commits to main since this release
5af633a

biosigio 1.1.1

Bound peak memory for large-file Zarr conversion so multi-GB recordings fit a free 16 GB ubuntu-latest runner. No API or behavior change. Closes #95.

Fixed

  • Zarr exporter streaming — per (modality, rate) group the exporter no longer builds a float64 list of every channel plus a float64 vstack copy plus the int16 copy at once (~4.5x the output). It now preallocates the output-dtype array and resamples + quantizes one channel at a time straight into it, dropping the float64 double-buffer. Round-trip output is bit-identical.
  • EEGLAB one-shot frame build — the signal DataFrame is built in a single allocation (samples x channels) instead of one column at a time, avoiding the O(n_channels) block-manager reallocation that roughly doubled peak RAM for high-channel-count .fdt recordings; the .fdt's native float32 is preserved (no silent upcast).

Measured: a 5 GB EEGLAB .set+.fdt (346ch x 3.6M @ 500 Hz) now converts at ~10 GB peak RSS (load 5.5 GB + export), down from a fragmented multi-GB path; round-trip events and rate-group splitting unchanged. New test_zarr_memory.py guards the export's marginal peak via a subprocess ru_maxrss check.