Commit c118c689 authored by jayd1860's avatar jayd1860
Browse files

v1.48.1

-- Fix typo in hmrR_MotionCorrectWavelet.m causing matlab-generated exception
-- More fixes in user functions hmrR_MotionArtifactByChannel.m and hmrR_MotionCorrectCbsi.m of inactive channels mlAct
-- Added another performance enhancer in DataClass.GetDataTimeSeries() to speed up retrieval of measurement list and thus data time series. Added cache for measurement list matrix to avoid recalculating it.
parent ab0fe489
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -6,6 +6,9 @@ classdef DataClass < FileLoadSaveClass
        measurementList
    end
    
    properties
        cache
    end
    
    methods
        
@@ -46,6 +49,7 @@ classdef DataClass < FileLoadSaveClass
            
            % Set SNIRF fomat properties
            obj.measurementList = MeasListClass().empty();
            obj.cache = struct('measurementListMatrix',[]);
            
            if nargin==0
                return;
@@ -387,13 +391,20 @@ classdef DataClass < FileLoadSaveClass
        
        % ---------------------------------------------------------
        function ml = GetMeasurementList(obj, option)
            ml = [];
            if ~exist('option','var')
                option = '';
            end            
            hbTypes         = {'hbo','hbr','hbt'};
            if isempty(option)
                ml = obj.measurementList;
            elseif strcmp(option,'matrix')                
            elseif strncmp(option,'matrix',length('matrix'))
                if ~isempty(obj.cache) && ~isempty(obj.cache.measurementListMatrix)
                    if strcmp(option,'matrix')
                        ml = obj.cache.measurementListMatrix;
                        return
                    end
                end
                ml = zeros(length(obj.measurementList),4);
                for ii = 1:length(obj.measurementList)
                    k = 0;
@@ -409,6 +420,9 @@ classdef DataClass < FileLoadSaveClass
                        ml(ii,:) = [obj.measurementList(ii).sourceIndex, obj.measurementList(ii).detectorIndex, obj.measurementList(ii).dataTypeIndex, k];                        
                    end
                end
                
                % Cache the results to avoid recalculating 
                obj.cache.measurementListMatrix = ml;
            end
        end
        
+5 −10
Original line number Diff line number Diff line
@@ -94,7 +94,7 @@ for iBlk = 1:length(data)
    d           = data(iBlk).GetDataTimeSeries();
    fs          = data(iBlk).GetTime();
    MeasList    = data(iBlk).GetMeasList();
    Lambda      = probe.GetWls();
    nDataTypes  = unique(MeasList(:,4));
    
    if length(fs)~=1
        fs = 1/(fs(2)-fs(1));
@@ -103,7 +103,6 @@ for iBlk = 1:length(data)
    if isempty(tIncMan{iBlk})
        tIncMan{iBlk} = ones(size(d,1),1);
    end    
    
    tInc{iBlk}   = ones(size(d,1),1);
    tIncCh{iBlk} = ones(size(d,1), size(MeasList,1));
    
@@ -111,17 +110,13 @@ for iBlk = 1:length(data)
    mlActAuto{iBlk} = mlAct_Initialize(mlActAuto{iBlk}, MeasList);
    MeasListAct = mlActMan{iBlk}(:,3) & mlActAuto{iBlk}(:,3);
    
    % Calculate the diff of d to to set the threshold if ncssesary
       
    % set artifact buffer for tMask seconds on each side of spike
    art_buffer = round(tMask*fs); % time in seconds times sample rate
    
    % get list of active channels
    %lstAct = find(MeasListAct==1);
    lstAct = zeros(size(MeasList,1),1);
    nLambda = length(Lambda);
    lst1 = find(MeasList(:,4)==1);
    for ii = 1:nLambda
    for ii = 1:nDataTypes
        for jj = 1:length(lst1)
            lst(jj) = find(MeasList(:,1)==MeasList(lst1(jj),1) & ...
                           MeasList(:,2)==MeasList(lst1(jj),2) & ...
+7 −12
Original line number Diff line number Diff line
@@ -51,14 +51,9 @@ for iBlk=1:length(data_dc)
    dc = data_dc(iBlk).GetDataTimeSeries('reshape');
    ml = data_dc(iBlk).GetMeasListSrcDetPairs('reshape');
        
    dc = reshape(dc, size(dc,1), 3, size(dc,2)/3);
    mlActAuto{iBlk} = mlAct_Initialize(mlActAuto{iBlk}, ml);
    lstAct          = mlAct_Matrix2IndexList(mlActAuto{iBlk}, ml);
    
    if isempty(mlActAuto{iBlk})
        mlActAuto{iBlk} = ones(size(ml,1),1);
    end    
    mlAct = mlActAuto{iBlk};

    lstAct = find(mlAct(1:size(ml,1))==1);
    dcCbsi = dc;
    
    for ii = 1:length(lstAct)
+4 −4
Original line number Diff line number Diff line
@@ -62,11 +62,11 @@ if isempty(mlActAuto)
    mlActAuto = cell(length(data_dod),1);
end

for kk=1:length(data_dod)
for iBlk = 1:length(data_dod)

    dod         = data_dod(kk).GetDataTimeSeries();
    dod         = data_dod(iBlk).GetDataTimeSeries();
    dodWavelet  = dod;
    MeasList    = data_dod(kk).GetMeasList();   
    MeasList    = data_dod(iBlk).GetMeasList();   
    
    mlActMan{iBlk} = mlAct_Initialize(mlActMan{iBlk}, MeasList);
    mlActAuto{iBlk} = mlAct_Initialize(mlActAuto{iBlk}, MeasList);
@@ -109,7 +109,7 @@ for kk=1:length(data_dod)
        
        dodWavelet(:,idx_ch) = ARSignal(1:length(dod));
    end
    data_dod(kk).SetDataTimeSeries(dodWavelet);
    data_dod(iBlk).SetDataTimeSeries(dodWavelet);
    
end

+1 −1
Original line number Diff line number Diff line
1.48.0
1.48.1