Skip to content

Commit 50f4d8a

Browse files
committed
Warn on unestimated DCM trials and update tests
1 parent 8429fea commit 50f4d8a

2 files changed

Lines changed: 30 additions & 4 deletions

File tree

‎src/pspm_dcm.m‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -748,8 +748,18 @@
748748
end
749749
% set disabled trials to NaN (trials during missing data stretches or
750750
% that are too close to session end)
751-
dcm.stats(cTrl + find(trls(:, 1) == 0), :) = NaN;
751+
disabled_trials = find(trls(:, 1) == 0);
752+
dcm.stats(cTrl + disabled_trials, :) = NaN;
753+
754+
if ~isempty(disabled_trials)
755+
warning('ID:inestimable_trials', ['%d trial(s) in data file ''%s'' could not be estimated ' 'and were set to NaN. Trial indices: %s'], ...
756+
numel(disabled_trials), ...
757+
model.datafile{iSn}, ...
758+
mat2str(disabled_trials(:)'));
759+
[warnings{end+1, 2}, warnings{end+1, 1}] = lastwarn;
760+
end
752761
cTrl = cTrl + size(trls, 1);
762+
753763
end
754764
dcm.names = {};
755765
for iEvnt = 1:numel(dcm.sn{1}.a(1).a)

‎test/pspm_dcm_test.m‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,12 @@ function test_hra1_flex_cs(this)
146146
'trlnames', {trialnames},...
147147
'eventnames', {eventnames} ...
148148
);
149-
this.verifyWarningFree(@() pspm_dcm(model, options));
149+
this.verifyWarning( @() pspm_dcm(model, options), 'ID:inestimable_trials');
150+
result = load(fn, 'dcm');
151+
nan_trials = find(all(isnan(result.dcm.stats), 2));
152+
this.verifyEqual(nan_trials, 5);
153+
this.verifyTrue(any(strcmp( result.dcm.warnings(:, 1), 'ID:inestimable_trials')));
154+
150155
end
151156
end
152157
function test_hra1_flex_cs_missing(this)
@@ -168,7 +173,13 @@ function test_hra1_flex_cs_missing(this)
168173
'trlnames', {trialnames},...
169174
'eventnames', {eventnames} ...
170175
);
171-
this.verifyWarningFree(@() pspm_dcm(model, options));
176+
177+
this.verifyWarning( @() pspm_dcm(model, options), 'ID:inestimable_trials');
178+
result = load(fn, 'dcm');
179+
nan_trials = find(all(isnan(result.dcm.stats), 2));
180+
this.verifyEqual(nan_trials, [1; 2; 3; 5]);
181+
this.verifyTrue(any(strcmp( result.dcm.warnings(:, 1), 'ID:inestimable_trials')));
182+
172183
end
173184
end
174185
function test_hra1_flex_cs_nan(this)
@@ -189,7 +200,12 @@ function test_hra1_flex_cs_nan(this)
189200
'trlnames', {trialnames},...
190201
'eventnames', {eventnames} ...
191202
);
192-
this.verifyWarningFree(@() pspm_dcm(model, options));
203+
this.verifyWarning( @() pspm_dcm(model, options), 'ID:inestimable_trials');
204+
result = load(fn, 'dcm');
205+
nan_trials = find(all(isnan(result.dcm.stats), 2));
206+
this.verifyEqual(nan_trials, 5);
207+
this.verifyTrue(any(strcmp( result.dcm.warnings(:, 1), 'ID:inestimable_trials')));
208+
193209
end
194210
end
195211
function [timing, eventnames, trialnames] = ...

0 commit comments

Comments
 (0)