Commit 7051cf78 authored by Jay's avatar Jay
Browse files

v1.19.4

-- Coded a working skeleton version of hmrR_tCCA.m. It generates dummy data and illustrates how to write the help section for the function registry, pass arguments and extract data from SNIRF variables.
-- Added a demo_tcca to demonstrate how the function can be used in processing stream calculation.
parent 1752244e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -537,7 +537,7 @@ classdef DataClass < FileLoadSaveClass
        
        
        % ---------------------------------------------------------
        function AppendD(obj, y)
        function AppendDataTimeSeries(obj, y)
            obj.dataTimeSeries(:, end+1:end+size(y(:,:),2)) = y(:,:);
        end
        
+22 −0
Original line number Diff line number Diff line
function demo_tcca()

% Set the various paths
rootpath = filesepStandard(fileparts(which('Homer3.m')));
currpath = pwd;
subjFolder = 'UnitTests/Example6_GrpTap';
subjFolder = [rootpath, subjFolder];
procStreamConfigFile = './processOpt_tcca.cfg';   % proc stream config file path relative to subject folder
cd(subjFolder);
resetGroupFolder('', 'registry_keep');

fprintf('Loading subject folder:  %s\n', subjFolder);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Change processing stream param values to newval
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dataTree = LoadDataTree(subjFolder, [], procStreamConfigFile);
iG = dataTree.GetCurrElemIndexID();
dataTree.groups(iG).Calc();
dataTree.groups(iG).Save();

cd(currpath)
 No newline at end of file
+20 −6
Original line number Diff line number Diff line
@@ -56,6 +56,8 @@
% rhoSD_ssThresh: 15.0
% runIdxResting: 1
%
function [Aaux, rcMap] = hmrR_tCCA(data, aux, probe, runIdx, flagtCCA, flagICRegressors, tCCAparams, tCCAaux_inx, rhoSD_ssThresh, runIdxResting)

%% COMMENTS/THOUGHTS/QUESTIONS ALEX
% 2) Output canonical correlation coefficients as quality metric? 
% 3) Output fNIRS signal(s)/Aux regressors for visualization/quality control?
@@ -63,8 +65,6 @@
% 5) Implement the variable low/bandpass filter coefficients from previous processing stream !!!
%%

function [Aaux, rcMap] = hmrR_tCCA(data, aux, probe, runIdx, flagtCCA, flagICRegressors, tCCAparams, tCCAaux_inx, rhoSD_ssThresh, runIdxResting)

%% flags and tCCA settings
flags.pcaf =  [0 0]; % no pca of X or AUX
% flags.shrink = true; % perform shrinkage in the CCA
@@ -186,16 +186,18 @@ if flagtCCA
                % set channel-regressor map to empty (GLM will use all available regressors for all channels)
                rcMap{iBlk} = [];
            end
            fprintf('hmrR_tCCA: run idx = %d. Generated and saving tCCAfilter\n', runIdx)
            fprintf('hmrR_tCCA: run idx = %d. Generated and Saved tCCAfilter\n', runIdx)
            print_filter(tCCAfilter);
            save(filterFilename, '-ascii', 'tCCAfilter');
            
        elseif exist(filterFilename,'file')
            
            %% if the tCCAfilter variable exists, apply the filtering and generate the tCCA regressors
            fprintf('hmrR_tCCA: run idx = %d. loading and using tCCAfilter\n', runIdx)
            
            fprintf('hmrR_tCCA: run idx = %d. Loading and Using tCCAfilter\n', runIdx)
            % Load the filter for the iBlk data block
            tCCAfilter = load(filterFilename,'-ascii');
            print_filter(tCCAfilter);
            
            
            % Temporal embedding and zscoring of auxiliary data
            aux_sigs = AUX;
@@ -231,3 +233,15 @@ if flagtCCA
    end
end




% -----------------------------------------------------------
function print_filter(tCCAfilter)
if exist('pretty_print_matrix.m','file')
    pretty_print_matrix(tCCAfilter, 0, '%0.1f')
else
    fprintf('%d ', tCCAfilter);
    fprintf('\n')
end
+20 −0
Original line number Diff line number Diff line
% Homer3 (v1.19.3)

% group
@ hmrG_SubjAvg [dcAvg,nTrials] (dcAvgSubjs,nTrialsSubjs
@ hmrG_SubjAvgStd dcAvgStd (dcAvgSubjs


% subj
@ hmrS_RunAvg [dcAvg,nTrials] (dcAvgRuns,mlActRuns,nTrialsRuns 
@ hmrS_RunAvgStd2 dcAvgStd (dcAvgRuns,dcSum2Runs,mlActRuns,nTrialsRuns 


% run
@ hmrR_Intensity2OD dod (data
@ hmrR_BandpassFilt dod (dod hpf %0.3f 0.01 lpf %0.3f 0.5
@ hmrR_OD2Conc_new dc (dod,probe ppf %0.1f_%0.1f 1_1
@ hmrR_tCCA [Aaux,rcMap] (dc,aux,probe,iRun flagtCCA %d 1 flagICRegressors %d 0 tCCAparams %d_%d_%0.1f 3_2_0.3 tCCAaux_inx %d_%d_%d_%d_%d_%d_%d_%d 1_2_3_4_5_6_7_8 rhoSD_ssThresh %0.1f 15 runIdxResting %d 1
@ hmrR_BlockAvg [dcAvg,dcAvgStd,nTrials,dcSum2] (dc,stim trange %0.1f_%0.1f -2_20

+1 −1
Original line number Diff line number Diff line
@@ -2,5 +2,5 @@ function vrnnum = getVernum()

vrnnum{1} = '1';   % Major version #
vrnnum{2} = '19';  % Major sub-version #
vrnnum{3} = '3';   % Minor version #
vrnnum{3} = '4';   % Minor version #
vrnnum{4} = '0';   % Minor sub-version # or patch #: 'p1', 'p2', etc