mef3io-coregistration 0.3.0¶
Released 2026-10-19.
Highlights¶
- Align two MEF 3.0 recordings captured on drifting clocks.
mef3io_coregistration.session.CoregSessionruns three stages on two.mefdsessions (or.mefd.tararchives): a gross offset over the whole recording (minutes to hours), sample-accurate anchors at chosen places, and the drift in between, fitted as a smooth monotone clock map. Stage 1 locks only when independent templates agree; an offset placed by hand is checked against the signal; a stage that did not lock can still be continued, and that choice is recorded. Channels are chosen per file and per stage, unipolar or bipolar, with polarity flips. How-to: Align two recordings in Python; guide: Methods. - A saved result (
CoregResult, JSON): the clock map, the anchors, the drift windows, the filters and channels used, a quality report and each recording's fingerprint, written byte-stable (Result format). - Read through a result, on the reference clock.
CoregisteredSessionreads one file with themef3io.Readercalls,CoregisteredMefReaderwith the legacymef_toolsMefReadercalls, andCoregisteredRecordingserves both files as one recording, each channel from a preferred file with the other filling its gaps when the two agree. Reads fetch only the window asked for; event times convert between the clocks (Read a coregistration in Python). - Results that travel. Recordings are passed by their current paths and matched to their roles only by start and end time (within 1 s); swapped files are refused (Open a result from a pipeline).
- Review report.
sigcoreg-review result.jsonwrites figures and an HTML page, from the whole recording down to single samples (reportextra) (Review a coregistration). - Synthetic pairs with a known offset and drift
(
mef3io_coregistration.synthetic), and a runnable end-to-end example that needs no data:01_align_synthetic_pair.py.
Upgrading¶
- From earlier private builds: they imported
signal_coregistration; change the import tomef3io_coregistration. Results and recording mappings saved by those builds open unchanged: their format identifiers are kept. - Requires Python 3.11+ and mef3io 1.3 or newer.
Full list of changes: v0.3.0.