Unverified Commit 3a11afd5 authored by stephen scott tucker's avatar stephen scott tucker Committed by GitHub
Browse files

Stim interface, StimEditGUI changes (#55)

* prevented ArgClass Extract from indexing into empty list

* FuncCallClass GetInputs and GetOutputs convenience function for returning strings

* GetProcInputs method returns all properties of ProcInputClass for use with proc stream checking

* Processing stream is only run if Check returns zero, else an error msg is raised

* Changed uses of properties to propnames in ProcInputClass GetProcInputs

* Added removal and addition of stim data columns and interface in StimEditGUI; added dialog box for setting amp, duration, and values for new stims

* Added rename column interface

* GUI updates: column interface changed, rename condition moved to menubar -> tools

* Tooltip to manual edit, exit condition for value entry prompt

* Generate filters with butter interface, error checking

* Logic to prevent button presses when no conditions are present

* Removed rename cond and add/delete/rename column GUI options because they result in undefined behavior
parent 5e70a527
Loading
Loading
Loading
Loading
+33 −7
Original line number Diff line number Diff line
@@ -1276,17 +1276,18 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
    methods
        
        % ----------------------------------------------------------------------------------
        function AddStims(obj, tPts, condition)
        function AddStims(obj, tPts, condition, duration, amp, more)
            % Try to find existing condition to which to add stims.
            for ii=1:length(obj.stim)
                if strcmp(condition, obj.stim(ii).GetName())
                    obj.stim(ii).AddStims(tPts);
                    obj.stim(ii).AddStims(tPts, duration, amp, more);
                    return;
                end
            end
            
            % Otherwise we have a new condition to which to add the stims.
            obj.stim(end+1) = StimClass(tPts, condition);
            obj.stim(end+1) = StimClass(condition);
            obj.stim(end).AddStims(tPts, duration, amp, more);
            obj.SortStims();
        end
        
@@ -1309,6 +1310,31 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
        end
        
        
        % ----------------------------------------------------------------------------------
        function AddStimColumn(obj, name, initValue)
            for i=1:length(obj.stim)
                obj.stim(i).AddStimColumn(name, initValue);
            end
        end

        
        % ----------------------------------------------------------------------------------
        function DeleteStimColumn(obj, idx)
            for i=1:length(obj.stim)
                obj.stim(i).DeleteStimColumn(idx);
            end
        end
        
        % ----------------------------------------------------------------------------------
        function RenameStimColumn(obj, oldname, newname)
            if ~exist('oldname', 'var') || ~exist('newname', 'var')
                return;
            end
            for i=1:length(obj.stim)
                obj.stim(i).RenameStimColumn(oldname, newname);
            end
        end
        
        % ----------------------------------------------------------------------------------
        function MoveStims(obj, tPts, condition)
            if ~exist('tPts','var') || isempty(tPts)
@@ -1392,8 +1418,8 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
        
        
        % ----------------------------------------------------------------------------------
        function SetStimDuration(obj, icond, duration)
            obj.stim(icond).SetDuration(duration);
        function SetStimDuration(obj, icond, duration, tpts)
            obj.stim(icond).SetDuration(duration, tpts);
        end
        
        
@@ -1408,8 +1434,8 @@ classdef SnirfClass < AcqDataClass & FileLoadSaveClass
        
        
        % ----------------------------------------------------------------------------------
        function SetStimAmplitudes(obj, icond, amps)
            obj.stim(icond).SetAmplitudes(amps);
        function SetStimAmplitudes(obj, icond, amps, tpts)
            obj.stim(icond).SetAmplitudes(amps, tpts);
        end
        
        
+52 −1
Original line number Diff line number Diff line
@@ -192,7 +192,16 @@ classdef StimClass < FileLoadSaveClass
        function Copy(obj, obj2)
            obj.name = obj2.name;
            obj.data = obj2.data;
            if isempty(obj2.dataLabels)
                obj.dataLabels = {'Onset', 'Duration', 'Amplitude'};
                if length(obj.dataLabels) < size(obj.data, 2)
                    for i = 1:length(obj.dataLabels) - 3
                       obj.dataLabels{end + 1} = ''; 
                    end
                end
            else
                obj.dataLabels = obj2.dataLabels;
            end
            obj.states = obj2.states;
        end
        
@@ -564,6 +573,48 @@ classdef StimClass < FileLoadSaveClass
        
        
        
        % ----------------------------------------------------------------------------------
        function AddStimColumn(obj, name, initValue)
            if ~exist('name', 'var')
               name = ''; 
            end
            if ~exist('initValue', 'var')
               initValue = 0; 
            end
            obj.dataLabels{end + 1} = name;
            obj.data(:, end + 1) = initValue * ones(size(obj.data, 1), 1);
        end

        
        
        % ----------------------------------------------------------------------------------
        function DeleteStimColumn(obj, idx)
            if ~exist('idx', 'var') || idx <= size(obj.data, 2) - 3
                return;
            else
                obj.data(:, idx) = [];
                if length(obj.dataLabels) >= idx
                   obj.dataLabels(idx) = []; 
                end
            end
        end
        
        
        
        % ----------------------------------------------------------------------------------
        function RenameStimColumn(obj, oldname, newname)
            if ~exist('oldname', 'var') || ~exist('newname', 'var')
                return;
            end
            for i = 1:length(obj.dataLabels)
                if strcmp(oldname, obj.dataLabels{i})
                   obj.dataLabels{i} = newname;
                end
            end
        end
        
        
        
        % ----------------------------------------------------------------------------------
        function b = IsEmpty(obj)
            b = true;
+31 −6
Original line number Diff line number Diff line
@@ -287,14 +287,14 @@ classdef ProcInputClass < handle
        
        
        % ----------------------------------------------------------------------------------
        function AddStims(obj, tPts, condition)
        function AddStims(obj, tPts, condition, duration, amp, more)
            if isempty(tPts)
                return;
            end
            if isempty(condition)
                return;
            end
            obj.acquired.AddStims(tPts, condition);
            obj.acquired.AddStims(tPts, condition, duration, amp, more);
        end

        
@@ -334,6 +334,31 @@ classdef ProcInputClass < handle
        end
        
        
        % ----------------------------------------------------------------------------------
        function AddStimColumn(obj, name, initValue)
            if ~exist('name', 'var')
                return;
            end
            obj.acquired.AddStimColumn(name, initValue);
        end

        
        % ----------------------------------------------------------------------------------
        function DeleteStimColumn(obj, idx)
            if ~exist('idx', 'var') || idx <= 3
                return;
            end
            obj.acquired.DeleteStimColumn(idx);
        end
        
        % ----------------------------------------------------------------------------------
        function RenameStimColumn(obj, oldname, newname)
            if ~exist('oldname', 'var') || ~exist('newname', 'var')
                return;
            end
            obj.acquired.RenameStimColumn(oldname, newname);
        end
        
        % ----------------------------------------------------------------------------------
        function data = GetStimData(obj, icond)
            data = obj.acquired.GetStimData(icond);
@@ -362,8 +387,8 @@ classdef ProcInputClass < handle
        
        
        % ----------------------------------------------------------------------------------
        function SetStimDuration(obj, icond, duration)
            obj.acquired.SetStimDuration(icond, duration);
        function SetStimDuration(obj, icond, duration, tpts)
            obj.acquired.SetStimDuration(icond, duration, tpts);
        end
        
    
@@ -377,8 +402,8 @@ classdef ProcInputClass < handle
        
        
        % ----------------------------------------------------------------------------------
        function SetStimAmplitudes(obj, icond, vals)
            obj.acquired.SetStimAmplitudes(icond, vals);
        function SetStimAmplitudes(obj, icond, vals, tpts)
            obj.acquired.SetStimAmplitudes(icond, vals, tpts);
        end
        
    
+31 −6
Original line number Diff line number Diff line
@@ -1350,14 +1350,14 @@ classdef ProcStreamClass < handle
    methods
        
        % ----------------------------------------------------------------------------------
        function AddStims(obj, tPts, condition)
        function AddStims(obj, tPts, condition, duration, amp, more)
            if isempty(tPts)
                return;
            end
            if isempty(condition)
                return;
            end
            obj.input.AddStims(tPts, condition);
            obj.input.AddStims(tPts, condition, duration, amp, more);
        end

        
@@ -1397,6 +1397,31 @@ classdef ProcStreamClass < handle
        end
        
        
        % ----------------------------------------------------------------------------------
        function AddStimColumn(obj, name, initValue)
            if ~exist('name', 'var')
                return;
            end
            obj.input.AddStimColumn(name, initValue);
        end

        
        % ----------------------------------------------------------------------------------
        function DeleteStimColumn(obj, idx)
            if ~exist('idx', 'var') || idx <= 3
                return;
            end
            obj.input.DeleteStimColumn(idx);
        end
        
        % ----------------------------------------------------------------------------------
        function RenameStimColumn(obj, oldname, newname)
            if ~exist('oldname', 'var') || ~exist('newname', 'var')
                return;
            end
            obj.input.RenameStimColumn(oldname, newname);
        end
        
        % ----------------------------------------------------------------------------------
        function data = GetStimData(obj, icond)
            data = obj.input.GetStimData(icond);
@@ -1425,8 +1450,8 @@ classdef ProcStreamClass < handle
        
        
        % ----------------------------------------------------------------------------------
        function SetStimDuration(obj, icond, duration)
            obj.input.SetStimDuration(icond, duration);
        function SetStimDuration(obj, icond, duration, tpts)
            obj.input.SetStimDuration(icond, duration, tpts);
        end
        
    
@@ -1440,8 +1465,8 @@ classdef ProcStreamClass < handle
        
        
        % ----------------------------------------------------------------------------------
        function SetStimAmplitudes(obj, icond, vals)
            obj.input.SetStimAmplitudes(icond, vals);
        function SetStimAmplitudes(obj, icond, vals, tpts)
            obj.input.SetStimAmplitudes(icond, vals, tpts);
        end
        
    
+29 −6
Original line number Diff line number Diff line
@@ -593,14 +593,14 @@ classdef RunClass < TreeNodeClass
        
        
        % ----------------------------------------------------------------------------------
        function AddStims(obj, tPts, condition)
        function AddStims(obj, tPts, condition, duration, amp, more)
            if isempty(tPts)
                return;
            end
            if isempty(condition)
                return;
            end
            obj.procStream.AddStims(tPts, condition);
            obj.procStream.AddStims(tPts, condition, duration, amp, more);
        end

        
@@ -639,6 +639,29 @@ classdef RunClass < TreeNodeClass
            obj.procStream.MoveStims(tPts, condition);
        end
        
        % ----------------------------------------------------------------------------------
        function AddStimColumn(obj, name, initValue)
            if ~exist('name', 'var')
                return;
            end
            obj.procStream.AddStimColumn(name, initValue);
        end

        % ----------------------------------------------------------------------------------
        function DeleteStimColumn(obj, idx)
            if ~exist('idx', 'var') || idx <= 3
                return;
            end
            obj.procStream.DeleteStimColumn(idx);
        end
        
        % ----------------------------------------------------------------------------------
        function RenameStimColumn(obj, oldname, newname)
            if ~exist('oldname', 'var') || ~exist('newname', 'var')
                return;
            end
            obj.procStream.RenameStimColumn(oldname, newname);
        end
        
        % ----------------------------------------------------------------------------------
        function data = GetStimData(obj, icond)
@@ -668,8 +691,8 @@ classdef RunClass < TreeNodeClass
        
        
        % ----------------------------------------------------------------------------------
        function SetStimDuration(obj, icond, duration)
            obj.procStream.SetStimDuration(icond, duration);
        function SetStimDuration(obj, icond, duration, tpts)
            obj.procStream.SetStimDuration(icond, duration, tpts);
        end
        
    
@@ -683,8 +706,8 @@ classdef RunClass < TreeNodeClass
        
        
        % ----------------------------------------------------------------------------------
        function SetStimAmplitudes(obj, icond, vals)
            obj.procStream.SetStimAmplitudes(icond, vals);
        function SetStimAmplitudes(obj, icond, amps, tpts)
            obj.procStream.SetStimAmplitudes(icond, amps, tpts);
        end
        
    
Loading