v1.1.1
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 float64vstackcopy 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
.fdtrecordings; 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.