NeuroMirror

Workflow

Offline-first with blockwise adaptation. No public, confirmed real-time SDK exists for this legacy NeXus-10 setup, so the loop closes between blocks — not sample-by-sample.

Blockwise closed loop

Record a block

Capture a four-channel block in BioTrace+ on the NeXus-10 amplifier under your protocol.

Export EDF/EDF+

Export the block to EDF/EDF+ with channel names and event markers preserved.

Analyze

Run the verifier and any offline analysis to summarize the block — channels, RMS, PSD, markers.

Adapt

Update parameters (e.g. window length, target bands) and feed them into the next block.

the updated parameters loop back into the next recording block
Why offline-first

The design records a block, exports it, analyzes and adapts between blocks, then feeds updated parameters into the next block. It never assumes a real-time stream that this hardware doesn't confirm.

A clean extension path for a future real-time SDK is described in docs/architecture.md — the boundary is designed so a streaming seam could drop in without rewriting the analysis.

Quick start
# Install (Python >= 3.10)
python -m venv .venv && source .venv/bin/activate
make install-dev

# Generate a synthetic EDF and run the verifier
make demo

# Verify a real BioTrace+ export
nexus-neuromirror verify path/to/session.edf \
  --config configs/project.example.yaml \
  --out reports/diagnostic