From 3c7d0f3bb8b575afc539202fbd8767565f88be2b Mon Sep 17 00:00:00 2001 From: Ryan Harvey Date: Mon, 6 Apr 2026 12:22:13 -0400 Subject: [PATCH 1/2] force dtype of epoch times to float64 --- loadData/load_epoch.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/loadData/load_epoch.m b/loadData/load_epoch.m index 57b5abb..ec64399 100644 --- a/loadData/load_epoch.m +++ b/loadData/load_epoch.m @@ -22,8 +22,9 @@ for ep = 1:length(session.epochs) name{ep, 1} = session.epochs{ep}.name; - startTime(ep, 1) = session.epochs{ep}.startTime; - stopTime(ep, 1) = session.epochs{ep}.stopTime; + % force to double in case time is different type + startTime(ep, 1) = double(session.epochs{ep}.startTime); + stopTime(ep, 1) = double(session.epochs{ep}.stopTime); if isfield(session.epochs{ep}, 'environment') environment{ep, 1} = session.epochs{ep}.environment; @@ -61,4 +62,4 @@ epochs = table(name, startTime, stopTime, environment, behavioralParadigm, ... manipulation, stimuli, notes, basepath); -end \ No newline at end of file +end From 367e171ca0bcbbb456d1783e35e9e74b0a080b63 Mon Sep 17 00:00:00 2001 From: Ryan Harvey Date: Mon, 6 Apr 2026 12:28:56 -0400 Subject: [PATCH 2/2] Create test_load_epoch.m --- test/test_load_epoch.m | 63 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 test/test_load_epoch.m diff --git a/test/test_load_epoch.m b/test/test_load_epoch.m new file mode 100644 index 0000000..8dee683 --- /dev/null +++ b/test/test_load_epoch.m @@ -0,0 +1,63 @@ +function tests = test_load_epoch +tests = functiontests(localfunctions); +end + +function test_basic_epoch_loading(testCase) + +% Create temporary directory +basepath = tempname; +mkdir(basepath); + +% Use real basename convention +[~, basename] = fileparts(basepath); + +% Create fake session struct +session.epochs = {; ... + struct( ... + 'name', 'sleep', ... + 'startTime', int32(0), ... + 'stopTime', int32(100), ... + 'environment', 'home', ... + 'behavioralParadigm', 'none', ... + 'manipulation', 'none', ... + 'stimuli', 'none', ... + 'notes', 'baseline' ... + ), ... + struct( ... + 'name', 'run', ... + 'startTime', single(100), ... + 'stopTime', single(200) ... + ); ... + }; + +% Save session file with correct basename +save(fullfile(basepath, [basename, '.session.mat']), 'session'); + +% Run function +epochs = load_epoch('basepath', basepath); + +% ---- Assertions ---- + +verifyEqual(testCase, height(epochs), 2); + +verifyEqual(testCase, epochs.name{1}, 'sleep'); +verifyEqual(testCase, epochs.name{2}, 'run'); + +verifyClass(testCase, epochs.startTime, 'double'); +verifyClass(testCase, epochs.stopTime, 'double'); + +verifyEqual(testCase, epochs.startTime(1), 0); +verifyEqual(testCase, epochs.stopTime(2), 200); + +verifyEqual(testCase, epochs.environment{1}, 'home'); +verifyEqual(testCase, epochs.environment{2}, ''); + +verifyEqual(testCase, epochs.behavioralParadigm{2}, ''); +verifyEqual(testCase, epochs.manipulation{2}, ''); +verifyEqual(testCase, epochs.stimuli{2}, ''); +verifyEqual(testCase, epochs.notes{2}, ''); + +verifyEqual(testCase, epochs.basepath{1}, basepath); +verifyEqual(testCase, epochs.basepath{2}, basepath); + +end