diff --git a/neo/rawio/neuralynxrawio/nlxheader.py b/neo/rawio/neuralynxrawio/nlxheader.py index 15b812820..f13ae4365 100644 --- a/neo/rawio/neuralynxrawio/nlxheader.py +++ b/neo/rawio/neuralynxrawio/nlxheader.py @@ -55,7 +55,13 @@ def _to_bool(txt): ("DspHighCutNumTaps", "", None), ("DspHighCutFilterType", "", None), ("DspDelayCompensation", "", None), - ("DspFilterDelay_µs", "", None), + # DspFilterDelay key with flexible µ symbol matching + # Different Neuralynx versions encode the µ (micro) symbol differently: + # - Some files use single-byte encoding (latin-1): DspFilterDelay_µs (raw bytes: \xb5) + # - Other files use UTF-8 encoding: DspFilterDelay_µs (raw bytes: \xc2\xb5) + # When UTF-8 encoded µ (\xc2\xb5) is decoded with latin-1, it becomes "µ" + # This regex matches both variants: "µs" and "µs" but normalizes to "DspFilterDelay_µs" + (r"DspFilterDelay_[Â]?µs", "DspFilterDelay_µs", None), ("DisabledSubChannels", "", None), ("WaveformLength", "", int), ("AlignmentPt", "", None), diff --git a/neo/test/rawiotest/test_neuralynxrawio.py b/neo/test/rawiotest/test_neuralynxrawio.py index f83d58c2c..7000c97fb 100644 --- a/neo/test/rawiotest/test_neuralynxrawio.py +++ b/neo/test/rawiotest/test_neuralynxrawio.py @@ -31,6 +31,7 @@ class TestNeuralynxRawIO( "neuralynx/Cheetah_v5.6.3/original_data", "neuralynx/Cheetah_v5.7.4/original_data", "neuralynx/Cheetah_v6.3.2/incomplete_blocks", + "neuralynx/two_streams_different_header_encoding", ] def test_scan_ncs_files(self):