Skip to content

Commit

Permalink
Commiting starting of sc2
Browse files Browse the repository at this point in the history
  • Loading branch information
hmogensen committed Feb 23, 2018
1 parent b486106 commit 85eabbc
Show file tree
Hide file tree
Showing 21 changed files with 527 additions and 92 deletions.
18 changes: 18 additions & 0 deletions sc/experiment/classes/@ScFile/get_triggables.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
function triggable = get_triggables(obj)

triggable = {};

for i=1:obj.signals.n

signal = obj.signals.get(i);

if signal.waveforms.n > 0
triggable = add_to_list(triggable, signal);
end

end

triggable = concat_list(triggable, obj.stims.cell_list);
triggable = concat_list(triggable, obj.textchannels.cell_list);

end
3 changes: 2 additions & 1 deletion sc/experiment/classes/@ScSignal/ScSignal.m
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
classdef ScSignal < ScChannel & ScDynamicClass & sc_experiment.EmptyClassPlaceholder
classdef ScSignal < ScChannel & ScDynamicClass & sc_experiment.EmptyClassPlaceholder & ...
sc_experiment.Triggable

methods (Static)
empty_class = make_empty_class()
Expand Down
5 changes: 5 additions & 0 deletions sc/experiment/classes/@ScSignal/get_tags.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
function val = get_tags(obj)

val = obj.waveforms.values('tag');

end
55 changes: 46 additions & 9 deletions sc/experiment/classes/ScStim.m
Original file line number Diff line number Diff line change
@@ -1,51 +1,88 @@
classdef ScStim < ScChannel

classdef ScStim < ScChannel & sc_experiment.Triggable
properties

triggers
istrigger

end

methods

function obj = ScStim(parent, channelname,varargin)

obj.parent = parent;
obj.channelname = channelname;
obj.istrigger = false;

for k=1:2:numel(varargin)
obj.(varargin{k}) = varargin{k+1};
end

end



function sc_loadtimes(obj)

obj.triggers = ScList();

if isempty(who('-file',obj.parent.filepath,obj.channelname))

fprintf('Warning: Could not find channel %s in file %s\n',obj.channelname,obj.parent.filepath);
return

end
d = load(obj.parent.filepath,obj.channelname);

d = load(obj.parent.filepath, obj.channelname);
times = d.(obj.channelname).times;

if isfield(d.(obj.channelname),'codes')

codes = d.(obj.channelname).codes;
uniquecodes = unique(codes,'rows');

for i=1:size(uniquecodes,1)

rows = all(codes == repmat(uniquecodes(i,:),size(codes,1),1),2);
tag = num2str(uniquecodes(i,:));
pos = isspace(tag);
tag = tag(~pos);
obj.triggers.add(ScSpikeTrain(tag,times(rows)));
obj.triggers.add(ScSpikeTrain(tag, times(rows)));

end

else
obj.triggers.add(ScSpikeTrain(obj.tag,times))

obj.triggers.add(ScSpikeTrain(obj.tag, times))

end

end



function sc_clear(obj)

obj.triggers = ScList;

end



function val = get_tags(obj)

val = obj.triggers.values('tag');

end

end

methods (Static)

function obj = loadobj(a)

obj = loadobj@ScChannel(a);

end

end

end
39 changes: 37 additions & 2 deletions sc/experiment/classes/ScTextMark.m
Original file line number Diff line number Diff line change
@@ -1,55 +1,90 @@
classdef ScTextMark < ScChannel & ScTriggerParent

methods

function obj = ScTextMark(parent, channelname,varargin)
obj.parent = parent;

obj.parent = parent;
obj.channelname = channelname;
obj.triggers = ScList;
obj.triggers = ScList;

for k=1:2:numel(varargin)
obj.(varargin{k}) = varargin{k+1};
end

end


%Load digital channel values
function sc_loadtimes(obj)

obj.triggers = ScList;

if isempty(who('-file',obj.parent.filepath,obj.channelname))

fprintf('Warning: Could not find channel %s in file %s\n',obj.channelname,obj.parent.filepath);
return

end

d = load(obj.parent.filepath,obj.channelname);

if isfield(d.(obj.channelname),'text')

times = d.(obj.channelname).times;
text = d.(obj.channelname).text;
cellstr = cell(size(times));

for i=1:numel(cellstr)
cellstr(i) = {deblank(text(i,:))};
end

tags = unique(cellstr);
obj.triggers = ScList;

for i=1:numel(tags)

pos = cellfun(@(x) strcmp(x,tags{i}), cellstr);
tagtimes = times(pos);

if obj.parent.stims.has('tag','DigMark')

trigger = obj.parent.stims.get('tag','DigMark').triggers.get('tag','1000');

if isempty(trigger)
continue
end

digmarktimes = obj.parent.stims.get('tag','DigMark').triggers.get('tag','1000').gettimes(-inf,inf);

for j=1:numel(tagtimes)

[~,ind] = min(abs(tagtimes(j)-digmarktimes));
tagtimes(j) = digmarktimes(ind);

end

end

obj.triggers.add(ScSpikeTrain(tags{i},tagtimes));

end

end

end


function val = get_tags(obj)

val = obj.triggers.values('tag');

end

end

methods (Static)

function obj = loadobj(a)
obj = loadobj@ScChannel(a);
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ function plot_amplitude(obj)

start = intra_get_amplitude_pseudo_start(amplitude);
stop = intra_get_amplitude_pseudo_stop(amplitude, obj.gui.main_channel.v);
is_pseudo = intra_is_amplitude_data_pseudo(amplitude);
is_pseudo = ~amplitude.valid_data;
rise = intra_get_amplitude_pseudo_rise(start, stop, is_pseudo, ...
amplitude, obj.gui.main_channel.v);
middle = intra_get_middle_index(rise, .1);
Expand Down
7 changes: 7 additions & 0 deletions sc2/+sc_experiment/Triggable.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
classdef Triggable < handle

methods (Abstract)
varargout = get_tags(varargin)
end

end
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,13 @@ function signal1_callback(obj)
function signal2_callback(obj)

indx = get(obj.ui_signal2, 'Value');
obj.viewer.set_signal2(obj.viewer.file.signals.get(indx));
signals = obj.viewer.file.signals;

if indx <= length(signals)
obj.viewer.set_signal2(signals(indx));
else
obj.viewer.set_signal2([]);
end

end

Expand Down Expand Up @@ -175,7 +181,9 @@ function file_listener(obj)
end

else

set(obj.ui_file, 'Visible', 'off');

end

end
Expand Down Expand Up @@ -226,20 +234,17 @@ function signal1_listener(obj)

function signal2_listener(obj)

if ~isempty(obj.viewer.signal2)
str = obj.viewer.file.signals.values('tag');
str = add_to_list(str, '#none');

str = obj.viewer.file.signals.values('tag');
indx = find(@(x) strcmp(x, obj.viewer.signal2.tag), str);
if ~isempty(obj.viewer.signal2)

if ~isempty(indx)
set(obj.ui_signal2, 'String', str, 'Value', indx, 'Visible', 'on');
else
set(obj.ui_signal2, 'Visible', 'off');
end
indx = find(@(x) strcmp(x, obj.viewer.signal2.tag), str);
set(obj.ui_signal2, 'String', str, 'Value', indx, 'Visible', 'on');

else

set(obj.ui_signal2, 'Visible', 'off');
set(obj.ui_signal2, 'String', str, 'Value', length(str), 'Visible', 'on');

end

Expand Down
Loading

0 comments on commit 85eabbc

Please sign in to comment.