// The goal of this experiment is to insure that our cell responses // are reasonably similar to the data on back propagating action potentials // where the site of current injection is either at the soma or the apical trunk //load_proc("nrnmainmenu") // load main NEURON library //load_template("ExperimentControl") // load a custom made library function that centralizes parameters so as to load_file("nrngui.hoc") load_file("CA1_multi/template/load_templates.hoc") strdef accstr // not confuse experimental variable bindings with neurophysiological variable bindings objref econ // Create an experiment object show_errs=1 debug_lev=1 econ=new ExperimentControl(show_errs,debug_lev) econ.self_define(econ) // points the object at itself econ.morphology_dir = "CA1_multi/morphology/n123" // Setup morphology directory econ.generic_dir = "CA1_multi/experiment/" // Setup directory with cell-setup file econ.add_lib_dir("Terrence","CA1_multi/lib") // Setup directory with library functions econ.data_dir = "validation-plots" // Define directory to save produced data if (unix_mac_pc() ==1 ) { sprint(econ.syscmd, "mkdir -p %s", econ.data_dir) // make the data directory system(econ.syscmd) } // Setup cell econ.xopen_geometry_dependent("cell") // load the raw cell morphology econ.xopen_geometry_dependent("cell-analysis") // load user-defined semantics on morphology cell_analysis(econ) printf("Opening cell setup\n") econ.xopen_generic("cell-setup") // load the cell-setup file (define specific printf("Opened. Setting up cell\n") // channels, membrane properties etc) cell_setup(econ) // Set simulation parameters for the experiment econ.defvar("Simulation Control", "tstop", "750", "Defines when the simulation stops.") econ.defvar("Simulation Control", "dt", "0.1", "Timestep") econ.defvar("Simulation Control", "steps_per_ms", "10", "How many points are plotted per ms") setdt() // Define directories for different cases tested strdef data_dir // Insert current clamp into soma or dendritic section objref ic,ic2 proc validate_bpap_somatic_stimulation() { access soma ic = new IClamp(0.5) // Configure current clamp econ.defvar("Current Clamp Control", "ic.del", "20", "Determines the delay before onset of the current clamp.") econ.defvar("Current Clamp Control", "ic.dur", "720", "Determines the duration of the current clamp.") // current used with somatic stimulation econ.defvar("Current Clamp Control", "ic.amp", ".22", "Determines the amplitude of the current clamp at the soma.") sprint(data_dir, "%s/BPAP/Soma", econ.data_dir) // Define directory to save produced data for somatic stimulation } proc validate_bpap_dendrite62_stimulation() { print "WARNING dendrite 62 is only at the trunk for the original Poirazi morphology!" access apical_dendrite[62] //stimulate for dendritic bpap train ic = new IClamp(0.5) // Configure current clamp econ.defvar("Current Clamp Control", "ic.del", "20", "Determines the delay before onset of the current clamp.") econ.defvar("Current Clamp Control", "ic.dur", "720", "Determines the duration of the current clamp.") // current used with dendrite 62 stimulation, for dendritically induced trains of BPAP econ.defvar("Current Clamp Control", "ic.amp", ".48", "Determines the amplitude of the current clamp at dendrite [62].") sprint(data_dir, "%s/BPAP/Dend62", econ.data_dir) // Define directory to save produced data for somatic stimulation } proc validate_bpap_dendrite64_stimulation() { print "WARNING dendrite 64 is only at the trunk for the original Poirazi morphology!" access apical_dendrite[64] //stimulate for single-Ca++-dendritic spike in apical_dendrite[64] ic = new IClamp(0.5) econ.defvar("Current Clamp Control", "ic.del", "20", "Determines the delay before onset of the current clamp.") econ.defvar("Current Clamp Control", "ic.dur", "700", "Determines the duration of the current clamp.") // current used with dendrite 64 stimulation, single Ca++ spike econ.defvar("Current Clamp Control", "ic.amp", ".48", "Determines the amplitude of the current clamp at debdrite [64].we") sprint(data_dir, "%s/BPAP/Dend64", econ.data_dir) // Define directory to save produced data for somatic stimulation } // Default is somatic stimulation validate_bpap_somatic_stimulation() // Create basic graphics econ.xopen_library("Terrence","basic-graphics") // open graphics library file // section used in train-with-single-Ca++-spike figure //addgraph_2("apical_dendrite[64].v(0.5)", 0,tstop,-72,20) // 233.67 um from soma proc validate_bpap_run() { finitialize(v_init) fcurrent() run() } objref vb vb = new VBox() vb.intercept(1) //sections used in BPAP figure addgraph_2("soma.v(0.5)", 0,tstop,-72,20) addgraph_2("apical_dendrite[46].v(0.5)",0,tstop,-72,20) // 156.96 um from soma addgraph_2("apical_dendrite[71].v(0.5)", 0,tstop,-72,20) // 324.53 um from soma print "WARNING these segments are only at the trunk for the original Poirazi morphology!" // Buttons xpanel("") xradiobutton("Somatic injection", "validate_bpap_somatic_stimulation()", 1) xradiobutton("Dendrite 62 injection", "validate_bpap_dendrite62_stimulation()") xradiobutton("Dendrite 64 injection", "validate_bpap_dendrite64_stimulation()") xpanel() xpanel("") xradiobutton("Original CaL", "cell_mods_original_apical_caR_caLH_insert()", 1) xradiobutton("Perisomatic CaL", "cell_mods_apical_caR_caLH_insert()") xpanel() xpanel("") xradiobutton("CVODE off", "cvode_active(0)", 1) xradiobutton("CVODE on", "cvode_active(1)") xbutton("Run", "validate_bpap_run()") xpanel() vb.intercept(0) vb.map("Traces") proc validate_bpap_print() { C = $2 for i=0,windex { if (unix_mac_pc() ==1 ) { sprint(econ.syscmd, "mkdir -p %s", data_dir) // make the data directory system(econ.syscmd) } sprint(econ.tmp_str, "%s/bpap-%s-cv%d-%d.eps", data_dir, $s1, C, i) // define the name of the .eps file print(econ.tmp_str) win[i].printfile(econ.tmp_str) } } proc validate_bpap_plots() { local C for C=0, 1 { cvode_active(C) if (C) { cvode.atol(0.0001) } // Original parameters cell_mods_original_apical_caR_caLH_insert() validate_bpap_somatic_stimulation() run() validate_bpap_print("orig", C) validate_bpap_dendrite62_stimulation() run() validate_bpap_print("orig", C) validate_bpap_dendrite64_stimulation() run() validate_bpap_print("orig", C) // Parameters with extra CaLH cell_mods_apical_caR_caLH_insert() validate_bpap_somatic_stimulation() run() validate_bpap_print("calh", C) validate_bpap_dendrite62_stimulation() run() validate_bpap_print("calh", C) validate_bpap_dendrite64_stimulation() run() validate_bpap_print("calh", C) } }