# 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
# Scripts' author: S. Chavlis, PhD
################### VALIDATION OF NEURONS ##########################################################################
# Compile NEURON mod files
nrnivmodl mechanisms/
# Passive properties
# 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.
# Synaptic Properties
# 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
# These scripts create the folder SynapticProperties and inside the .txt files are saved.
# 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
## Inputs from EC LIII and CA3 SC
python synaptic_validation_plots.py EC_CA3
#################### INPUT CREATION #################################################################################
# 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
#################### PRELEARNING SIMULATIONS #######################################################################
# Run the prelearning simulation by executing
# 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
#################### LOCOMOTION SIMULATIONS ##########################################################################
# 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
#################### ANALYSIS OF LOCOMOTION DATA BEFORE PROCEEDING #####################################################
# 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
#################### REWARD+LOCOMOTION SIMULATIONS ##########################################################################
# 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
#################### ANALYSIS OF FINAL DATA ##########################################################################
# 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
|