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