Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion neo/rawio/neuralynxrawio/nlxheader.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from packaging.version import Version
import os
import re
import warnings
from collections import OrderedDict

from neo.rawio.neuralynxrawio.ncssections import AcqType
Expand Down Expand Up @@ -350,7 +351,11 @@ 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"):
# Cheetah writes this in place of the close time, see #1901
warnings.warn("Text header does not contain recording closed time. File was not closed properly.")
else:
self["recording_closed"] = dateutil.parser.parse(f"{dt2['date']} {dt2['time']}")

def _normalize_types(self):
"""
Expand Down
12 changes: 12 additions & 0 deletions neo/test/rawiotest/test_neuralynxrawio.py
Original file line number Diff line number Diff line change
Expand Up @@ -563,5 +563,17 @@ 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)
with self.assertWarnsRegex(UserWarning, "File was not closed properly"):
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()
Loading