//genesis - Purkinje cell version M9 genesis2 master script // Copyright: Theoretical Neurobiology, Born-Bunge Foundation - UA, 1998-1999. // // $Id: TUTORIAL.g 1.1.1.3.1.6.3.1.1.1.3.1.1.1.1.2 Thu, 04 Apr 2002 12:46:38 +0200 hugo $ // ////////////////////////////////////////////////////////////////////////////// //' //' Purkinje tutorial //' //' (C) 1998-2002 BBF-UIA //' //' see our site at http://www.bbf.uia.ac.be/ for more information regarding //' the Purkinje cell and genesis simulation software. //' //' //' functional ideas ... Erik De Schutter, erik@bbf.uia.ac.be //' genesis coding ..... Hugo Cornelis, hugo@bbf.uia.ac.be //' //' general feedback ... Reinoud Maex, Erik De Schutter //' ////////////////////////////////////////////////////////////////////////////// //- give header echo "--------------------------------------------------------------------------" echo echo "Purkinje tutorial, version " -n // $Format: "echo \"$ProjectVersion$ ($ProjectDate$)\""$ echo "Release1.3.2 (Thu, 04 Apr 2002 12:46:38 +0200)" echo " Simulation script" echo echo "--------------------------------------------------------------------------" //- include default definitions include defaults.g //- include Purkinje cell constants include Purk_const //- cell path of cell to simulate str cellpath = "/Purkinje" //- cell that is read from pattern file include cell.g //- set default output rate int outputRate = 10 //- set default chanmode for solver : normalized int iChanMode = 5 //- set default mode : in vitro int iVVMode = 0 //- set default for current : current clamp on int iCurrentMode = 1 //- in vivo : parallel cell firing rate float phertz = 25 //- in vivo : basket cell firing rate float ihertz = 1 //- speed of climbing fiber volley (in sec) float delay = 0.00020 //- strength of climging fiber synapses float strength = 1.0 //- speed of climbing fiber volley (in steps == delay / dt) //- this variable is set later on when dt is defined in an other module int delaysteps = 0.00020 / 1 //! The tabchannels need an update when changing from //! little-endian to big-endian. I don't see a way to figure this out from //! the script level. I used the hosttype in the HOSTTYPE shell variable as a //! guideline for an update of the tabchannels, but that didn't work on all //! systems. //- include the utility module, it is needed by multiple others modules, //- but since I do not like multiple includes, I include it here. include utility.g //- include the config module include config.g //- include the script for saving the tabchannels include Purk_chansave.g //- default we do not update the config file int bUpdateConfig = 0 // determine the hosttype for the config file //str confighost = {ConfigHostType {cellfile} {cellpath}} // if the config file does not correspond with OS //if ( {getenv HOSTTYPE} != confighost ) // give diagnostics // echo Config file created on {confighost}, // echo now working on {getenv HOSTTYPE}. // ensure that all elements are made in the library // ce /library // make prototypes of channels // make_Purkinje_chans // remember to update the config file // bUpdateConfig = 1 // else we inform the user of cpu format //else // give diagnostics //echo Config file created on {getenv HOSTTYPE} system, //echo assuming byte order is correct //end /* userprefs is for loading the preferred set of prototypes into ** the library and assigning new values to the defaults. ** A customised copy of userprefs.g usually lives in the local ** directory where the simulation is going to be run from */ //- include scripts to create the prototypes include Purk_chanload include Purk_cicomp include Purk_syn include info.g include bounds.g include config.g include control.g include xgraph.g include xcell.g //- ensure that all elements are made in the library ce /library //- make prototypes of channels and synapses make_Purkinje_chans make_Purkinje_syns //- set the firing frequencies at the library level //- this forces the hsolve object to reserve space for these fields setfield /library/GABA frequency {ihertz} setfield /library/non_NMDA frequency {phertz} //- add fields to the library elements to respect the vivo / vitro mode addfield /library/GABA freqmode -description "frequency operation mode" addfield /library/non_NMDA freqmode -description "frequency operation mode" //- set the added fields to the current vivo/vitro mode setfield /library/GABA freqmode {iVVMode} setfield /library/non_NMDA freqmode {iVVMode} //- add fields to distinguish between asynchronous inhibition and excitation //- and synchronous activation addfield /library/GABA synmode -description "synaptic mode" addfield /library/non_NMDA synmode -description "synaptic mode" addfield /library/GABA2 synmode -description "synaptic mode" addfield /library/non_NMDA2 synmode -description "synaptic mode" //- set field to "in" for asynchronous inhibition //! normally the stellate synapses setfield /library/GABA synmode "in" //- set field to "ex" for asynchronous excitation //! normally the parallel fiber synapses setfield /library/non_NMDA synmode "ex" //- set field for synchronous activation //! normally the basket axon synapses setfield /library/GABA2 synmode "synchro" //! normally the climbing fiber setfield /library/non_NMDA2 synmode "synchro" //- make prototypes of compartements and spines make_Purkinje_comps make_Purkinje_spines //- read cell data from .p file readcell {cellfile} {cellpath} // if the config file needs updating //if (bUpdateConfig) // update the config file // ConfigWrite {cellfile} {cellpath} //end //- read configuration file ConfigRead {cellfile} {cellpath} //- initialize actions ActionsInit //- initialize boundaries BoundsInit "bounds.txt" //- set simulation clocks int i, j for (i = 0; i <= 8; i = i + 1) setclock {i} {dt} end //- set the output clock setclock 9 {dt * outputRate} //- set clock for refresh elements setclock 10 {dt * 239} //- set delay in steps for climbing fiber delaysteps = {delay / dt} //- setup the hines solver echo preparing hines solver {getdate} ce {cellpath} create hsolve solve //- We change to current element solve and then set the fields of the parent //- (solve) to get around a bug in the "." parsing of genesis ce solve setfield . \ path "../##[][TYPE=compartment]" \ comptmode 1 \ chanmode {iChanMode} \ calcmode 0 /* setfield . \ path "../b#[][TYPE=compartment],../main[][TYPE=compartment]" \ comptmode 1 \ chanmode {iChanMode} \ calcmode 0 */ //- create all info widgets InfoCreate //- create all settings widgets SettingsCreate //- setup the solver with all messages from the settings call /Purkinje/solve SETUP //- Use method to Crank-Nicolson setmethod 11 // setup actions //ActionsSetup //- go back to simulation element ce /Purkinje //- set colorscale xcolorscale rainbow3 //- create the xcell widget XCellCreate //- create the graph widget XGraphCreate //- set default state XCellReset //- reset graph XGraphReset //- create the control panel ControlPanelCreate //- reset simulation PurkinjeReset //- to further initialize all elements (e.g. colors of xcell element) //- we do one step in the simulation and then a reset step 1 //- update the firing frequencies for stellate and parallel fibers UpdateFrequencies //- reset all elements reset //! now it's up to the user to do simulations...