Skip to content

mef3io-coregistration 0.3.0

Released 2026-10-19.

Highlights

  • Align two MEF 3.0 recordings captured on drifting clocks. mef3io_coregistration.session.CoregSession runs three stages on two .mefd sessions (or .mefd.tar archives): 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. CoregisteredSession reads one file with the mef3io.Reader calls, CoregisteredMefReader with the legacy mef_tools MefReader calls, and CoregisteredRecording serves 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.json writes figures and an HTML page, from the whole recording down to single samples (report extra) (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 to mef3io_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.