Unverified Commit 5171011a authored by David Boas's avatar David Boas Committed by GitHub
Browse files

Merge 2d and 3d positions (#35)

* initial changes to add 2D option to classes and otherwise use 3D position

* added exist('opton','var')

* fixed typoes in previous commit

* Update hmrR_PruneChannels.m

removed reset option since it was not used

* Update NirsClass.m

added the option into GetSDG, GetSrcPos, and GetDetPos to be consistent with other classes even though it is not used in this class
parent 578a8a59
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -22,13 +22,13 @@ classdef AcqDataClass < matlab.mixin.Copyable
        datamat   = GetDataTimeSeries(obj, options, iBlk)
        
        % ---------------------------------------------------------
        SD        = GetSDG(obj)
        SD        = GetSDG(obj,option)

        % ---------------------------------------------------------
        srcpos    = GetSrcPos(obj)
        srcpos    = GetSrcPos(obj,option)

        % ---------------------------------------------------------
        detpos    = GetDetPos(obj)
        detpos    = GetDetPos(obj,option)
        
        % ---------------------------------------------------------
        ml        = GetMeasList(obj, iBlk)
@@ -106,7 +106,7 @@ classdef AcqDataClass < matlab.mixin.Copyable
        
        % ---------------------------------------------------------
        function bbox = GetSdgBbox(obj)
            optpos = [obj.GetSrcPos(); obj.GetDetPos()];
            optpos = [obj.GetSrcPos('2D'); obj.GetDetPos('2D')];
            
            xmax = max(optpos(:,1));
            ymax = max(optpos(:,2));
+3 −3
Original line number Diff line number Diff line
@@ -439,7 +439,7 @@ classdef NirsClass < AcqDataClass & FileLoadSaveClass
               
        
        % ---------------------------------------------------------
        function SD = GetSDG(obj)
        function SD = GetSDG(obj, option)
            SD = obj.SD;
        end
        
@@ -498,13 +498,13 @@ classdef NirsClass < AcqDataClass & FileLoadSaveClass
                
        
        % ---------------------------------------------------------
        function srcpos = GetSrcPos(obj)
        function srcpos = GetSrcPos(obj,option)
            srcpos = obj.SD.SrcPos;
        end
        
        
        % ---------------------------------------------------------
        function detpos = GetDetPos(obj)
        function detpos = GetDetPos(obj,option)
            detpos = obj.SD.DetPos;
        end
        
+45 −8
Original line number Diff line number Diff line
@@ -35,8 +35,8 @@ classdef ProbeClass < FileLoadSaveClass
                    obj.wavelengthsEmission  = [];
                    obj.sourcePos2D  = SD.SrcPos;
                    obj.detectorPos2D  = SD.DetPos;
                    obj.sourcePos3D  = [];
                    obj.detectorPos3D  = [];
                    obj.sourcePos3D  = SD.SrcPos;
                    obj.detectorPos3D  = SD.DetPos;
                    obj.frequencies  = 1;
                    obj.timeDelays  = 0;
                    obj.timeDelayWidths  = 0;
@@ -137,8 +137,8 @@ classdef ProbeClass < FileLoadSaveClass
                obj.sourcePos2D               = HDF5_DatasetLoad(gid, 'sourcePos2D', [], '2D');
                obj.detectorPos2D             = HDF5_DatasetLoad(gid, 'detectorPos2D', [], '2D');
                obj.landmarkPos2D             = HDF5_DatasetLoad(gid, 'landmarkPos2D', [], '2D');
                obj.sourcePos3D               = HDF5_DatasetLoad(gid, 'sourcePos3D', [], '2D');
                obj.detectorPos3D             = HDF5_DatasetLoad(gid, 'detectorPos3D', [], '2D');
                obj.sourcePos3D               = HDF5_DatasetLoad(gid, 'sourcePos3D', [], '3D');
                obj.detectorPos3D             = HDF5_DatasetLoad(gid, 'detectorPos3D', [], '3D');
                obj.frequencies               = HDF5_DatasetLoad(gid, 'frequencies');
                obj.timeDelays                 = HDF5_DatasetLoad(gid, 'timeDelays');
                obj.timeDelayWidths            = HDF5_DatasetLoad(gid, 'timeDelayWidths');
@@ -163,6 +163,21 @@ classdef ProbeClass < FileLoadSaveClass
            % SNIRF data to Homer3 compatible structure
            obj.ForwardCompatibility();
            
            % for Homer3 usage, add 3D positions if they are empty
            if isempty(obj.sourcePos3D)
                obj.sourcePos3D = obj.sourcePos2D;
                if size(obj.sourcePos3D,2)<3
                    obj.sourcePos3D(:,3) = 0;
                end
            end
            
            if isempty(obj.detectorPos3D)
                obj.detectorPos3D = obj.detectorPos2D;
                if size(obj.detectorPos3D,2)<3
                    obj.detectorPos3D(:,3) = 0;
                end
            end
            
        end

        
@@ -189,6 +204,8 @@ classdef ProbeClass < FileLoadSaveClass
            hdf5write_safe(fileobj, [location, '/wavelengthsEmission'], obj.wavelengthsEmission);
            hdf5write_safe(fileobj, [location, '/sourcePos2D'], obj.sourcePos2D(:,1:2), 'rw:2D');
            hdf5write_safe(fileobj, [location, '/detectorPos2D'], obj.detectorPos2D(:,1:2), 'rw:2D');
            hdf5write_safe(fileobj, [location, '/sourcePos3D'], obj.sourcePos3D, 'rw:3D');
            hdf5write_safe(fileobj, [location, '/detectorPos3D'], obj.detectorPos3D, 'rw:3D');
            hdf5write_safe(fileobj, [location, '/frequencies'], obj.frequencies);
            hdf5write_safe(fileobj, [location, '/timeDelays'], obj.timeDelays);
            hdf5write_safe(fileobj, [location, '/timeDelayWidths'], obj.timeDelayWidths);
@@ -209,15 +226,29 @@ classdef ProbeClass < FileLoadSaveClass
        
        
        % ---------------------------------------------------------
        function srcpos = GetSrcPos(obj)
        function srcpos = GetSrcPos(obj,flag2d)
            if ~exist('flag2d','var')
                flag2d = 0;
            end
            if flag2d==0
                srcpos = obj.sourcePos3D;
            else
                srcpos = obj.sourcePos2D;
            end                
        end
        
        
        % ---------------------------------------------------------
        function detpos = GetDetPos(obj)
        function detpos = GetDetPos(obj,flag2d)
            if ~exist('flag2d','var')
                flag2d = 0;
            end
            if flag2d==0
                detpos = obj.detectorPos3D;
            else
                detpos = obj.detectorPos2D;
            end                
        end
        
        
        % -------------------------------------------------------
@@ -248,6 +279,12 @@ classdef ProbeClass < FileLoadSaveClass
            if ~all(obj.detectorPos2D(:)==obj2.detectorPos2D(:))
                return;
            end
            if ~all(obj.sourcePos3D(:)==obj2.sourcePos3D(:))
                return;
            end
            if ~all(obj.detectorPos3D(:)==obj2.detectorPos3D(:))
                return;
            end
            if ~all(obj.frequencies(:)==obj2.frequencies(:))
                return;
            end
+29 −11
Original line number Diff line number Diff line
@@ -1020,7 +1020,7 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
        
        
        % ---------------------------------------------------------
        function SD = GetSDG(obj)
        function SD = GetSDG(obj,option)
            SD = [];
            if isempty(obj)
                return;
@@ -1029,21 +1029,34 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
                return;
            end
            SD.Lambda = obj.probe.GetWls();
            if exist('option','var')
                SD.SrcPos = obj.probe.GetSrcPos(option);
                SD.DetPos = obj.probe.GetDetPos(option);
            else
                SD.SrcPos = obj.probe.GetSrcPos();
                SD.DetPos = obj.probe.GetDetPos();
            end
        end
        
        
        % ---------------------------------------------------------
        function srcpos = GetSrcPos(obj)
        function srcpos = GetSrcPos(obj,option)
            if exist('option','var')
                srcpos = obj.probe.GetSrcPos(option);
            else
                srcpos = obj.probe.GetSrcPos();
            end
        end
        
        
        % ---------------------------------------------------------
        function detpos = GetDetPos(obj)
        function detpos = GetDetPos(obj,option)
            if exist('option','var')
                detpos = obj.probe.GetDetPos(option);
            else
                detpos = obj.probe.GetDetPos();
            end
        end
        
        
        % ----------------------------------------------------------------------------------
@@ -1128,7 +1141,7 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
        
        
        % ----------------------------------------------------------------------------------
        function SD = Get_SD(obj, iBlk)
        function SD = Get_SD(obj, iBlk, option)
            SD = [];
            if isempty(obj.probe)
                return;
@@ -1140,8 +1153,13 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
                return;
            end
            SD.Lambda   = obj.probe.GetWls();
            if exist('option','var')
                SD.SrcPos   = obj.probe.GetSrcPos(option);
                SD.DetPos   = obj.probe.GetDetPos(option);
            else
                SD.SrcPos   = obj.probe.GetSrcPos();
                SD.DetPos   = obj.probe.GetDetPos();
            end
            SD.MeasList = obj.data(iBlk).GetMeasList();
            SD.MeasListAct = ones(size(SD.MeasList,1),1);
        end
@@ -1435,7 +1453,7 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
            % Load probe and extract .nirs-style SD structure
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            fprintf('    Probe (.nirs-style display):\n');
            SD = obj.GetSDG();
            SD = obj.GetSDG('2D');
            pretty_print_struct(SD, 8, 1);
            fprintf('\n');
            
+6 −2
Original line number Diff line number Diff line
@@ -746,9 +746,13 @@ classdef GroupClass < TreeNodeClass
        
        
        % ----------------------------------------------------------------------------------
        function SD = GetSDG(obj)
        function SD = GetSDG(obj,option)
            if exist('option','var')
                SD = obj.subjs(1).GetSDG(option);
            else
                SD = obj.subjs(1).GetSDG();
            end
        end
        
        
        % ----------------------------------------------------------------------------------
Loading