Commit dfc8110d authored by jayd1860's avatar jayd1860
Browse files

v1.17.1

-- Improve slow performance in DisplayAxesSDG and clean up and comment on code. Issue seen by Natalie Gilmore in the 05_SF_STDEVTHRESH_Homer3 data set.
-- Get rid of unnecessary copying of runs' dc and dod time courses which will never be used at the subject level in SubjClass.Calc() method
parent 5118a730
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -89,8 +89,8 @@ classdef AcqDataClass < matlab.mixin.Copyable
                height = 1;
            end
            
            px = width * 0.10; 
            py = height * 0.10; 
            px = width * 0.05; 
            py = height * 0.05; 

            bbox = [xmin-px, xmax+px, ymin-py, ymax+py];
        end
+0 −2
Original line number Diff line number Diff line
@@ -202,8 +202,6 @@ classdef SubjClass < TreeNodeClass
            % procStream.Calc() to calculate proc stream for this subject
            vars = [];
            for iRun = 1:nRun
                vars.dcRuns{iRun}        = r(iRun).procStream.output.GetVar('dc');
                vars.dodRuns{iRun}       = r(iRun).procStream.output.GetVar('dod');
                vars.dodAvgRuns{iRun}    = r(iRun).procStream.output.GetVar('dodAvg');
                vars.dodAvgStdRuns{iRun} = r(iRun).procStream.output.GetVar('dodAvgStd');
                vars.dodSum2Runs{iRun}   = r(iRun).procStream.output.GetVar('dodSum2');
+58 −61
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@
function DisplayAxesSDG(hAxes)
global maingui

tic;

% This function plots the prove geometry
% Command line call:
% plotAxes_SDG(guidata(gcbo),bool);
@@ -58,18 +60,20 @@ if ~ishandles(hAxes)
    return;
end
axes(hAxes);
cla
if ishandles(maingui.axesSDG.handles.ch)
    delete(maingui.axesSDG.handles.ch)
end
axis(hAxes, [bbox(1), bbox(2), bbox(3), bbox(4)]);
set(gca, 'xticklabel','')
set(gca, 'yticklabel','')
set(gca, 'ygrid','off')
%set(hAxes, 'xticklabel','', 'yticklabel','', 'xgrid','off, ygrid','off')
set(hAxes, 'xticklabel','')
bttndownfcn = get(hAxes,'ButtonDownFcn');
gridsize = get(hAxes, {'xlim', 'ylim', 'zlim'});
edgecol = 'none';
if ismac() || islinux()
	fs = 18;
else
	fs = 11;
end
hold on;

% Go through all the data blocks and plot the channels in each block   
nSrcs       = size(SD.SrcPos,1);
@@ -77,11 +81,11 @@ nDets = size(SD.DetPos,1);

% get mlActAuto from procResult if it exists and replace ch.MeasListActMan 
% [iDataBlks, iCh] = maingui.dataTree.currElem.GetDataBlocksIdxs(iCh);
nDataBlks = maingui.dataTree.currElem.GetDataBlocksNum();
MeasList = [];
MeasListActMan = [];
MeasListActAuto = [];
MeasListVis = [];
nDataBlks = maingui.dataTree.currElem.GetDataBlocksNum();
for iBlk = 1:nDataBlks   
    ch              = maingui.dataTree.currElem.GetMeasList(iBlk);
    MeasList        = [MeasList; ch.MeasList];
@@ -89,86 +93,79 @@ for iBlk = 1:nDataBlks
    MeasListActAuto = [MeasListActAuto; ch.MeasListActAuto];
    MeasListVis     = [MeasListVis; ch.MeasListVis];
end
    
lst   = find(MeasList(:,1)>0);
ml    = MeasList(lst,:);
ml    = MeasList(MeasList(:,1)>0,:);
lstML = find(ml(:,4)==1); %cw6info.displayLambda);
lst2 = find(MeasListActMan(1:length(lstML))==0);
for ii=1:length(lst2)
    h = line2(SD.SrcPos(ml(lstML(lst2(ii)),1),:), SD.DetPos(ml(lstML(lst2(ii)),2),:));
    set(h, 'color',[1 .85 .85]*1);
    set(h, 'linewidth',6);
    set(h, 'ButtonDownFcn',get(hAxes,'ButtonDownFcn'));
end

lst2 = find(MeasListActMan(1:length(lstML))==1);
for ii=1:length(lst2)
    h = line2(SD.SrcPos(ml(lstML(lst2(ii)),1),:), SD.DetPos(ml(lstML(lst2(ii)),2),:));
    set(h, 'color',[1 1 1]*.85);
    set(h, 'linewidth',4);
    set(h, 'ButtonDownFcn',get(hAxes,'ButtonDownFcn'));
end

lst2 = find(MeasListActAuto(1:length(lstML))==0);
for ii=1:length(lst2)
    h = line2(SD.SrcPos(ml(lstML(lst2(ii)),1),:), SD.DetPos(ml(lstML(lst2(ii)),2),:));
    set(h, 'color',[1 1 .85]*1);
    set(h, 'linewidth',6);
    set(h, 'ButtonDownFcn',get(hAxes,'ButtonDownFcn'));
end


% DRAW PLOT LINES
% THESE LINES HAVE TO BE THE LAST
% ITEMS ADDED TO THE AXES
% FOR CHANNEL TOGGLING TO WORK WITH
% cw6_sdgToggleLines()
lwidth = 3;
lstIncl = find(MeasListActMan(1:length(lstML))==1);
lstExclMan = find(MeasListActMan(1:length(lstML))==0);
lstExclAuto = find(MeasListActAuto(1:length(lstML))==0);
hCh = zeros(length(lstML),1);

% Draw all channels
for ii = 1:length(lstML)
    hCh(ii) = line2(SD.SrcPos(ml(lstML(ii),1),:), SD.DetPos(ml(lstML(ii),2),:), [], gridsize);
    if     ismember(ii, lstIncl)
        % Draw included channel
        col = [1.00 1.00 1.00] * 0.85;
    elseif ismember(ii,lstExclMan)
        % Draw manually excluded channel
        col = [1.00 0.85 0.85] * 1.00;
    elseif ismember(ii,lstExclAuto)
        % Draw auto-excluded channel
        col = [1.00 1.00 0.85] * 1.00;
    end        
    set(hCh(ii), 'color',col, 'linewidth',lwidth, 'ButtonDownFcn',bttndownfcn);
end

% Draw the user-selected channels
if ~isempty(iSrcDet) && iSrcDet(1,1)~=0
    lst2 = [];
    lst2 = zeros(1,length(iCh));
    lst3 = find(MeasList(:,4)==1);
    for ii=1:length(iCh)
        lst2(ii) = find(MeasList(lst3,1)==MeasList(iCh(ii),1) & MeasList(lst3,2)==MeasList(iCh(ii),2) );
    end
    iCh2 = lst2;
    
    for idx=size(iSrcDet,1):-1:1
        h = line2(SD.SrcPos(iSrcDet(idx,1),:), SD.DetPos(iSrcDet(idx,2),:));
        set(h,'color',color(idx,:));
        set(h,'ButtonDownFcn',sprintf('toggleLinesAxesSDG_ButtonDownFcn(gcbo,[%d],guidata(gcbo))',idx));
        set(h,'linewidth',2);
        if ~isempty(iCh) && ...
                (~MeasListActMan(iCh2(idx)) & ~MeasListVis(iCh2(idx)))
            set(h,'linewidth',2);
            set(h,'linestyle','-.');
    for idx = 1:size(iSrcDet,1)
        hCh(idx+ii) = line2(SD.SrcPos(iSrcDet(idx,1),:), SD.DetPos(iSrcDet(idx,2),:), [], gridsize);
        set(hCh(idx+ii),'color',color(idx,:), 'ButtonDownFcn',sprintf('toggleLinesAxesSDG_ButtonDownFcn(gcbo,[%d],guidata(gcbo))',idx), 'linewidth',2);
        if ~isempty(iCh) && (~MeasListActMan(iCh2(idx)) & ~MeasListVis(iCh2(idx)))
            set(hCh(idx+ii),'linewidth',2, 'linestyle','-.');
        else
            if ~isempty(iCh) && ~MeasListActMan(iCh2(idx))
                set(h,'linewidth',2);
                set(h,'linestyle','--');
                set(hCh(idx+ii),'linewidth',2, 'linestyle','--');
            end
            if ~isempty(iCh) && ~MeasListVis(iCh2(idx))
                set(h,'linewidth',1);
                set(h,'linestyle',':');
                set(hCh(idx+ii),'linewidth',1, 'linestyle',':');
            end
        end
    end
end
maingui.axesSDG.handles.ch = hCh(hCh>0);


% ADD SOURCE AND DETECTOR LABELS
for idx=1:nSrcs
    if ~isempty(find(MeasList(:,1)==idx))
        h = text( SD.SrcPos(idx,1), SD.SrcPos(idx,2), sprintf('%d', idx), 'fontsize',fs, 'fontweight','bold', 'color','r' );
        set(h, 'ButtonDownFcn',get(hAxes,'ButtonDownFcn'), 'horizontalalignment','center', 'edgecolor',edgecol);
hSD = zeros(nSrcs+nDets,1);
if isempty(maingui.axesSDG.handles.SD)
    for idx1 = 1:nSrcs
        if ~isempty(find(MeasList(:,1)==idx1)) %#ok<*EFIND>
            hSD(idx1) = text( SD.SrcPos(idx1,1), SD.SrcPos(idx1,2), sprintf('%d', idx1), 'fontsize',fs, 'fontweight','bold', 'color','r' );
            set(hSD(idx1), 'ButtonDownFcn',get(hAxes,'ButtonDownFcn'), 'horizontalalignment','center', 'edgecolor',edgecol);
        end
    end
    for idx2 = 1:nDets
        if ~isempty(find(MeasList(:,2)==idx2))
            hSD(idx2+idx1) = text( SD.DetPos(idx2,1), SD.DetPos(idx2,2), sprintf('%d', idx2), 'fontsize',fs, 'fontweight','bold', 'color','b' );
            set(hSD(idx2+idx1), 'ButtonDownFcn',get(hAxes,'ButtonDownFcn'), 'horizontalalignment','center', 'edgecolor',edgecol);
        end
for idx=1:nDets
    if ~isempty(find(MeasList(:,2)==idx))
        h = text( SD.DetPos(idx,1), SD.DetPos(idx,2), sprintf('%d', idx), 'fontsize',fs, 'fontweight','bold', 'color','b' );
        set(h, 'ButtonDownFcn',get(hAxes,'ButtonDownFcn'), 'horizontalalignment','center', 'edgecolor',edgecol);
    end
    maingui.axesSDG.handles.SD = hSD;
else
    uistack(maingui.axesSDG.handles.SD,'top')
end

% Turn off zoom but only for SDG axes
h=zoom;
setAllowAxesZoom(h, hAxes, 0);

fprintf('DisplayAxesSDG: Elapsed Time - %0.3f\n', toc);
+3 −1
Original line number Diff line number Diff line
@@ -2,7 +2,9 @@ function axesSDG = InitAxesSDG(handles)

axesSDG = struct(...
                 'handles', struct(...
                                   'axes', handles.axesSDG ...
                                   'axes', handles.axesSDG, ...
                                   'SD', [], ...
                                   'ch', [] ...
                                  ), ...
                 'iCh', [], ...
                 'iSrcDet', [], ...
+1 −1
Original line number Diff line number Diff line
@@ -2,5 +2,5 @@ function vrnnum = getVernum()

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