function [SIPlace SIItem SIContext] = firingRateToSI(FiringRate,opt) % firingRateToSI % FiringRate - Matrix with the firing rate of dimensions: % nTrial x nStim x nCell. % opt - Structure with fields: % * nCell - Number of cells. % * nStim - Number of stimuli. % * nBin - Number of bins used for the SI. % % RETURN % SIPlace - Selectivity index for place. % SIItem - Selectivity index for item. % SIContext - Selectivity index for context. % % DESCRIPTION % Converts a firing rate into a selectivity index. % Florian Raudies, 07/22/2013, Boston University. nCell = opt.nCell; nStim = opt.nStim; nBin = opt.nBin; nBlock = 30; % We calculate the mean firing rate over 30 trial blocks for each bin. FiringRatePerBin = zeros(nBin,nStim,nCell); for iBin = 1:nBin, FiringRatePerBin(iBin,:,:) = mean(FiringRate((iBin-1)*nBlock+(1:nBlock),:,:),1); end % ************************************************************************* % Selectivity Index for place. % ************************************************************************* n = 4; LambdaPlace = zeros(nBin,n,nCell); LambdaPlace(:,1,:) = 0.5*(FiringRatePerBin(:,1,:) + FiringRatePerBin(:,5,:)); LambdaPlace(:,2,:) = 0.5*(FiringRatePerBin(:,2,:) + FiringRatePerBin(:,6,:)); LambdaPlace(:,3,:) = 0.5*(FiringRatePerBin(:,3,:) + FiringRatePerBin(:,7,:)); LambdaPlace(:,4,:) = 0.5*(FiringRatePerBin(:,4,:) + FiringRatePerBin(:,8,:)); LambdaPref = max(LambdaPlace,[],2); SIPlace = (n-sum(LambdaPlace./(eps ... +repmat(LambdaPref,[1 n 1])),2))/(n-1); SIPlace(LambdaPref==0) = 0; SIPlace = squeeze(SIPlace); % ************************************************************************* % Selectivity Index for item. % ************************************************************************* n = 2; LambdaItem = zeros(nBin,n,nCell); LambdaItem(:,1,:) = 0.25*sum(FiringRatePerBin(:,1:4,:),2); % 1, 2, 3, 4 LambdaItem(:,2,:) = 0.25*sum(FiringRatePerBin(:,5:8,:),2); % 5, 6, 7, 8 LambdaPref = max(LambdaItem,[],2); SIItem = (n-sum(LambdaItem./(eps ... +repmat(LambdaPref,[1 n 1])),2))/(n-1); SIItem(LambdaPref==0) = 0; SIItem = squeeze(SIItem); % ************************************************************************* % Selectivity Index for context. % ************************************************************************* n = 2; LambdaContext = zeros(nBin,n,nCell); LambdaContext(:,1,:)= 0.25*sum(FiringRatePerBin(:,1:2:7,:),2); % 1, 3, 5, 7 LambdaContext(:,2,:)= 0.25*sum(FiringRatePerBin(:,2:2:8,:),2); % 2, 4, 6, 8 LambdaPref = max(LambdaContext,[],2); SIContext = (n-sum(LambdaContext./(eps ... +repmat(LambdaPref,[1 n 1])),2))/(n-1); SIContext(LambdaPref==0)= 0; SIContext = squeeze(SIContext);