prcs: Producing diffs from 0.39 to ActivePassive.2. Index: 0.39/Purk2M9s.p.config --- 0.39/Purk2M9s.p.config Mon, 25 Jan 1999 16:30:02 +0100 hugo (purkinje/5_Purk2M9s.p 1.1 664) +++ ActivePassive.2/Purk2M9s.p.config Wed, 03 Nov 1999 15:25:22 +0100 hugo (purkinje/5_Purk2M9s.p 1.2 664) @@ -3,3 +3,4 @@ iSpines 1474 xCellPath /Purkinje/soma[TYPE=compartment],/Purkinje/main[][TYPE=compartment],/Purkinje/b#[][TYPE=compartment] xCellElements 1600 +condDescr Purk2M9s.p.condDescr Index: 0.39/psmall.p.config --- 0.39/psmall.p.config Mon, 25 Jan 1999 16:30:02 +0100 hugo (purkinje/7_psmall.p.c 1.1 664) +++ ActivePassive.2/psmall.p.config Wed, 03 Nov 1999 15:25:22 +0100 hugo (purkinje/7_psmall.p.c 1.2 664) @@ -3,3 +3,4 @@ iSpines 142 xCellPath /Purkinje/soma[TYPE=compartment],/Purkinje/main[][TYPE=compartment],/Purkinje/b#[][TYPE=compartment] xCellElements 176 +condDescr psmall.p.condDescr Index: 0.39/settings.g --- 0.39/settings.g Sat, 30 Oct 1999 01:44:13 +0200 hugo (purkinje/23_settings.g 1.8.2.2 644) +++ ActivePassive.2/settings.g Wed, 03 Nov 1999 15:25:22 +0100 hugo (purkinje/23_settings.g 1.8.2.4 644) @@ -36,6 +36,137 @@ /// +/// SH: SettingsActivePassive +/// +/// PA: model.: 0 : passive model +/// 1 : active model +/// +/// DE: Switch active/passive model +/// Uses tabchan file giving maximal conductances that is registered in the +/// config element. +/// Depends on the fact that the number of tabchan element in the +/// descriptor file is the same as the number of tabchan elements in the +/// cell in {cellpath} +/// + +function SettingsActivePassive(model) + +int model + + //- give diag's + + echo "Updating tabchannels..." -n + + //- if going to passive model + + if ( model == 0) + + //- loop over all tabchannels + + str tabchan + + foreach tabchan ( { el {cellpath}/##[][TYPE=tabchannel] } ) + + //- HGET values from solver + + call solve HGET {tabchan} + + //- set maximal conductance to zero + + setfield {tabchan} Gbar 0.0 + + //- HPUT the value into the solver + + call solve HPUT {tabchan} + end + + //- if going to active model + + elif ( model == 1) + + //v line from file + + str argline + + //- get filename + + str filename = {getfield /config condDescr} + + //- open the tabchan max conductance file + + openfile {filename} r + + //- read count from file + + int iFileCount = {readfile {filename}} + + //- loop over all tabchannels + + int iCount = 0 + + str tabchan + + foreach tabchan ( { el {cellpath}/##[][TYPE=tabchannel] } ) + + //- HGET values from solver + + call solve HGET {tabchan} + + //- read line with element field + + argline = {readfile {filename} -line} + + //- set read field of read element to read value + + setfield \ + {getarg {arglist {argline}} -arg 1} \ + {getarg {arglist {argline}} -arg 2} \ + {getarg {arglist {argline}} -arg 3} + + //- HPUT the value into the solver + + call solve HPUT {tabchan} + + //- increment count + + iCount = {iCount + 1} + end + + //- close the tabchan file + + closefile {filename} + + //- sanity check on actual count and file count + + //t this can still fail if the number of channels in the file + //t is less than the number of channels in the cell. + //t genesis doesn't provide a eof check... + + if ( {iFileCount} != {iCount} ) + + echo "Warning : Number of channels in channel" -n + echo "description file is different from" + echo "Warning : number of channels in simulated cell." + echo "Warning : read("{iCount}"), " -n + echo "file gives ("{iFileCount}")." + end + + //- else somebody messed up + + else + + //- give diag's + + echo "Somebody messed up the code" + end + + //- end diag's + + echo "done" +end + + +/// /// SH: SettingsBasket /// /// DE: display and handle settings for basket firing @@ -1709,6 +1840,60 @@ //- create the form for vivo settings SettingsVivoCreate /settings/ +end + + +/// +/// SH: UpdateTabChanMaxG +/// +/// PA: filename.: file to write conductance table to +/// +/// DE: Update tabchans maximal conductances +/// Write maximal conductances for all tabchans in {cellpath} to file +/// given by {filename}, preceded by the element name and Gbar. Order of +/// writing is determined by genesis expanding a wildcard argument. +/// +/// NO: This function should modified to be a one parameter general purpose +/// routine. +/// + +function UpdateTabChanMaxG(filename) + +str filename + + //- open the file for writing + + openfile {filename} w + + //- count tabchans + + int iCount = 0 + + str tabchan + + foreach tabchan ( { el /Purkinje/##[][TYPE=tabchannel] } ) + + iCount = {iCount + 1} + end + + //- write count to file + + writefile {filename} {iCount} + + //- loop over all tabchans + + str tabchan + + foreach tabchan ( { el {cellpath}/##[][TYPE=tabchannel] } ) + + //- write line to file + + writefile {filename} {tabchan}" Gbar "{getfield {tabchan} Gbar} + end + + //- close file + + closefile {filename} end Index: 0.39/makeconfig.g --- 0.39/makeconfig.g Fri, 26 Feb 1999 22:28:35 +0100 hugo (purkinje/27_makeconfig 1.3 644) +++ ActivePassive.2/makeconfig.g Wed, 03 Nov 1999 15:25:22 +0100 hugo (purkinje/27_makeconfig 1.3.1.1 644) @@ -56,6 +56,10 @@ int iChanMode = 5 +//- set default model : active model + +int iActivePassive = 1 + //- set default mode : in vitro int iVVMode = 0 Index: 0.39/control.g --- 0.39/control.g Fri, 29 Oct 1999 21:02:10 +0200 hugo (purkinje/31_control.g 1.14.1.1.2.1 664) +++ ActivePassive.2/control.g Wed, 03 Nov 1999 15:25:22 +0100 hugo (purkinje/31_control.g 1.14.1.1.2.3 664) @@ -352,6 +352,7 @@ /// /// PA: mode..: 1 change in vivo / vitro mode /// 2 change in current injection +/// 3 change active - passive model /// /// DE: toggle the simulation mode /// reflects changes in the toggle buttons @@ -447,13 +448,13 @@ echo "Switching off current injection" - //- switch off current mode + //- remember we switched off current mode iCurrentMode = 0 //- switch off pulse generator - SettingsIClampSwitch + SettingsIClampSwitch 0 //- else (we are not in current injection mode) @@ -463,13 +464,60 @@ echo "Switching on current injection" - //- switch on current mode + //- remember we switched on current mode iCurrentMode = 1 //- switch on pulse generator - SettingsIClampSwitch + SettingsIClampSwitch 1 + end + + //- else if we have a change in active/passive model + + elif (mode == 3) + + //- if we are in current injection mode + + if (iActivePassive == 1) + + //- give a discriptive message + + echo "Switching to passive model" + + //- remember we switched to passive model + + iActivePassive = 0 + + //- switch to passive model + + SettingsActivePassive 0 + + //- update label + + setfield /control/activePassiveLabel \ + title "Passive" + + //- else (we are not in current injection mode) + + else + + //- give a discriptive message + + echo "Switching to active model" + + //- remember we switched to active model + + iActivePassive = 1 + + //- switch to active model + + SettingsActivePassive 1 + + //- update label + + setfield /control/activePassiveLabel \ + title "Active" end //- else no mode is possible @@ -573,7 +621,7 @@ //- create form for control panel - create xform /control [0, 490, 300, 340] + create xform /control [0, 490, 300, 360] //- make it the current element @@ -670,9 +718,33 @@ create xlabel mode \ -label "Simulation mode" + //- create the active/passive button + + create xbutton activePassive \ + -wgeom 30% \ + -title "Toggle" \ + -script "ToggleMode 3" + + //- create the active/passive label + + create xlabel activePassiveLabel \ + -xgeom 0:last.right \ + -ygeom 2:mode \ + -wgeom 40% \ + -title "Active" + + //- create a no active/passive settings label + + create xlabel noactivePassiveSettings \ + -xgeom 0:activePassiveLabel \ + -ygeom 2:mode \ + -wgeom 30% \ + -title "No settings" + //- create the vivo/vitro button create xbutton vivoVitro \ + -ygeom 0:activePassive \ -wgeom 30% \ -title "Toggle" \ -script "ToggleMode 1" @@ -681,7 +753,7 @@ create xlabel vivoVitroLabel \ -xgeom 0:last.right \ - -ygeom 2:mode \ + -ygeom 2:activePassive \ -wgeom 40% \ -title "In vitro" @@ -689,7 +761,7 @@ create xbutton vivoSettings \ -xgeom 0:last.right \ - -ygeom 0:mode \ + -ygeom 0:activePassive \ -wgeom 30% \ -title "Settings" \ -script "SettingsVivo" @@ -702,7 +774,7 @@ create xlabel noVitroSettings \ -xgeom 0:vivoVitroLabel \ - -ygeom 2:mode \ + -ygeom 2:activePassive \ -wgeom 30% \ -title "No settings" Index: 0.39/config.g --- 0.39/config.g Fri, 29 Oct 1999 21:02:10 +0200 hugo (purkinje/32_config.g 1.7 644) +++ ActivePassive.2/config.g Wed, 03 Nov 1999 15:25:22 +0100 hugo (purkinje/32_config.g 1.8 644) @@ -30,6 +30,9 @@ include_config = 1 +//include settings.g + + /// /// SH: ConfigFilename /// @@ -143,7 +146,8 @@ //{ //1 first declare locals for all config settings //2 determine the value for all config settings - //3 write all locals to config file + //3 resolve dependencies + //4 write all locals to config file //} //- create a filename for the config file @@ -174,6 +178,10 @@ int xCellElements = 0 + //v file with tabchan maximal conductances + + str condDescr + //2 determine the value for all config settings //- determine type of host @@ -216,7 +224,21 @@ end - //3 write all locals to config file + //- set the conductance file + + condDescr = { {cell} @ ".condDescr" } + + //3 resolve dependencies + + //- give diagnostics + + echo "Creating tabchannel table ("{condDescr}")" + + //- update tabchans maximal conductances + + callfunc UpdateTabChanMaxG {condDescr} + + //4 write all locals to config file //- open config file for output @@ -242,6 +264,10 @@ writefile {filename} "xCellElements" {xCellElements} + //- write tabchan filename + + writefile {filename} "condDescr" {condDescr} + //- close config file closefile {filename} @@ -414,6 +440,10 @@ int xCellElements + //v file with tabchan maximal conductances + + str condDescr + //2 read all locals from config file //- open the config file @@ -484,6 +514,14 @@ xCellElements = {getarg {arglist {argline}} -arg 2} + //- read line with conductances + + argline = {readfile {filename} -line} + + //- set filename for conductances + + condDescr = {getarg {arglist {argline}} -arg 2} + //3 set the value for all config settings //- create a configuration element @@ -515,6 +553,11 @@ addfield /config \ xCellElements -description "Number of elements in xcell" + //- add a field for max conductances of tabchans + + addfield /config \ + condDescr -description "Filename with tabchan max conductance" + //- set the config values setfield /config \ @@ -522,7 +565,8 @@ hostType {hostType} \ iSpines {iSpines} \ xCellPath {xCellPath} \ - xCellElements {xCellElements} + xCellElements {xCellElements} \ + condDescr {condDescr} //- close the config file Index: 0.39/TUTORIAL.g --- 0.39/TUTORIAL.g Thu, 01 Apr 1999 16:49:42 +0200 hugo (purkinje/36_TUTORIAL.g 1.1.1.3.1.6 640) +++ ActivePassive.2/TUTORIAL.g Tue, 02 Nov 1999 23:29:09 +0100 hugo (purkinje/36_TUTORIAL.g 1.1.1.3.1.6.2.1 640) @@ -55,6 +55,10 @@ int iChanMode = 5 +//- set default model : active model + +int iActivePassive = 1 + //- set default mode : in vitro int iVVMode = 0