Python and NEURON scripts for running prepulse inhibition experiments in layer V pyramidal cells.
Tuomo Maki-Marttunen, 2015-2018
CC BY 4.0
HOC-commands for simulations based on scripts by E. Hay (Hay et al. 2011, Models of Neocortical Layer
5b Pyramidal Cells Capturing a Wide Range of
Dendritic and Perisomatic Active Properties,
PLoS Comput Biol 7:e1002107)
Library of variants based on (Maki-Marttunen et al. 2016, "Functional Effects of Schizophrenia-Linked Genetic Variants on Intrinsic
Single-Neuron Excitability: A Modeling Study", Biol Psychiatry Cogn Neurosci Neuroimaging. 2016 Jan
1;1(1):49-59.
Files included:
README.html #This file
models #Directory with the hoc files
morphologies #Directory with the asc files
CaDynamics_E2.mod #mod file for Intracellular Ca dynamics
Ca_HVA.mod #mod file for HVA Ca currents
Ca_LVAst.mod #mod file for LVA Ca currents
epsp.mod #mod file for EPSPs
Ih.mod #mod file for HCN current
Im.mod #mod file for M-current
K_Pst.mod #mod file for persistent K current
K_Tst.mod #mod file for transient K current
NaTa_t.mod #mod file for transient Na current
Nap_Et2.mod #mod file for persistent Na current
SK_E2.mod #mod file for SK current
SKv3_1.mod #mod file for Kv3.1 potassium current
calcifcurves.py #Python script for calculating the fI curves (single variants)
calcifcurves_comb.py #Python script for calculating the fI curves (variant combinations)
collectppispthrcoeff300_relthr.py #Python script for collecting results of PPI experiment (single variants)
collectscalings_cs.py #Python script for collecting scaling coefficients for single variants
collectthresholddistalamps300.py #Python script for collecting results of thresholds at rest (single variants)
drawppiranges.py #Python script for plotting the PPI window ranges for single variants
drawsubthppiamps_comb.py #Python script for drawing the result figure for combination of variants
findsubthppi300_relthr.py #Python script for calculating the PPI thresholds (single variants)
findsubthppi300_relthr_comb_one.py #Python script for calculating the PPI thresholds (variant combinations)
findthresholddistalamp300_control.py #Python script for calculating the threshold at rest (control)
findthresholddistalamps300.py #Python script for calculating the thresholds at rest (single variants)
findthresholddistalamps300_comb.py #Python script for calculating the thresholds at rest (variant combinations)
mutation_stuff.py #Python library for the effects of SNP-like SCZ-associated variants
mytools.py #Python library, general tools
ppi300_relthr_comb_recordSK.py #Python script for calculating the SK currents following a sub-threshold prepulse
runcontrol.py #Python script for running control neuron data (needed for scaling)
savesynapselocations300.py #Python script for distributing the 3000 synapses along the apical dendrite
scalemutations_cs.py #Python script for downscaling the variants
testsubthppi300_comb_fixed.py #Python script for running simulations with fixed amplitudes of synaptic currents
mutindexlist.sav #List of indices (which mutation ID here corresponds to which mutation IDs in ../approxhaynet)
presaved.tar.gz #Pre-saved data files
To run NEURON simulation of the network model and plot the results (Figure 8), run the following commands:
################ Initialization ################
nrnivmodl #Compile the mechanisms
############ Fetch pre-saved data ##############
tar xvfz presaved.tar.gz #Untars ppispthrcoeff300_relthr_cs.sav, ppispthrcoeff300_relthr_scaledonly_cs0_comb_iiter*.sav, scalings_cs.sav, synlocs300.sav, thresholddistalamp300_cs0_comb.sav
# Or, do the following: (note that not everything is needed for plotting the Figure 8, that's why using the presaved.tar.gz is encouraged)
python runcontrol.py # Saves control_cs.sav, needed by scalemutations_cs.py
python savesynapselocations300.py # Distributes 3000 synapses on the apical dendrite (starting from 300um so that no compartment has too many synapses). Saves synlocs300.sav which is needed by many scripts.
for (( imut=0; imut<115; imut++ ));
do
python scalemutations_cs.py $imut # Saves scalings_cs0_${imut}.sav, needed by collectscalings_cs.py
done
python collectscalings_cs.py # Collects the scalings to scalings_cs.sav, needed by almost all scripts
python findthresholddistalamp300_control.py # Calculate the threshold at rest for control L5PC. Saves thresholddistalamp300_control.sav which is needed by many scripts.
for (( imut=0; imut<115; imut++ ));
do
python findthresholddistalamps300.py $imut # Calculate the threshold at rest for a single variant. Saves thresholddistalamp300_cs0_*.sav which is needed by collectthresholddistalamps300.py
done
python collectthresholddistalamps300.py # Collect the thresholds at rest for single variants. Saves thresholddistalamp300_cs.sav which is needed by findsubthppi300_relthr.py and drawsubthppiamps_comb.py
for (( imut=0; imut<115; imut++ )); # This is the heavy part, should be parallelized to 115 processes, or even more (each iter separately,
do # but that would require some adjustments to the scripts)
python findsubthppi300_relthr.py $imut # Calculate the threshold for second inputs on a time range 0-500 ms for a single variant. Saves ppispthrcoeff300_relthr_scaledonly_cs0_*.sav
done
python collectppispthrcoeff300_relthr.py # Collect the PPI thresholds for single variants. Saves ppispthrcoeff300_relthr_cs.sav, needed by drawsubthppiamps_comb.py
python findthresholddistalamps300_comb.py # Calculate the threshold at rest for variant combinations. Saves thresholddistalamp300_cs0_comb.sav which is needed by drawsubthppiamps_comb.py
for (( imut=0; imut<4; imut++ ));
do
python findsubthppi300_relthr_comb_one.py $imut # Calculate the threshold for second inputs on a time range 0-500 ms for a variant combination. Saves ppispthrcoeff300_relthr_scaledonly_cs0_comb_iiter*.sav,
done # needed by drawsubthppiamps_comb.py
####### Simulations for insets of Fig 1C #######
MS=( 0 31 47 73 78 83 92 105 110 ) # These correspond to the variants 0, 1, 2, 3, 4, 125, 126, 127, 128, 189, 190, 191, 192, 293, 294, 295, 296, 313, 314, 315, 316,
# 333, 334, 335, 336, 369, 370, 371, 372, 421, 422, 423, 424, 441, 442, 443 and 444 in the folder ../approxhaynet_mut
for (( iimut=0; iimut<${#MS[@]}; iimut++ ));
do
imut=${MS[iimut]}
python calcifcurves.py $imut # Run the experiment where the neuron (without or with a single variant) is stimulated with a DC with amplitude 0.35-1.3nA and the number of spikes is recorded
done # Running the script takes about an hour or two on a standard computer.
python calcifcurves_comb.py # Run the experiment where the neuron with a variant combination is stimulated with a DC with amplitude 0.35-1.3nA and the number of spikes is recorded
############# Simulations for Fig 8 ############
python testsubthppi300_comb_fixed.py # Runs the simulations with combinations of variants and fixed amplitudes of second apical stimulus. Saves to subthppitest_cs0_comb_iiter*.sav.
python drawsubthppiamps_comb.py # Plots subthppiamps_relthr_comb.eps using presaved files, then loads subthppitest_cs0_comb_iiter*.sav and plots subthppiamps_relthr_comb_withV.eps