From 0e42d97a31d9a5702b174a000c094481db8aff1a Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 12 Dec 2025 19:34:29 +0000 Subject: [PATCH] Add MightHaveTimeGaps property to ndr.reader.base and ndr.reader - Added `MightHaveTimeGaps` property to `ndr.reader.base` (default false). - Added `MightHaveTimeGaps` method to `ndr.reader` wrapper. - Set `MightHaveTimeGaps = true` in `ndr.reader.axon_abf` constructor. - Added unit test `tools/tests/+ndr/+unittest/+reader/TestMightHaveTimeGaps.m`. --- +ndr/+reader/axon_abf.m | 1 + +ndr/+reader/base.m | 4 ++++ +ndr/reader.m | 12 ++++++++++ .../+unittest/+reader/TestMightHaveTimeGaps.m | 23 +++++++++++++++++++ 4 files changed, 40 insertions(+) create mode 100644 tools/tests/+ndr/+unittest/+reader/TestMightHaveTimeGaps.m diff --git a/+ndr/+reader/axon_abf.m b/+ndr/+reader/axon_abf.m index c1442e1..03ddeb6 100755 --- a/+ndr/+reader/axon_abf.m +++ b/+ndr/+reader/axon_abf.m @@ -21,6 +21,7 @@ % Creates a Neuroscience Data Reader object of the Axon Instruments % ABF file format. % + axon_abf_obj.MightHaveTimeGaps = true; end % ndr.reader.axon_abf.axon_abf function ec = epochclock(axon_abf_obj, epochstreams, epoch_select) diff --git a/+ndr/+reader/base.m b/+ndr/+reader/base.m index 1a00411..ef2a3db 100644 --- a/+ndr/+reader/base.m +++ b/+ndr/+reader/base.m @@ -1,5 +1,9 @@ classdef base + properties (SetAccess=protected) + MightHaveTimeGaps = false; % Boolean: true if the reader might have time gaps, false otherwise + end + methods function ndr_reader_base_obj = base(ndr_reader_type) % READER - create a new Neuroscience Data Reader Base object diff --git a/+ndr/reader.m b/+ndr/reader.m index 6028da4..e86e694 100644 --- a/+ndr/reader.m +++ b/+ndr/reader.m @@ -476,6 +476,18 @@ s = ndr_reader_obj.ndr_reader_base.times2samples(channeltype, channel, epochstreams, epoch_select, t); end % times2samples() + function b = MightHaveTimeGaps(ndr_reader_obj) + %MIGHTHAVETIMEGAPS - does the reader potentially have time gaps? + % + % B = MIGHTHAVETIMEGAPS(NDR_READER_OBJ) + % + % Returns true if the underlying reader might have time gaps, false otherwise. + % + % See also: ndr.reader.base/MightHaveTimeGaps + % + b = ndr_reader_obj.ndr_reader_base.MightHaveTimeGaps; + end % MightHaveTimeGaps() + end % methods end % classdef diff --git a/tools/tests/+ndr/+unittest/+reader/TestMightHaveTimeGaps.m b/tools/tests/+ndr/+unittest/+reader/TestMightHaveTimeGaps.m new file mode 100644 index 0000000..d1a5d8f --- /dev/null +++ b/tools/tests/+ndr/+unittest/+reader/TestMightHaveTimeGaps.m @@ -0,0 +1,23 @@ +classdef TestMightHaveTimeGaps < matlab.unittest.TestCase + methods (Test) + function testBaseProperty(testCase) + baseReader = ndr.reader.base(); + testCase.verifyFalse(baseReader.MightHaveTimeGaps); + end + + function testAxonAbfProperty(testCase) + axonReader = ndr.reader.axon_abf(); + testCase.verifyTrue(axonReader.MightHaveTimeGaps); + end + + function testReaderDelegation(testCase) + % 'abf' maps to ndr.reader.axon_abf + r_abf = ndr.reader('abf'); + testCase.verifyTrue(r_abf.MightHaveTimeGaps()); + + % 'intan' maps to ndr.reader.intan_rhd, which should inherit false + r_intan = ndr.reader('intan'); + testCase.verifyFalse(r_intan.MightHaveTimeGaps()); + end + end +end