Commit 293f98d2 authored by jayd1860's avatar jayd1860
Browse files

v1.32.3

-- Fix some issues with not havoing correct path to derived data and acquired data in exe build
parent cc591fe5
Loading
Loading
Loading
Loading
+5 −30
Original line number Diff line number Diff line
@@ -276,28 +276,6 @@ classdef GroupClass < TreeNodeClass

        
        
        % ----------------------------------------------------------------------------------
        function SetPath(obj, dirname)
            obj.path = dirname;
            
            % In case there's not enough disk space in the current
            % group folder, we have a alternative path that can be 
            % set independently for saving group results. By default 
            % it is set to root group folder. 
            obj.pathOutputAlt = obj.path;
        end
        
        
        % ----------------------------------------------------------------------------------
        function SetPathOutput(obj, dirname)
            % In case there's not enough disk space in the current
            % group folder, we have a alternative path that can be 
            % set independently for saving group results. By default 
            % it is set to root group folder. 
            obj.pathOutputAlt = dirname;
        end
        
        
        % ----------------------------------------------------------------------------------
        function Add(obj, subj, run)                        
            [~,f,e] = fileparts(subj.GetName());
@@ -319,6 +297,7 @@ classdef GroupClass < TreeNodeClass
            if jj==0
                jj = length(obj.subjs)+1;
                subj.SetIndexID(obj.iGroup, jj);
                subj.SetPath(obj.path);                      % Inherit root path from group
                obj.subjs(jj) = subj;
                obj.logger.Write(sprintf('   Added subject %s to group %s.\n', obj.subjs(jj).GetName, obj.GetName));
            end
@@ -486,11 +465,7 @@ classdef GroupClass < TreeNodeClass
                obj.LoadVars(s(iSubj), tHRF_common); 
            end
            
            % Make variables in this group available to processing stream input
            obj.procStream.input.LoadVars(obj.outputVars);

            % Calculate processing stream
            obj.procStream.Calc(obj.GetOutputFilename());
            Calc@TreeNodeClass(obj);
            
            if obj.DEBUG
                obj.logger.Write(sprintf('Completed processing stream for group %d\n', obj.iGroup));
@@ -508,11 +483,11 @@ classdef GroupClass < TreeNodeClass
        
        % ----------------------------------------------------------------------------------
        function Print(obj, indent)
            obj.logger.Write(sprintf('\n'));
            if ~exist('indent', 'var')
                indent = 0;
            end
            obj.logger.Write(sprintf('%s%s,  output file: %s\n', blanks(indent), obj.name, obj.procStream.output.SetFilename(obj.GetOutputFilename())));
            % obj.procStream.Print(indent);
            Print@TreeNodeClass(obj, indent);
            for ii = 1:length(obj.subjs)
                obj.subjs(ii).Print(indent);
            end
+1 −1
Original line number Diff line number Diff line
@@ -170,7 +170,7 @@ classdef ProcResultClass < handle
                return;
            end
            [pname, fname] = fileparts(filename);
            options = 'nameonly';
            options = 'nameonly:dir';
            if ispathvalid(fname)
                % Case 1: Flat group dir structure                
                if ispathvalid([filename, '.mat'])
+9 −16
Original line number Diff line number Diff line
@@ -26,13 +26,12 @@ classdef RunClass < TreeNodeClass
                obj.name  = '';
                return;
            end    
            dirname = './';
            if isa(varargin{1}, 'RunClass')
                obj.Copy(varargin{1});
                return;
            elseif isa(varargin{1}, 'FileClass')
                dirname = varargin{1}.pathfull;
                [~, ~, obj.name] = varargin{1}.ExtractNames();
                obj.path         = varargin{1}.GetFilesPath();  % Fix wrong root path 
            elseif ischar(varargin{1}) && strcmp(varargin{1},'copy')
                return;
            elseif ischar(varargin{1}) 
@@ -135,10 +134,10 @@ classdef RunClass < TreeNodeClass
            end
            
            % Unload derived data 
            obj.procStream.FreeMemory(obj.GetOutputFilename());
            obj.procStream.FreeMemory([obj.path, obj.GetOutputFilename()]);

            % Unload acquired data 
            obj.acquired.FreeMemory(obj.GetFilename());
            obj.acquired.FreeMemory([obj.path, obj.GetFilename()]);
        end
        
        
@@ -301,16 +300,11 @@ classdef RunClass < TreeNodeClass
            args = obj.procStream.GetInputArgs();

            % b) Find these variables in this run
            vars = [];
            for ii = 1:length(args)
                eval( sprintf('vars.%s = obj.GetVar(args{ii});', args{ii}) );
                eval( sprintf('obj.outputVars.%s = obj.GetVar(args{ii});', args{ii}) );
            end
            
            % c) Load the needed variables to proc stream input
            obj.procStream.input.LoadVars(vars);

            % Calculate processing stream
            obj.procStream.Calc(obj.GetOutputFilename());
            Calc@TreeNodeClass(obj);

            if obj.DEBUG
                obj.logger.Write(sprintf('Completed processing stream for group %d, subject %d, run %d\n', obj.iGroup, obj.iSubj, obj.iRun));
@@ -324,10 +318,9 @@ classdef RunClass < TreeNodeClass
            if ~exist('indent', 'var')
                indent = 4;
            else
                indent = indent+2;
                indent = indent+4;
            end
            obj.logger.Write(sprintf('%s%s,  output file: %s\n', blanks(indent), obj.name, obj.procStream.output.SetFilename(obj.GetOutputFilename())));
            % obj.procStream.Print(indent);
            Print@TreeNodeClass(obj, indent);
        end
        
    end    % Public methods
@@ -866,7 +859,7 @@ classdef RunClass < TreeNodeClass
        % ----------------------------------------------------------------------------------
        function b = HaveOutput(obj)
            b1 = ~obj.procStream.output.IsEmpty();
            fname = obj.procStream.output.SetFilename(obj.GetOutputFilename());
            fname = obj.procStream.output.SetFilename([obj.path, obj.GetOutputFilename()]);
            b2 = false;
            if ispathvalid(fname)
                r = load(fname);
+6 −12
Original line number Diff line number Diff line
@@ -184,6 +184,7 @@ classdef SubjClass < TreeNodeClass
            if jj==0
                jj = length(obj.runs)+1;
                run.SetIndexID(obj.iGroup, obj.iSubj, jj);
                run.SetPath(obj.path);                      % Inherit root path from subject
                obj.runs(jj) = run;
                obj.logger.Write(sprintf('     Added run %s to subject %s.\n', obj.runs(jj).GetFileName, obj.GetName));
            end
@@ -333,12 +334,7 @@ classdef SubjClass < TreeNodeClass
                obj.LoadVars(r(iRun), tHRF_common);
            end
                        
            
            % Make variables in this subject available to processing stream input
            obj.procStream.input.LoadVars(obj.outputVars);

            % Calculate processing stream
            obj.procStream.Calc(obj.GetOutputFilename());
            Calc@TreeNodeClass(obj);

            if obj.DEBUG
                fprintf('Completed processing stream for group %d, subject %d\n', obj.iGroup, obj.iSubj);
@@ -349,7 +345,6 @@ classdef SubjClass < TreeNodeClass
            if ~isempty(obj.updateParentGui)
                obj.updateParentGui('DataTreeClass', [obj.iGroup, obj.iSubj, obj.iRun]);
            end
            pause(.5);
            
        end
                
@@ -357,12 +352,11 @@ classdef SubjClass < TreeNodeClass
        % ----------------------------------------------------------------------------------
        function Print(obj, indent)
            if ~exist('indent', 'var')
                indent = 2;
                indent = 4;
            else
                indent = indent+2;
                indent = indent+4;
            end
            obj.logger.Write(sprintf('%s%s,  output file: %s\n', blanks(indent), obj.name, obj.procStream.output.SetFilename(obj.GetOutputFilename())));
            % obj.procStream.Print(indent);
            Print@TreeNodeClass(obj, indent);
            for ii=1:length(obj.runs)
                obj.runs(ii).Print(indent);
            end
+50 −10
Original line number Diff line number Diff line
@@ -143,16 +143,18 @@ classdef TreeNodeClass < handle
        % obj2 to obj
        % ----------------------------------------------------------------------------------
        function Copy(obj, obj2, conditional)
            if ~isempty(obj2.procStream)
                obj.procStream.Copy(obj2.procStream, obj.GetOutputFilename);
            end
            if nargin==2 || strcmp(conditional, 'unconditional')
                obj.name = obj2.name;
                obj.path = obj2.path;
                obj.outputDirname = obj2.outputDirname;
                obj.type = obj2.type;
                obj.iGroup = obj2.iGroup;
                obj.iSubj = obj2.iSubj;
                obj.iRun = obj2.iRun;
            end
            if ~isempty(obj2.procStream)
                obj.procStream.Copy(obj2.procStream, [obj.path, obj.GetOutputFilename()]);
            end
        end
        
        
@@ -202,6 +204,28 @@ classdef TreeNodeClass < handle
        end
        
        
        % ----------------------------------------------------------------------------------
        function SetPath(obj, dirname)
            obj.path = dirname;
            
            % In case there's not enough disk space in the current
            % group folder, we have a alternative path that can be 
            % set independently for saving group results. By default 
            % it is set to root group folder. 
            obj.pathOutputAlt = obj.path;
        end
        
        
        % ----------------------------------------------------------------------------------
        function SetPathOutput(obj, dirname)
            % In case there's not enough disk space in the current
            % group folder, we have a alternative path that can be 
            % set independently for saving group results. By default 
            % it is set to root group folder. 
            obj.pathOutputAlt = dirname;
        end
        
        
        % ----------------------------------------------------------------------------------
        function SetProcFlag(obj)
            if obj.procStream.output.IsEmpty()
@@ -651,6 +675,16 @@ classdef TreeNodeClass < handle
        end
        
        
        % ----------------------------------------------------------------------------------
        function Calc(obj)            
            % Make variables in this subject available to processing stream input
            obj.procStream.input.LoadVars(obj.outputVars);

            % Calculate processing stream
            obj.procStream.Calc([obj.path, obj.GetOutputFilename()]);
        end
        
        
        % ----------------------------------------------------------------------------------
        function FreeMemory(obj)
            if isempty(obj)
@@ -701,8 +735,8 @@ classdef TreeNodeClass < handle
            if ~exist('options','var')
                options = '';
            end
            filename = obj.SaveMemorySpace(obj.name);
            if isempty(filename)
            filename0 = obj.SaveMemorySpace(obj.name);
            if isempty(filename0)
                return;
            end
            if optionExists(options, 'legacy')
@@ -710,7 +744,7 @@ classdef TreeNodeClass < handle
            else
                outputDirname = obj.outputDirname;
            end
            [p, f] = fileparts([outputDirname, filename]);
            [p, f] = fileparts([outputDirname, filename0]);
            filename = [filesepStandard(p, 'nameonly:dir'), f];            
        end
        
@@ -782,7 +816,13 @@ classdef TreeNodeClass < handle
        % ------------------------------------------------------------
        function val = GetError(obj)
            val = obj.err;            
        end

        
        
        % ------------------------------------------------------------
        function Print(obj, indent)
            obj.logger.Write(sprintf('%s%s\n', blanks(indent), [obj.path, obj.procStream.output.SetFilename(obj.GetOutputFilename())] ));
        end

        
@@ -792,8 +832,8 @@ classdef TreeNodeClass < handle
            if ~ispathvalid([obj.path, obj.outputDirname])
                mkdir([obj.path, obj.outputDirname])
            end
            src = obj.procStream.output.SetFilename(obj.GetOutputFilename('legacy'));
            dst = obj.procStream.output.SetFilename(obj.GetOutputFilename());
            src = obj.procStream.output.SetFilename([obj.path, obj.GetOutputFilename('legacy')]);
            dst = obj.procStream.output.SetFilename([obj.path, obj.GetOutputFilename()]);
            if ispathvalid(src)
                if ~pathscompare(src, dst)
                    obj.logger.Write(sprintf('Moving %s to %s\n', src, dst));
Loading