function SIMPARAMS = StriatumNetworkParameters(varargin)
addpath ./CreateNetwork/
blnLoad = 0;
if nargin >= 1
blnLoad = 1;
network_fname = varargin{1};
end
SIMPARAMS.net.PhysicalDimensions = [500 500 500];
SIMPARAMS.net.CellsPerMillimeterCube = 84900;
SIMPARAMS.net.FSpercentage = 1;
SIMPARAMS.net.ConnectMethod = 'physical';
[SIMPARAMS.net] = GetNeuronPositions(SIMPARAMS.net);
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))';
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))';
SIMPARAMS.physiology.MSparams = getMSparams(SIMPARAMS);
SIMPARAMS.physiology.FSparams = getFSparams(SIMPARAMS);
SIMPARAMS.physiology.Eglu = 0;
SIMPARAMS.physiology.Egaba = -60;
SIMPARAMS.physiology.ts_glu_AMPA = 6;
SIMPARAMS.physiology.ts_glu_NMDA = 160;
SIMPARAMS.physiology.ts_gaba = 4;
SIMPARAMS.physiology.tau_fsgap = 11;
SIMPARAMS.physiology.glu_ratio = 0.5;
SIMPARAMS.physiology.DA = 0.0;
SIMPARAMS.physiology.MS_MS.maxdelay = 2;
SIMPARAMS.physiology.MS_MS.baseweight = 4.36;
SIMPARAMS.physiology.MS_MS.baseweightSD = 0;
SIMPARAMS.physiology.FS_MS.maxdelay = 2;
SIMPARAMS.physiology.FS_MS.baseweight = (4.36 * 5);
SIMPARAMS.physiology.FS_MS.baseweightSD = 0;
SIMPARAMS.physiology.FS_FS.maxdelay = 2;
SIMPARAMS.physiology.FS_FS.baseweight = (4.36 * 5);
SIMPARAMS.physiology.FS_FS.baseweightSD = 0;
SIMPARAMS.physiology.FS_gap.baseweight = (150 / 5);
SIMPARAMS.physiology.FS_gap.baseweightSD = 0;
SIMPARAMS.sim.RANDSEED = int32(12345);
SIMPARAMS.sim.logfname = 'logfile.log';
SIMPARAMS.sim.tstart = 0;
SIMPARAMS.sim.tfinal = 100;
SIMPARAMS.sim.dt = 0.1;
if blnLoad
SIMPARAMS.net = LoadStriatumNetwork(network_fname);
else
SIMPARAMS.net = BuildStriatumNetwork(SIMPARAMS.net, SIMPARAMS.physiology, SIMPARAMS.sim);
end
SIMPARAMS.sim.RecordChan_MS = int32(0:49)';
SIMPARAMS.sim.MSspikebuffer = int32(2000000);
SIMPARAMS.sim.FSspikebuffer = int32(2000000);
SIMPARAMS.sim.initVms = ones(SIMPARAMS.net.MS.N, 1) .* SIMPARAMS.physiology.MSparams(:,2);
SIMPARAMS.sim.initUms = zeros(SIMPARAMS.net.MS.N, 1);
SIMPARAMS.sim.initVfs = ones(SIMPARAMS.net.FS.N, 1) .* SIMPARAMS.physiology.FSparams(:,2);
SIMPARAMS.sim.initUfs = zeros(SIMPARAMS.net.FS.N, 1);
SIMPARAMS.sim.initVgapfs = ones(length(SIMPARAMS.net.Pgapfs),1) .* SIMPARAMS.physiology.MSparams(1,2);
SIMPARAMS.sim.SpikeEventQue_MS = zeros(SIMPARAMS.net.MS.N, (SIMPARAMS.physiology.MS_MS.maxdelay / SIMPARAMS.sim.dt)+1);
SIMPARAMS.sim.SpikeEventQue_FS = zeros(SIMPARAMS.net.FS.N, (SIMPARAMS.physiology.FS_FS.maxdelay / SIMPARAMS.sim.dt)+1);
SIMPARAMS.sim.Iinj_MS = zeros(SIMPARAMS.net.MS.N,1);
SIMPARAMS.sim.Iinj_FS = zeros(SIMPARAMS.net.FS.N,1);
SIMPARAMS.input.CTX.r_MSSEG = ones(SIMPARAMS.net.MS.N,1) .* 1.9;
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) .* 1.9;
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;
SIMPARAMS.input.Selection.Pt = int32([-1] ./ SIMPARAMS.sim.dt);
SIMPARAMS.input.Selection.Pch = int32([1]');
SIMPARAMS.input.Selection.Phz = SIMPARAMS.input.CTX.r_MSSEG(1);
SIMPARAMS.input.PULSE.P = zeros(SIMPARAMS.sim.tfinal.*100,1);
SIMPARAMS.input.PULSE.r_ctx = 0;
SIMPARAMS.input.PULSE.Nctx_ms = 0;
SIMPARAMS.input.PULSE.Nctx_fs = 0;
SIMPARAMS.input.PULSE.ts_spks = 50;
SIMPARAMS.input.PULSE.pulsetimes = [250 750 1250 1750 2250 2750 3250 3750 4250 4750];
SIMPARAMS.input.PULSE.ISI = 0;
SIMPARAMS.input.PULSE.firstpulse = 0;
SIMPARAMS.input.PULSE.secondpulse = SIMPARAMS.input.PULSE.firstpulse + SIMPARAMS.input.PULSE.ISI;
function MSparams = getMSparams(SIMPARAMS)
MSparams = ones(SIMPARAMS.net.MS.N,14);
MSparams(:,1) = 50;
MSparams(:,2) = -80;
MSparams(:,3) = -33.8;
MSparams(:,4) = 0.05;
MSparams(:,5) = -20;
MSparams(:,6) = -55;
MSparams(:,7) = 377;
MSparams(:,8) = 40;
MSparams(:,9) = 1.14;
MSparams(:,10) = -68.4;
MSparams(:,11) = 0.03;
MSparams(SIMPARAMS.net.MS.D1inds,11) = MSparams(SIMPARAMS.net.MS.D1inds,11) .* 0.0;
MSparams(:,12) = 3.75;
MSparams(SIMPARAMS.net.MS.D2inds,12) = MSparams(SIMPARAMS.net.MS.D2inds,12) .* 0.0;
MSparams(:,13) = 0.156;
MSparams(SIMPARAMS.net.MS.D1inds,13) = MSparams(SIMPARAMS.net.MS.D1inds,13) .* 0.0;
MSparams(:,14) = 22.7;
SIMPAMS.MSparams(SIMPARAMS.net.MS.D2inds,14) = MSparams(SIMPARAMS.net.MS.D2inds,14) .* 0.0;
function FSparams = getFSparams(SIMPARAMS)
FSparams = ones(SIMPARAMS.net.FS.N,12);
FSparams(:,1) = 80;
FSparams(:,2) = -70;
FSparams(:,3) = -50;
FSparams(:,4) = 1;
FSparams(:,5) = 0.2;
FSparams(:,6) = 0.025;
FSparams(:,7) = -60;
FSparams(:,8) = 0.0;
FSparams(:,9) = 25;
FSparams(:,10) = -55;
FSparams(:,11) = 0.1;
FSparams(:,12) = 0.625;
function network = LoadStriatumNetwork(fname)
load(fname);
if exist('SIMPARAMS');
network = SIMPARAMS.net;
else
network = net;
end