Striatal GABAergic microcircuit, spatial scales of dynamics (Humphries et al, 2010)

 Download zip file 
Help downloading and running models
Accession:137502
The main thrust of this paper was the development of the 3D anatomical network of the striatum's GABAergic microcircuit. We grew dendrite and axon models for the MSNs and FSIs and extracted probabilities for the presence of these neurites as a function of distance from the soma. From these, we found the probabilities of intersection between the neurites of two neurons given their inter-somatic distance, and used these to construct three-dimensional striatal networks. These networks were examined for their predictions for the distributions of the numbers and distances of connections for all the connections in the microcircuit. We then combined the neuron models from a previous model (Humphries et al, 2009; ModelDB ID: 128874) with the new anatomical model. We used this new complete striatal model to examine the impact of the anatomical network on the firing properties of the MSN and FSI populations, and to study the influence of all the inputs to one MSN within the network.
Reference:
1 . Humphries MD, Wood R, Gurney K (2010) Reconstructing the three-dimensional GABAergic microcircuit of the striatum. PLoS Comput Biol 6:e1001011 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Striatum;
Cell Type(s): Neostriatum fast spiking interneuron;
Channel(s):
Gap Junctions: Gap junctions;
Receptor(s): D1; D2; GabaA; AMPA; NMDA;
Gene(s):
Transmitter(s): Dopamine; Gaba; Glutamate;
Simulation Environment: MATLAB;
Model Concept(s): Activity Patterns; Spatio-temporal Activity Patterns; Winner-take-all; Connectivity matrix;
Implementer(s): Humphries, Mark D [m.d.humphries at shef.ac.uk]; Wood, Ric [ric.wood at shef.ac.uk];
Search NeuronDB for information about:  D1; D2; GabaA; AMPA; NMDA; Dopamine; Gaba; Glutamate;
function out = Experiment_ImpactOnCentralMSN(DA,width,radius)
if nargin == 0
    width = 50;
    radius = 100;
    DA = 0.0;
    fname = {'Expt_InputsToCentreMSN'};
else
    fname = {['Shell_width' num2str(width) '_innerradius_' num2str(radius)]}; 
end
% set the model parameters
% network_is_at = 'C:\Users\Mark\Simulations\Striatum models\Simulations for PLoS striatal network paper\Sphere_150micron_radius_MSNFSIs_0_bghz.mat';
% network_is_at = 'C:\Simulations\Striatum models\Simulations for PLoS striatal network paper\CreateNetwork\Striatum_network_1000-1000-1000_num_1_at_734300.5522.mat'; % 3% FSI network
network_is_at = 'C:\Simulations\Striatum models\Simulations for PLoS striatal network paper\CreateNetwork\Striatum_network_1000-1000-1000_num_1_at_734299.3923.mat'; % 1% FSI network
SIMPARAMS = StriatumNetworkParameters(network_is_at);   % is vital we use the same network each time!!!
% SIMPARAMS = StriatumNetworkParameters;

% name for the log file
SIMPARAMS.sim.logfname = [char(fname) '.log'];

% -------------------------------------------------------------------------
% set the DA level
SIMPARAMS.physiology.DA = DA; 

% set all the GABA the weights to 0
SIMPARAMS.net.Cctms_w = ones(length(SIMPARAMS.net.Cctms),1) .* 6.1;
SIMPARAMS.net.Cctfs_w = ones(length(SIMPARAMS.net.Cctfs),1) .* 6.1;
SIMPARAMS.net.Cmsms_w = ones(length(SIMPARAMS.net.Cmsms),1) .* 4.36;
SIMPARAMS.net.Cfsms_w = ones(length(SIMPARAMS.net.Cfsms),1) .* (4.36 * 5);
SIMPARAMS.net.Cfsfs_w = ones(length(SIMPARAMS.net.Cfsfs),1) .* (4.36 * 5);
SIMPARAMS.net.Cgapfs_w = ones(length(SIMPARAMS.net.Cgapfs_w),1).* (150/5); 

% set the backgroung input level
bgHz = 0;   % normally 1.9; only interested in effect of shell input here... 
SIMPARAMS.input.CTX.r_MSSEG = ones(SIMPARAMS.net.MS.N,1) .* bgHz;
SIMPARAMS.input.CTX.N_MSSEG = int32(ones(SIMPARAMS.net.MS.N,1) .* 250);
SIMPARAMS.input.CTX.alpha_MSSEG = ones(SIMPARAMS.net.MS.N,1) .* 0.0;
SIMPARAMS.input.CTX.r_FSSEG = ones(SIMPARAMS.net.FS.N,1) .* bgHz;
SIMPARAMS.input.CTX.N_FSSEG = int32(ones(SIMPARAMS.net.FS.N,1) .* 250);
SIMPARAMS.input.CTX.alpha_FSSEG = ones(SIMPARAMS.net.FS.N,1) .* 0.0;

% standard selection sims....
SIMPARAMS.sim.tfinal = 4000;
hz_input = 5; 
% SIMPARAMS.input.Selection.Pt =  int32([500 550 750 800] ./ SIMPARAMS.sim.dt)'; % time of change in msec, converted into iteration
% SIMPARAMS.input.Selection.Pch = int32([1 2 1 2])'; % channel
% SIMPARAMS.input.Selection.Phz = [4 6 bgHz bgHz]'; % rate of sp

SIMPARAMS.input.shell.inner_sphere_radius = radius; %n_inputs = 200; nFS_inputs = 20; % assuming minimum sphere diameter is 300 microns, using 3% FSIs....
SIMPARAMS.input.shell.shell_width = width;
mid = SIMPARAMS.net.PhysicalDimensions/2; % centre of cubic network  
MSdist_from_mid = sqrt(sum((SIMPARAMS.net.MS.Position - repmat(mid,SIMPARAMS.net.MS.N,1))'.^2));
FSdist_from_mid = sqrt(sum((SIMPARAMS.net.FS.Position - repmat(mid,SIMPARAMS.net.FS.N,1))'.^2));

SIMPARAMS.input.shell.MScentre = find(MSdist_from_mid == min(MSdist_from_mid));
SIMPARAMS.input.shell.MSids = find(MSdist_from_mid >= SIMPARAMS.input.shell.inner_sphere_radius & MSdist_from_mid <= SIMPARAMS.input.shell.inner_sphere_radius + SIMPARAMS.input.shell.shell_width);   % all MSNs within this shell
SIMPARAMS.input.shell.FSids = find(FSdist_from_mid >= SIMPARAMS.input.shell.inner_sphere_radius & FSdist_from_mid <= SIMPARAMS.input.shell.inner_sphere_radius + SIMPARAMS.input.shell.shell_width);   % all MSNs within this shell

SIMPARAMS.input.CTX.r_MSSEG(SIMPARAMS.input.shell.MScentre) = hz_input; % centre MSN....
SIMPARAMS.input.CTX.r_MSSEG(SIMPARAMS.input.shell.MSids) = hz_input; % all MSNs get input in this shell
SIMPARAMS.input.CTX.r_FSSEG(SIMPARAMS.input.shell.FSids) = hz_input; % all FSIs get input in this shell

% keyboard

% in case we want to randomly assign inputs....
%tmp = randperm(numel(MSids));
%tmp = randperm(numel(FSids));
% SIMPARAMS.input.CTX.r_MSSEG(MSids(tmp(1:n_inputs))) = hz_input; % randomly assign which MSNs get input in this sphere...
% SIMPARAMS.input.CTX.r_FSSEG(FSids(tmp(1:nFS_inputs))) = hz_input; % randomly assign which MSNs get input in this sphere...

% frac_MSNs = n_inputs ./ ((4/3 * pi * (sphere_width/1000)^3) * SIMPARAMS.net.CellsPerMillimeterCube); 
% nFS_inputs = round(SIMPARAMS.net.FS.N * frac_MSNs);


% Phasic input to MSNs only
SIMPARAMS.net.CHAN1_MS = int32(0:(round(SIMPARAMS.net.MS.N / 2)-1))';
SIMPARAMS.net.CHAN1_FS = int32(0:(round(SIMPARAMS.net.FS.N / 2)-1))' .* 0.0;  
SIMPARAMS.net.CHAN2_MS = int32(round(SIMPARAMS.net.MS.N / 2):(SIMPARAMS.net.MS.N-1))';
SIMPARAMS.net.CHAN2_FS = int32(round(SIMPARAMS.net.FS.N / 2):(SIMPARAMS.net.FS.N-1))' .* 0.0;



% -------------------------------------------------------------------------
% Run the simulation
tic
out = RunSimulation(SIMPARAMS);
toc

% -------------------------------------------------------------------------
% Save the results to disc
save(char(fname), 'out', 'SIMPARAMS') ;

% -------------------------------------------------------------------------
% Sort and plot the results
close all

% -------------------------------------------------------------------------
close all
figure(1); clf; plot(out.STms(:,2), out.STms(:,1), '.')
figure(2); clf; plot(out.STfs(:,2), out.STfs(:,1), '.')

% sort out the spikes according to channel and plot the results