Skip to content

Commit cb8a066

Browse files
committed
Warning when pspm_load1 ignores NaNs in condition statistics
1 parent 50f4d8a commit cb8a066

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

‎src/pspm_load1.m‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,18 @@
269269
else
270270
for iCond = 1:numel(indata.(mdltype).condnames)
271271
condindx = strcmpi(indata.(mdltype).condnames{iCond}, indata.(mdltype).trlnames);
272+
273+
cond_stats = indata.(mdltype).stats(condindx, :);
274+
nan_rows = find(any(isnan(cond_stats), 2));
275+
276+
if ~isempty(nan_rows)
277+
warning('ID:invalid_condition_values', ['Condition ''%s'' in first-level model ''%s'' contains %d row(s) with NaN values. ', 'NaN values were omitted when computing condition statistics.'], ...
278+
indata.(mdltype).condnames{iCond}, ...
279+
indata.(mdltype).modelfile, ...
280+
numel(nan_rows));
281+
end
282+
283+
272284
data.stats(iCond, :) = mean(indata.(mdltype).stats(condindx, :), 1, 'omitnan');
273285
end
274286
data.names = indata.(mdltype).names;

‎test/pspm_load1_test.m‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,19 @@ function test_action_con(this)
267267
end
268268
end
269269
end
270+
function test_action_cond_invalid_values(this)
271+
model.modelfile = 'test.mat';
272+
model.modeltype = 'dcm';
273+
model.modality = 'scr';
274+
model.stats = [1 2; NaN 4; 3 4];
275+
model.names = {'parameter 1', 'parameter 2'};
276+
model.trlnames = {'CS+', 'CS+', 'CS-'};
277+
278+
[sts, data] = this.verifyWarning( @() pspm_load1(model, 'cond'), 'ID:invalid_condition_values');
279+
280+
this.verifyEqual(sts, 1);
281+
this.verifyEqual(data.stats, [1 3; 3 4]);
282+
end
270283
function test_action_all(this)
271284
for i=1:numel(this.modelfiles)
272285
f = this.modelfiles{i};

0 commit comments

Comments
 (0)