This directory contains scripts for simulating the GGN model and the mushroom body olfactory circuit around it in NEURON 7.4 with Python 2.7 related to the article: "Feedback inhibition and its control in an insect olfactory circuit". Subhasis Ray, Zane Aldworth, and Mark Stopfer; 2020. eLife. # analysis - various example scripts for analyzing simulated data. # common - `nhpp.py` : Generate times for nonhomogeneous Poisson process # mb ## `cell_templates` - `GGN_20170309_sc.swc` : morphology trace of GGN shrinkage corrected for methylsalicylate fixing - `GGN_20170309_sc.hoc` : cell template for GGN model - `kc_1_comp.hoc` : single compartmental KC model ## mod: contains mechanism files ## network - `change_pn_spikes.py` : take a simulated data file and create another one after modifying the PN spike times, so that same model is simulated with modified spike input. - `config.yaml` : configuration file for setting network model parameters - `fixed_network_changing_stim.py` : simulate a given network model with different PN spike inputs. - `kc_ggn_feedback_dclamp.py` : test of single KC with GGN inhibition when the GGN is driven by a dynamic clamp. - `kc_ggn_feedback_frequency_sweep.py` : amplitude and frequency sweeps for testing effect of GGN feedback on a single KC. - `kc_ggn_nofeedback.py` : script to simulate KC with no feedback alongside KC with feedback inhibition from GGN. - `pn_kc_ggn_network.py` : script to setup and simulate the mushroom body network model (uses config.yaml for parameters). - `pn_output.py` : script to setup PN spike trains - `tweak_template.py` : script to modify an existing network template (in a data file dumped by an earlier simulation). ## slurm : utility scripts for running simulations in batch mode under slurm (on NIH biowulf). - `batch_run_remove_kcs_run.sh` : example script for running successive simulations after removing high spiking KCs. - `circular_run` : scripts for running running successive simulations after removing high spiking KCs. These scripts read last job ids from a specified file to identify the corresponding data dumps, remove high spiking kcs from those model templates, and run the simulation again until no more highspiking KC is left. - `run_fixed_net_changing_stim.py` : example utility script to run simulation of a given network model with changed PN inputs as a subprocess. - `run_fixed_net_with_ig.sh` : sample script to run a given network template including IG with different PN inputs. - `run_fixed_network_changing_stim.sh` : script to run a fixed network template while changing the PN input pattern. - `run_kc_ggn_feedback_amp_sweep.sh`, `run_kc_ggn_nofeedback_amp_sweep.sh` : scripts to test single KC with and without GGN feedback. - `run_mb_net.sh` : script to run mushroom body network model in batch mode. - `run_to_reproduce_ggn_vm_no_seed.sh`, `run_to_reproduce_ggn_vm.sh`, `run_to_reproduce_ggn_vm_with_shifting_pn.sh`: scripts that run multiple simulations while changing parameters to reproduce realistic GGN voltage trace. - `run_with_ig.sh` : script to simulate network model with IG included. ## `test_cell` - `ggn_voltage_attenuation_vclamp.py` : check voltage attenuation along GGN arbor when one branch is voltage clamped. - `run_param_sweep_vclamp.py` : test voltage attenuation along GGN arbor with voltage clamp while changing passive properties. # morphutils - `cellmovie.py` : dump a video of rotating neuron in 3D - `displaycell.py` : display neuronal morphology from SWC file - `morph3d_*.py` : display neuronal morphology in 3D using corresponding module. Use vtk/vispy/matplotlib to display 3D morphology. - `neurograph.py` : handle morphology as a graph. This file contains data type definitions and functions to read an SWC file and turn it into a graph (using networkx). There is also GGN specific mapping where I assign custom types to specific branches based on anatomical location. # nrn - `nrnutils.py` : Utilities for handling NEURON model - convert a NEURON cell model into a networkx graph - insert alpha synapses - insert ion channel mechanisms - set up recording of Vm - `localized_input_output.py` : apply synaptic inputs at specified branches. This scripts runs simulation with synchronous synaptic inputs at multiple compartments on specific branches. - `localized_input_output_passive_sweep.py` : apply synaptic inputs at specified branches of GGN models with different passive properties. - `nrninit.bat`, `nrninit.sh` : batch file (Windows) and shell script (Linux). Initialize PYTHONPATH to include various model related Python scripts - `staggered_input.py` : simulate synaptic input at random compartments in specified branch