README file for Turi et al, 2018 Vasoactive intestinal polypeptide-expressing interneurons in the hippocampus support goal-oriented spatial learning
for more information, refer to the comments inside the scripts or contact me in: chavlis [DOT] spiros [AT] gmail [DOT] com
Compile NEURON mod files
nrnivmodl mechanisms/
Go to ValidationTests
cd ValidationTests
execute for cell types
../x86_64/special -c icurrent=<current_amplitude> IinjectionAt<neuron_type>.hoc
-
<current_amplitude>: the injected at soma current in nA
-
<neuron_type> valid values
- Axoaxonic
- Basket
- Bistratified
- OLM
- VIPCCK
- VIPCR
- Pyramidal
e.g.,
../x86_64/special -c icurrent=-0.1 IinjectionAtPyramidal.hoc
In order to reproduce all figures with validation results, run for multiple currents from -0.20 to 0.40.
Go to ValidationTests
cd ValidationTests
Execute for Interneurons
../x86_64/special synaptic_validation_<neuronal_type>.hoc
Valid values for <neuronal_type>
- Axoaxonic
- Basket
- Bistratified
- OLM
- VIPCCK
- VIPCR
e.g.,
../x86_64/special synaptic_validation_Axoaxonic.hoc
Execute for Pyramidal (all but NMDA)
../x86_64/special synaptic_validation_Pyramidal.hoc
Execute for Pyramidal NMDA synapses
../x86_64/special synaptic_validation_Pyramidal_NMDA.hoc
To create the plots shown in Figure S7 (A-D) after executing NEURON for all cells and NMDA synapses for Pyramidal, run
python synaptic_validation_plots.py <neuronal_type>
Valid values for <neuronal_type>
- Axoaxonic
- Basket
- Bistratified
- OLM
- VIPCCK
- VIPCR
- Pyramidal
python synaptic_validation_plots.py EC_CA3
First you have to create the Inputs, go in make_inputs_linear_track directory
cd make_inputs_linear_track
In a command line execute
python make_grid_like_inputs_speed_prelearning.py <run_number>
python make_grid_like_inputs_speed_mod.py <run_number>
<run_number> is a specific run form one edge of the track to the other. To replicate the figures one needs 5 runs
After the simulation of all runs create the grid-like inputs by executing
python glim_v2_prelearning.py <total_number_of_runs>
python glim_v2_speed_mod.py <total_number_of_runs> <modulation_type>
<modulation_type> is 'pos' or 'neg', e.g., python glim_v2_speed_mod.py 5 pos
Then enter background_noise directory
cd ../backgroun_noise
create the background noise by executing
python poisson_input.py <total_number_of_runs> <poisson_rate> # e.g., poisson_input.py 5 5
return to main directory
cd ../
Run the simulation
.x86_64/special -nogui -c n_runs=<run_number> -c n_trials=<virtual_mouse_id> -c n_neuron=<deletion_type> Network_prelearning.hoc
e.g., .x86_64/special -nogui -c nruns=1-c ntrials=1 -c n_neuron=No_VIPcells Network_prelearning.hoc
to replicate the results of the paper you need 5 runs/trial and 10 trials and all possible deletions (see below)
Valid deletions:
- Control: All connections and cells, default
- No_VIPcells: All VIP+ neurons are removed
- No_VIPCR: All VIP+/CR+ neurons are removed
- No_VIPCCK: All VIP+/CCK+ neurons are removed
- No_VIPPVM: All VIP Positive Velocity Modulated cells are removed
- No_VIPNVM: All VIP Negative Velocity Modulated cells are removed
- No_VIPCRtoBC: All VIP/CR to Basket Cells connections are removed
- No_VIPCRtoOLM All VIP/CR to OLM Cells connections are removed
Output of the simulation is saved into Simulation_Results/prelearning
Run the locomotion
.x86_64/special -nogui -c nruns=<run_number> -c ntrials=<virtual_mouse_id> -c n_neuron=<deletion_type> Network_locomotion.hoc
e.g., .x86_64/special -nogui -c nruns=1-c ntrials=1 -c n_neuron=No_VIPcells Network_locomotion.hoc
Output of the simulation is saved into Simulation_Results/locomotion
First, one needs to extract the spiketimes for neurons in order to analyze them Go to AnalysisRawData directory
cd AnalysisRawData
Exctract spike times
python spiketimes_analysis.py <neuron_type> <deletion> <learning_mode> <number_of_trial> <number_of_run>
Valid <neuron_type> values:
- _pvsoma_ : Pyramidal cells
- _aacell_ : Axoaxonic cells
- _bcell_ : Basket cells
- _bscell_ : Bistratified cells
- _olmcell_ : OLM cells
- _vipcck_ : VIP/CCK cells
- _vipcr_ : VIP/CR PVM cells
- _vipcrnvm_ : VIP/CR NVM cells
Valid <learning_mode> values:
- prelearning
- locomotion
- reward
After the analysis for all trials, runs and deletions execute:
python all_path_all_spiketimes.py <learning_mode> # e.g., python all_path_all_spiketimes.py locomotion
This will create the subfolder data_analysis/locomotion/metrics_permutations or data_analysis/prelearning/metrics_permutations where the spiketimes and the path for all cases is stored (for better handling)
Then execute the command below to calculate whose cell firing rate is above the threshold in the reward zone
python plasticity_indices.py
This command will create a .txt file in Simulation_Results/<learning_mode>/<deletion_type>/Trial_<trial_number> with the indices of the cells undergo plasticity
Run the locomotion+reward Go to main directory
cd ../
.x86_64/special -nogui -c nruns=<run_number> -c ntrials=<virtual_mouse_id> -c n_neuron=<deletion_type> Network_reward.hoc
e.g., .x86_64/special -nogui -c nruns=1-c ntrials=1 -c n_neuron=No_VIPcells Network_reward.hoc
Output of the simulation is saved into Simulation_Results/reward
Go to AnalysisRawData directory
cd AnalysisRawData
python spiketimes_analysis.py <neuron_type> <learning_mode> <deletion_type> <number_of_trial> <number_of_run> # for all runs, trials, neuronal_types etc.
python all_path_all_spiketimes.py <learning_mode> # for all learning modes, except for locomotion (see above)
python heatmaps.py <number_of_trial> <deletion_type> <learning_mode> # this produces heatmps and all metrics per deletion and per trial
python heatmaps_interneurons.py <number_of_trial> <deletion_type> <learning_mode> <interneuronal_type> # same as the above, but now for interneurons
valid <interneuronal_type>:
- aacell : Axoaxonic cells
- bcell : Basket cells
- bscell : Bistratified cells
- olm : OLM cells
- vipcck : VIP/CCK cells
- vipcr : VIP/CR PVM cells
- vipcrnvm : VIP/CR NVM cells
python all_trials_paper_all.py # produces the altogether heatmaps
python all_trials_paper_all_interneurons.py # produces the altogether heatmaps
python all_trials_enrichment.py # produces the barplot with the enrichment for all deletion types and learning modes
for more information, refer to the comments inside the scripts or contact me in: chavlis [DOT] spiros [AT] gmail [DOT] com