help > MION HRF implementation for NHP task-based functional connectivity.
3 hours ago | Brent Stewart
MION HRF implementation for NHP task-based functional connectivity.

Hi. I'm using CONN to analyze task-based functional connectivity from macaque scans that used MION contrast agent. I believe I got it to work, but I hope people more familiar with the inner workings of CONN could provide feedback on if my methods are sound.

I used modified spm_hrf code to implement the MION HRF, which produces the desired MION-HRF-convolved condition time series (for use as confounds during denoising). However, the MION HRF is a negative deflection, so after conn_process.m produces HRF-convolved condition time series, all temporal weights assigned to conditions would be negative, meaning no data points would be included in analyses because CONN only looks for positive temporal weights.

1) I therefore edited conn_process.m to look for negative weights:

From line 600:

% BOLD HRF
% idx1=find(x>0); idx2=[0;find(diff(idx1)>1);length(idx1)]; % crop to within-condition samples
% MION HRF
idx1=find(x<0); idx2=[0;find(diff(idx1)>1);length(idx1)]; % crop to within-condition samples

2) And I inverted the MION HRF-convolved time series when temporal weights variables are defined:

From (new) line 622, see the additional "*-1" in uncommented lines:

% BOLD HRF
% tweights{1}=cat(1,tweights{1},x(idx(:)));                       % HRF  %.*xw(idx(:)))
% tweights{2}=cat(1,tweights{2},conn_hanning(length(idx)));       % HANNING %.*xw(idx(:)));
% tweights{3}=cat(1,tweights{3},xw(idx(:)));                      % HRF.*MODUL (note: this option is now obsolete; tbd)
% tweights{4}=cat(1,tweights{4},idx(:));                          % IDX
% tweights{5}=cat(1,tweights{5},(1:numel(idx))');                 % JDX
% MION HRF
tweights{1}=cat(1,tweights{1},(x(idx(:))*-1));                    % HRF  %.*xw(idx(:)))
tweights{2}=cat(1,tweights{2},conn_hanning(length(idx)));         % HANNING %.*xw(idx(:)));
tweights{3}=cat(1,tweights{3},(xw(idx(:))*-1));                   % HRF.*MODUL (note: this option is now obsolete; tbd)
tweights{4}=cat(1,tweights{4},idx(:));                            % IDX
tweights{5}=cat(1,tweights{5},(1:numel(idx))');                   % JDX

This appears to have worked, but any feedback on potential errors or unintended consequences from this protocol would be greatly appreciated!