Norns - Neural Network Studio (Visser & Van Gils 2014)

 Download zip file 
Help downloading and running models
Accession:154739
The Norns - Neural Network Studio is a software package for designing, simulation and analyzing networks of spiking neurons. It consists of three parts: 1. "Urd": a Matlab frontend with high-level functions for quickly defining networks 2. "Verdandi": an optimized C++ simulation environment which runs the simulation defined by Urd 3. "Skuld": an advanced Matlab graphical user interface (GUI) for visual inspection of simulated data.
Reference:
1 . Visser S, Van Gils SA (2014) Lumping Izhikevich neurons EPJ Nonlinear Biomedical Physics 25(12):6
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell; Synapse;
Brain Region(s)/Organism:
Cell Type(s): Abstract integrate-and-fire leaky neuron; Abstract Izhikevich neuron;
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: C or C++ program; MATLAB; Norns - Neural Net Studio;
Model Concept(s): Bursting; Oscillations; Simplified Models; Detailed Neuronal Models; Tutorial/Teaching; Action Potentials; Methods; Delay; Rebound firing;
Implementer(s): Visser, Sid [sid.visser at nottingham.ac.uk];
function [t, RatesC] = AnalyzeSpikes(SP, alpha, varargin)
% Optional argument can be handle to axes in which result should be plotted

SP(:,2) = SP(:,2)+1;

nCell = max(SP(:,2));
tMax = 100*round(max(SP(:,1))/100);

CellSpikes = cell(nCell,1);

for iCell = 1:nCell
    IDX = SP(:,2)==iCell;
    
    CellSpikes{iCell} = SP(IDX,1)';
end

xRes = nCell;
tRes = 1;

Rates = zeros(nCell/xRes, tMax/tRes);
tBins = (tRes/2):tRes:tMax;

for iX = 1:(nCell/xRes)
    Rates(iX,:) = hist([CellSpikes{xRes*(iX-1)+(1:xRes)}],tBins);
end
Rates=Rates/(xRes); % Factor 2 comes from size of domain

EventShape = exp(-tRes*(0.5:40)/alpha);
EventShape = [0*EventShape(2:end), EventShape];
% RatesC = conv2([1, 2, 1]/4,EventShape, Rates, 'same');
RatesC = conv(Rates,EventShape, 'same');

if(~isempty(varargin))
    if(ishandle(varargin{1}))
        axes(varargin{1});
    else
        figure;
    end
else
    figure;
end

t = tRes*(1:tMax/tRes);

if(length(varargin)==2)    
    plot(t,RatesC,varargin{2});
else
    plot(t,RatesC);
end


% % simplified testing code
% SP(:,2) = SP(:,2)+1;
% 
% nCell = max(SP(:,2));
% tMax = 100*round(max(SP(:,1))/100);
% 
% CellSpikes = cell(nCell,1);
% 
% for iCell = 1:nCell
%     IDX = find(SP(:,2)==iCell);
%     
%     CellSpikes{iCell} = SP(IDX,1)';
% end
% 
% xRes = 1;
% tRes = 3;
% 
% Rates = zeros(nCell/xRes, tMax/tRes);
% tBins = (tRes/2):tRes:tMax;
% 
% for iX = 1:(nCell/xRes)
%     Rates(iX,:) = hist([CellSpikes{xRes*(iX-1)+(1:xRes)}],tBins);
% end
% Rates=Rates/(xRes); % Factor 2 comes from size of domain
% 
% EventShape = exp(-tRes*(0.5:20)/alpha);
% RatesC = conv(Rates, EventShape, 'same');
% % RatesC = conv2(1,EventShape, Rates, 'full');
% 
% figure;
% plot(tRes*(1:tMax/tRes),RatesC);

Loading data, please wait...