From 0bb1318d74a1512f5c6bd2625d4a979aa6cbf1c3 Mon Sep 17 00:00:00 2001 From: Yi-111-a <153097222+Yi-111-a@users.noreply.github.com> Date: Fri, 25 Sep 2026 13:05:01 +0800 Subject: [PATCH] Fix Neuralynx unclosed recording header parsing --- neo/rawio/neuralynxrawio/nlxheader.py | 3 ++- neo/test/rawiotest/test_neuralynxrawio.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/neo/rawio/neuralynxrawio/nlxheader.py b/neo/rawio/neuralynxrawio/nlxheader.py index 54bd57c99..04999f7ec 100644 --- a/neo/rawio/neuralynxrawio/nlxheader.py +++ b/neo/rawio/neuralynxrawio/nlxheader.py @@ -350,7 +350,8 @@ def _setTimeDate(self, txt_header): sr = NlxHeader._closeDatetime2_pat.search(txt_header) if sr: dt2 = sr.groupdict() - self["recording_closed"] = dateutil.parser.parse(f"{dt2['date']} {dt2['time']}") + if (dt2["date"], dt2["time"]) != ("File", "was"): + self["recording_closed"] = dateutil.parser.parse(f"{dt2['date']} {dt2['time']}") def _normalize_types(self): """ diff --git a/neo/test/rawiotest/test_neuralynxrawio.py b/neo/test/rawiotest/test_neuralynxrawio.py index 0a1c90980..af69efa69 100644 --- a/neo/test/rawiotest/test_neuralynxrawio.py +++ b/neo/test/rawiotest/test_neuralynxrawio.py @@ -563,5 +563,16 @@ def test_filename_prop(self): self.assertEqual(r"C:\CheetahData\2000-01-01_00-00-00\CSC5.ncs", hdr["OriginalFileName"]) +class TestNlxHeaderParsing(unittest.TestCase): + def test_unclosed_recording(self): + header = NlxHeader.__new__(NlxHeader) + header._setTimeDate( + "## Time Opened: (m/d/y): 1/1/2000 (h:m:s.ms) 18:28:39.821\n" + "## Date Closed: (m/d/y): File At Time: was not properly closed" + ) + + self.assertIsNone(header.get("recording_closed")) + + if __name__ == "__main__": unittest.main()