How to create a structure array for spike data

10 visualizaciones (últimos 30 días)
Fran
Fran el 13 de Nov. de 2019
Comentada: 致远 马 el 17 de Feb. de 2023
Hi all
I am using the chronux package to generate some Intespike Interval histograms (ISIs) from neuon spiking data:
http://chronux.org/chronuxFiles/Documentation/chronux/spectral_analysis/pointtimes/isi.html#_top
The program requires that my spike times are given as a structure array but it seems I am not generating a "toy" structure array of spike trains succesfully.
I have the toy example attached (only the section commented as "APC" is my toy code, the rest is the chronux package attached here) which doesn't seem to work.
What is the error here and how can I feed the program with some structure arrays of spiking data as it requires?
thank you in advance.
function[N,B,E] = isi(data,T,err,Nbins,plt)
% Calculate the inter-spike-interval histogram
% Usage: [N,B,E] = isi(data,T,err,Nbins,plt)
%
% Input:
% Note that all times have to be consistent.
%
% data - structure array of spike times (required)
% T - time interval of interest (default all)
% err - 0 for no error bars, 1 for jackknife errors
%
% Nbins - number of bins in the isi
%
% Output:
%
% N - count in bins
% B - bin centres
% E - errorbar (this is 2 sig deviation
% calculated using a jackknife over trials)
% [filename directory_name] = uigetfile('spikeraster_temp.dat', 'home/alexandrapierri/Desktop');
% fullname = fullfile(directory_name, filename);
% spikes_1 = load(fullname);
% data = spikes_1(:,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%APC toy code, generate structure array of spiking data%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
field = 'first_neuron';
value = {'pyramidal cell';
[1, 2, 3, 4, 4.5, 4.8, 5, 5.6, 5.8, 6, 6.2, 6.4, 6.9, 7, 9, 10]};
s = struct(field,value);
data=s.first_neuron;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%APC toy code, generate structure array of spiking data%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if nargin < 1; error('I need data!'); end
data=padNaN(data); % create a zero padded data matrix from input structural array
data=data'; % transposes data to get it in a form compatible with Murray's routine
if nargin < 2; T = [min(data(:,1)) max(max(data))]; end
if nargin < 3; err = 0;end
if nargin < 4; Nbins = -1; end
if nargin < 5; plt = 'r'; end
if isempty(T); T = [min(min(data)) max(max(data))]; end
if isempty(err); err = 0;end
if isempty(Nbins); Nbins = -1; end
if isempty(plt); plt = 'r'; end
% get the number of intervals in each trial and the indices of spike times
% that are kept
NT = length(data(1,:)); % number of trials
NI=zeros(1,NT);
index(1:NT)=struct('keep',[]);
for n=1:NT
indx = find(data(:,n) >= T(1) & data(:,n) <= T(2) ...
& ~isnan(data(:,n)));
if isempty(indx)
NI(n) = 0;
else
NI(n) = length(indx)-1;
index(n).keep=indx;
end
end
% calculate intervals...
I = zeros(NT,max(NI));
IT = [];
for n=1:NT
I(n,1:NI(n)) = diff(data(index(n).keep,n));
IT = [IT I(n,1:NI(n))];
end
Mx = max(IT);
if Nbins == -1
Nbins = floor(sum(NI)/30);
Med = median(IT);
Nbins = max(floor(Nbins*Mx/Med),10);
end
B = linspace(0,Mx,Nbins);
N = zeros(NT,Nbins);
for n=1:NT
N(n,:) = hist(I(n,1:NI(n)),B);
end
% answer...
if NT > 1;Ns = sum(N)/NT;else Ns = N;end
if ~strcmp(plt,'n')
bar(B,NT*Ns);
end
% Jackknife iver trials to estimate std...
if NT > 4 && err == 1
MN = 0;
SN = 0;
for n=1:NT
JK = (NT*Ns - N(n,:))/(NT-1);
MN = MN + JK;
SN = SN + JK.^2;
end
MN = MN/NT;
SN = SN/NT;
E = sqrt((NT-1)*(SN - MN.^2));
if ~strcmp(plt,'n')
hold on
errorbar(B,NT*Ns,NT*2*E,'r-')
hold off
end
end
N = NT*Ns;
  3 comentarios
Fran
Fran el 13 de Nov. de 2019
Editada: Fran el 13 de Nov. de 2019
thank you. As a matter of fact I am trying to understand how I need to convert my data for this to work. Ideally I want to pass spike times either as a dat or txt file. The example here is a txt file of spike times.
I've noticed that data is not recognized and that the code assumes nargin<1. Do you know what is the syntax error causing that error as the script stands?
致远 马
致远 马 el 17 de Feb. de 2023
Have you solved this problem? I have the same problem now. Do you have ISI code now,thankyou!

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Electrophysiology en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by