prcs: Producing diffs from 0.55 to AnyChanMode.2.
Index: 0.55/xgraph.g
--- 0.55/xgraph.g Fri, 29 Oct 1999 21:02:10 +0200 hugo (purkinje/20_xgraph.g 1.13.1.1.1.1.2.1 644)
+++ AnyChanMode.2/xgraph.g Fri, 10 Mar 2000 16:16:46 +0100 hugo (purkinje/20_xgraph.g 1.13.1.1.1.1.2.1.1.1 644)
@@ -349,7 +349,7 @@
//- if flags say compartmental output
- if (xcOutputFlags == 1)
+ if (xcOutputFlags == 1 || xcOutputFlags == 8)
//- if the specified element exists
@@ -361,16 +361,31 @@
"source is '(compartment)', " \
"value is '"{xcOutputValue}"'."
- //- add message from solver to graph
+ //- if chanmode is less than 2
+
+ if (iChanMode < 2)
- addmsg {path}/solve /xgraphs/graph \
- PLOT \
- {findsolvefield \
- {path}/solve \
- {comp} \
- {xcOutputValue}} \
- *{plotTitle} \
- *{color}
+ //- add message from element to graph
+
+ addmsg {comp} /xgraphs/graph \
+ PLOT \
+ {xcOutputValue} \
+ *{plotTitle} \
+ *{color}
+ //- else
+
+ else
+ //- add message from solver to graph
+
+ addmsg {path}/solve /xgraphs/graph \
+ PLOT \
+ {findsolvefield \
+ {path}/solve \
+ {comp} \
+ {xcOutputValue}} \
+ *{plotTitle} \
+ *{color}
+ end
//echo {comp} {compTail} {index}
//echo {plotTitle}"_"{xcOutputValue}
@@ -433,16 +448,32 @@
"source is '"{source}"', " \
"value is '"{xcOutputValue}"'."
- //- add message from solver to graph
+ //- if chanmode is less than 2
- addmsg {path}/solve /xgraphs/graph \
- PLOT \
- {findsolvefield \
- {path}/solve \
- {path}/{source} \
- {xcOutputValue}} \
- *{plotTitle} \
- *{color}
+ if (iChanMode < 2)
+
+ //- add message from element to graph
+
+ addmsg {path}/{source} /xgraphs/graph \
+ PLOT \
+ {xcOutputValue} \
+ *{plotTitle} \
+ *{color}
+
+ //- else
+
+ else
+ //- add message from solver to graph
+
+ addmsg {path}/solve /xgraphs/graph \
+ PLOT \
+ {findsolvefield \
+ {path}/solve \
+ {path}/{source} \
+ {xcOutputValue}} \
+ *{plotTitle} \
+ *{color}
+ end
//- else inform the user
@@ -506,16 +537,32 @@
"source is '"{spineHead}{source}"', " \
"value is '"{xcOutputValue}"'."
- //- add message from solver to graph
+ //- if chanmode is less than 2
+
+ if (iChanMode < 2)
- addmsg {path}/solve /xgraphs/graph \
- PLOT \
- {findsolvefield \
- {path}/solve \
- {spineHead}{source} \
- {xcOutputValue}} \
- *{plotTitle} \
- *{color}
+ //- add message from element to graph
+
+ addmsg {spineHead}{source} /xgraphs/graph \
+ PLOT \
+ {xcOutputValue} \
+ *{plotTitle} \
+ *{color}
+
+ //- else
+
+ else
+ //- add message from solver to graph
+
+ addmsg {path}/solve /xgraphs/graph \
+ PLOT \
+ {findsolvefield \
+ {path}/solve \
+ {spineHead}{source} \
+ {xcOutputValue}} \
+ *{plotTitle} \
+ *{color}
+ end
//- else if we can find a climbing fiber input
@@ -527,16 +574,32 @@
"source is 'climb', " \
"value is '"{xcOutputValue}"'."
- //- add message from solver to graph
+ //- if chanmode is less than 2
+
+ if (iChanMode < 2)
+
+ //- add message from element to graph
- addmsg {path}/solve /xgraphs/graph \
- PLOT \
- {findsolvefield \
- {path}/solve \
- {comp}/climb \
- {xcOutputValue}} \
- *{plotTitle} \
- *{color}
+ addmsg {comp}/climb /xgraphs/graph \
+ PLOT \
+ {xcOutputValue} \
+ *{plotTitle} \
+ *{color}
+
+ //- else
+
+ else
+ //- add message from solver to graph
+
+ addmsg {path}/solve /xgraphs/graph \
+ PLOT \
+ {findsolvefield \
+ {path}/solve \
+ {comp}/climb \
+ {xcOutputValue}} \
+ *{plotTitle} \
+ *{color}
+ end
//- else inform the user
@@ -567,16 +630,32 @@
"source is 'stell', " \
"value is '"{xcOutputValue}"'."
- //- add message from solver to graph
+ //- if chanmode is less than 2
+
+ if (iChanMode < 2)
- addmsg {path}/solve /xgraphs/graph \
- PLOT \
- {findsolvefield \
- {path}/solve \
- {comp}/stell \
- {xcOutputValue}} \
- *{plotTitle} \
- *{color}
+ //- add message from element to graph
+
+ addmsg {comp}/stell /xgraphs/graph \
+ PLOT \
+ {xcOutputValue} \
+ *{plotTitle} \
+ *{color}
+
+ //- else
+
+ else
+ //- add message from solver to graph
+
+ addmsg {path}/solve /xgraphs/graph \
+ PLOT \
+ {findsolvefield \
+ {path}/solve \
+ {comp}/stell \
+ {xcOutputValue}} \
+ *{plotTitle} \
+ *{color}
+ end
//- else if we can find a stellate 1 cell
@@ -588,16 +667,32 @@
"source is 'stell1', " \
"value is '"{xcOutputValue}"'."
- //- add message from solver to graph
+ //- if chanmode is less than 2
- addmsg {path}/solve /xgraphs/graph \
- PLOT \
- {findsolvefield \
- {path}/solve \
- {comp}/stell1 \
- {xcOutputValue}} \
- *{plotTitle} \
- *{color}
+ if (iChanMode < 2)
+
+ //- add message from element to graph
+
+ addmsg {comp}/stell1 /xgraphs/graph \
+ PLOT \
+ {xcOutputValue} \
+ *{plotTitle} \
+ *{color}
+
+ //- else
+
+ else
+ //- add message from solver to graph
+
+ addmsg {path}/solve /xgraphs/graph \
+ PLOT \
+ {findsolvefield \
+ {path}/solve \
+ {comp}/stell1 \
+ {xcOutputValue}} \
+ *{plotTitle} \
+ *{color}
+ end
//- else if we can find a basket cell
@@ -609,16 +704,32 @@
"source is 'basket', " \
"value is '"{xcOutputValue}"'."
- //- add message from solver to graph
+ //- if chanmode is less than 2
+
+ if (iChanMode < 2)
- addmsg {path}/solve /xgraphs/graph \
- PLOT \
- {findsolvefield \
- {path}/solve \
- {comp}/basket \
- {xcOutputValue}} \
- *{plotTitle} \
- *{color}
+ //- add message from element to graph
+
+ addmsg {comp}/basket /xgraphs/graph \
+ PLOT \
+ {xcOutputValue} \
+ *{plotTitle} \
+ *{color}
+
+ //- else
+
+ else
+ //- add message from solver to graph
+
+ addmsg {path}/solve /xgraphs/graph \
+ PLOT \
+ {findsolvefield \
+ {path}/solve \
+ {comp}/basket \
+ {xcOutputValue}} \
+ *{plotTitle} \
+ *{color}
+ end
//- else inform the user
@@ -649,16 +760,32 @@
"source is '"{xcOutputSource}"', " \
"value is '"{xcOutputValue}"'."
- //- add message from solver to graph
+ //- if chanmode is less than 2
- addmsg {path}/solve /xgraphs/graph \
- PLOT \
- {findsolvefield \
- {path}/solve \
- {comp}/{xcOutputSource} \
- {xcOutputValue}} \
- *{plotTitle} \
- *{color}
+ if (iChanMode < 2)
+
+ //- add message from element to graph
+
+ addmsg {comp}/{xcOutputSource} /xgraphs/graph \
+ PLOT \
+ {xcOutputValue} \
+ *{plotTitle} \
+ *{color}
+
+ //- else
+
+ else
+ //- add message from solver to graph
+
+ addmsg {path}/solve /xgraphs/graph \
+ PLOT \
+ {findsolvefield \
+ {path}/solve \
+ {comp}/{xcOutputSource} \
+ {xcOutputValue}} \
+ *{plotTitle} \
+ *{color}
+ end
//echo {comp} {compTail} {index}
//echo {plotTitle}"_"{xcOutputValue}
@@ -1471,6 +1598,15 @@
setfield /xgraphs/graph \
title {xcOutputValue}
+
+ //- if output is comp. Im
+
+ elif (xcOutputFlags == 8)
+
+ //- set title
+
+ setfield /xgraphs/graph \
+ title "Compartmental membrane current"
end
Index: 0.55/xcell.g
--- 0.55/xcell.g Wed, 29 Dec 1999 21:02:32 +0100 hugo (purkinje/21_xcell.g 1.1.1.6.1.5.2.6.1.1 644)
+++ AnyChanMode.2/xcell.g Fri, 10 Mar 2000 16:16:46 +0100 hugo (purkinje/21_xcell.g 1.1.1.6.1.5.2.6.1.1.1.1 644)
@@ -523,22 +523,58 @@
if (state)
- //- switch to chanmode 5
+ //- if chanmode is 4
- iChanMode = 5
+ if (iChanMode == 4)
- setfield {cellpath}/solve \
- chanmode {iChanMode}
+ //- switch to chanmode 5
+
+ iChanMode = 5
+
+ setfield {cellpath}/solve \
+ chanmode {iChanMode}
+
+ //- else if chanmode 0,1
+
+ elif (iChanMode == 0 || iChanMode == 1)
+
+ //- switch on Im computation
+
+ setfield {cellpath}/solve \
+ computeIm 1
+
+ //- reset simulation
+
+ reset
+ end
//- else
else
- //- switch to chanmode 4
+ //- if chanmode is 5
+
+ if (iChanMode == 5)
+
+ //- switch to chanmode 4
+
+ iChanMode = 4
+
+ setfield {cellpath}/solve \
+ chanmode {iChanMode}
+
+ //- else if chanmode 0,1
+
+ elif (iChanMode == 0 || iChanMode == 1)
+
+ //- switch off Im computation
+
+ setfield {cellpath}/solve \
+ computeIm 0
- iChanMode = 4
+ //- reset simulation
- setfield {cellpath}/solve \
- chanmode {iChanMode}
+ reset
+ end
end
//- get name for boundary element
@@ -637,35 +673,73 @@
// break
// end
- //- loop over all elements in the xcell object
+ //- if chanmode is less than 2
- str element
+ if (iChanMode < 2)
- foreach element ( { el { wPath } } )
+ //- loop over all elements in the xcell object
- //- if the source elements exists
+ str element
- if ( {exists {element}/{source}} )
+ foreach element ( { el { wPath } } )
- //echo Exists : {element}/{source}
+ //- if the source elements exists
- //- find solve field and add the message
+ if ( {exists {element}/{source}} )
- addmsg {cellpath}/solve /xcell/draw/xcell1 \
- COLOR {findsolvefield \
- {cellpath}/solve \
- {element}/{source} \
- {value}}
+ //echo Exists : {element}/{source}
- //- else the element does not exist
+ //- find solve field and add the message
- else
+ addmsg {element}/{source} /xcell/draw/xcell1 \
+ COLOR {value}
+
+ //- else the element does not exist
+
+ else
- //echo Non existent : {element}/{source}
+ //echo Non existent : {element}/{source}
- //- add a dummy message
+ //- add a dummy message
- addmsg /config /xcell/draw/xcell1 COLOR z
+ addmsg /config /xcell/draw/xcell1 COLOR z
+ end
+ end
+
+ //- else
+
+ else
+
+ //- loop over all elements in the xcell object
+
+ str element
+
+ foreach element ( { el { wPath } } )
+
+ //- if the source elements exists
+
+ if ( {exists {element}/{source}} )
+
+ //echo Exists : {element}/{source}
+
+ //- find solve field and add the message
+
+ addmsg {cellpath}/solve /xcell/draw/xcell1 \
+ COLOR {findsolvefield \
+ {cellpath}/solve \
+ {element}/{source} \
+ {value}}
+
+ //- else the element does not exist
+
+ else
+
+ //echo Non existent : {element}/{source}
+
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
+ end
end
end
@@ -703,35 +777,73 @@
echo "Setting up messages to xcell for (compartments), "{value}
- //- loop over all elements in the xcell object
+ //- if chanmode is less than 2
- str element
+ if (iChanMode < 2)
- foreach element ( { el { wPath } } )
+ //- loop over all elements in the xcell object
- //- if the source elements exists
+ str element
- if ( {exists {element}} )
+ foreach element ( { el { wPath } } )
- //echo Exists : {element}
+ //- if the source elements exists
- //- find solve field and add the message
+ if ( {exists {element}} )
- addmsg {cellpath}/solve /xcell/draw/xcell1 \
- COLOR {findsolvefield \
- {cellpath}/solve \
- {element} \
- {value}}
+ //echo Exists : {element}
- //- else the element does not exist
+ //- find solve field and add the message
- else
+ addmsg {element} /xcell/draw/xcell1 \
+ COLOR {value}
+
+ //- else the element does not exist
- //echo Non existent : {element}
+ else
- //- add a dummy message
+ //echo Non existent : {element}
- addmsg /config /xcell/draw/xcell1 COLOR z
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
+ end
+ end
+
+ //- else
+
+ else
+
+ //- loop over all elements in the xcell object
+
+ str element
+
+ foreach element ( { el { wPath } } )
+
+ //- if the source elements exists
+
+ if ( {exists {element}} )
+
+ //echo Exists : {element}
+
+ //- find solve field and add the message
+
+ addmsg {cellpath}/solve /xcell/draw/xcell1 \
+ COLOR {findsolvefield \
+ {cellpath}/solve \
+ {element} \
+ {value}}
+
+ //- else the element does not exist
+
+ else
+
+ //echo Non existent : {element}
+
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
+ end
end
end
@@ -770,75 +882,156 @@
echo "Setting up messages to xcell for " \
{source}", "{value}
- //- loop over all elements in the xcell object
+ //- if chanmode is less than 2
- str element
+ if (iChanMode < 2)
- foreach element ( { el { wPath } } )
+ //- loop over all elements in the xcell object
- //- get the spine that gives messages to the element
+ str element
- str spine = {getmsg {element} -outgoing -destination 7}
+ foreach element ( { el { wPath } } )
- //- get tail of spine
+ //- get the spine that gives messages to the element
- str spineTail = {getpath {spine} -tail}
+ str spine = {getmsg {element} -outgoing -destination 7}
- //- get head of spine for use with solver's flat space
+ //- get tail of spine
- str spineHead = {getpath {spine} -head}
+ str spineTail = {getpath {spine} -tail}
- //- if we are handling a spine
+ //- get head of spine for use with solver's flat space
- if ( {strncmp {spineTail} "spine" 5} == 0 )
+ str spineHead = {getpath {spine} -head}
- //- default index is zero
+ //- if we are handling a spine
- source = "head[0]/par"
+ if ( {strncmp {spineTail} "spine" 5} == 0 )
- //- if an index is available
+ //- default index is zero
- if ( {strlen {spineTail}} != 5 )
+ source = "head[0]/par"
- //- get index of synapse
+ //- if an index is available
- int synapseIndex \
- = {substring \
- {spineTail} \
- 6 \
- {{strlen {spineTail}} - 1}}
+ if ( {strlen {spineTail}} != 5 )
- //- make source string with index
+ //- get index of synapse
- source = "head[" @ {synapseIndex} @ "]/par"
+ int synapseIndex \
+ = {substring \
+ {spineTail} \
+ 6 \
+ {{strlen {spineTail}} \
+ - 1}}
+
+ //- make source string with index
+
+ source = {"head[" \
+ @ {synapseIndex} \
+ @ "]/par"}
+ end
+
+ //- find solve field and add the message
+
+ addmsg {spineHead}{source} /xcell/draw/xcell1 \
+ COLOR {value}
+
+ //- else if we can find a climbing fiber input
+
+ elif ( {exists {element}/climb } )
+
+ //- find solve field and add the message
+
+ addmsg {element}/climb /xcell/draw/xcell1 \
+ COLOR {value}
+
+ //- else the element does not exist
+
+ else
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
end
+ end
+
+ //- else
+
+ else
- //- find solve field and add the message
+ //- loop over all elements in the xcell object
- addmsg {cellpath}/solve /xcell/draw/xcell1 \
- COLOR {findsolvefield \
- {cellpath}/solve \
- {spineHead}{source} \
- {value}}
+ str element
- //- else if we can find a climbing fiber input
+ foreach element ( { el { wPath } } )
- elif ( {exists {element}/climb } )
+ //- get the spine that gives messages to the element
- //- find solve field and add the message
+ str spine = {getmsg {element} -outgoing -destination 7}
- addmsg {cellpath}/solve /xcell/draw/xcell1 \
- COLOR {findsolvefield \
- {cellpath}/solve \
- {element}/climb \
- {value}}
+ //- get tail of spine
- //- else the element does not exist
+ str spineTail = {getpath {spine} -tail}
- else
- //- add a dummy message
+ //- get head of spine for use with solver's flat space
+
+ str spineHead = {getpath {spine} -head}
+
+ //- if we are handling a spine
+
+ if ( {strncmp {spineTail} "spine" 5} == 0 )
+
+ //- default index is zero
+
+ source = "head[0]/par"
+
+ //- if an index is available
+
+ if ( {strlen {spineTail}} != 5 )
+
+ //- get index of synapse
+
+ int synapseIndex \
+ = {substring \
+ {spineTail} \
+ 6 \
+ {{strlen {spineTail}} \
+ - 1}}
+
+ //- make source string with index
+
+ source = {"head[" \
+ @ {synapseIndex} \
+ @ "]/par"}
+ end
+
+ //- find solve field and add the message
+
+ addmsg {cellpath}/solve /xcell/draw/xcell1 \
+ COLOR {findsolvefield \
+ {cellpath}/solve \
+ {spineHead}{source} \
+ {value}}
+
+ //- else if we can find a climbing fiber input
+
+ elif ( {exists {element}/climb } )
+
+ //- find solve field and add the message
+
+ addmsg {cellpath}/solve /xcell/draw/xcell1 \
+ COLOR {findsolvefield \
+ {cellpath}/solve \
+ {element}/climb \
+ {value}}
- addmsg /config /xcell/draw/xcell1 COLOR z
+ //- else the element does not exist
+
+ else
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
+ end
end
end
@@ -877,54 +1070,104 @@
echo "Setting up messages to xcell for " \
{source}", "{value}
- //- loop over all elements in the xcell object
+ //- if chanmode is less than 2
- str element
+ if (iChanMode < 2)
- foreach element ( { el { wPath } } )
+ //- loop over all elements in the xcell object
- //- if we are handling a stellate cell
+ str element
- if ( {exists {element}/stell} )
+ foreach element ( { el { wPath } } )
- //- find solve field and add the message
+ //- if we are handling a stellate cell
- addmsg {cellpath}/solve /xcell/draw/xcell1 \
- COLOR {findsolvefield \
- {cellpath}/solve \
- {element}/stell \
- {value}}
+ if ( {exists {element}/stell} )
- //- else if we can find a stellate 1 cell
+ //- find solve field and add the message
- elif ( {exists {element}/stell1 } )
+ addmsg {element}/stell /xcell/draw/xcell1 \
+ COLOR {value}
- //- find solve field and add the message
+ //- else if we can find a stellate 1 cell
- addmsg {cellpath}/solve /xcell/draw/xcell1 \
- COLOR {findsolvefield \
- {cellpath}/solve \
- {element}/stell1 \
- {value}}
+ elif ( {exists {element}/stell1 } )
- //- else if we can find a basket cell
+ //- find solve field and add the message
- elif ( {exists {element}/basket } )
+ addmsg {element}/stell1 /xcell/draw/xcell1 \
+ COLOR {value}
- //- find solve field and add the message
+ //- else if we can find a basket cell
- addmsg {cellpath}/solve /xcell/draw/xcell1 \
- COLOR {findsolvefield \
- {cellpath}/solve \
- {element}/basket \
- {value}}
+ elif ( {exists {element}/basket } )
- //- else no inhibitory channel exists
+ //- find solve field and add the message
- else
- //- add a dummy message
+ addmsg {element}/basket /xcell/draw/xcell1 \
+ COLOR {value}
- addmsg /config /xcell/draw/xcell1 COLOR z
+ //- else no inhibitory channel exists
+
+ else
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
+ end
+ end
+
+ //- else
+
+ else
+ //- loop over all elements in the xcell object
+
+ str element
+
+ foreach element ( { el { wPath } } )
+
+ //- if we are handling a stellate cell
+
+ if ( {exists {element}/stell} )
+
+ //- find solve field and add the message
+
+ addmsg {cellpath}/solve /xcell/draw/xcell1 \
+ COLOR {findsolvefield \
+ {cellpath}/solve \
+ {element}/stell \
+ {value}}
+
+ //- else if we can find a stellate 1 cell
+
+ elif ( {exists {element}/stell1 } )
+
+ //- find solve field and add the message
+
+ addmsg {cellpath}/solve /xcell/draw/xcell1 \
+ COLOR {findsolvefield \
+ {cellpath}/solve \
+ {element}/stell1 \
+ {value}}
+
+ //- else if we can find a basket cell
+
+ elif ( {exists {element}/basket } )
+
+ //- find solve field and add the message
+
+ addmsg {cellpath}/solve /xcell/draw/xcell1 \
+ COLOR {findsolvefield \
+ {cellpath}/solve \
+ {element}/basket \
+ {value}}
+
+ //- else no inhibitory channel exists
+
+ else
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
+ end
end
end
@@ -963,65 +1206,134 @@
echo "Setting up spine compartment messages to xcell for " \
{source}", "{value}
- //- loop over all elements in the xcell object
+ //- if chanmode is less than 2
- str element
+ if (iChanMode < 2)
+
+ //- loop over all elements in the xcell object
- foreach element ( { el { wPath } } )
+ str element
- //- get the spine that gives messages to the element
+ foreach element ( { el { wPath } } )
- str spine = {getmsg {element} -outgoing -destination 7}
+ //- get the spine that gives messages to the element
- //- get tail of spine
+ str spine = {getmsg {element} -outgoing -destination 7}
- str spineTail = {getpath {spine} -tail}
+ //- get tail of spine
- //- get head of spine for use with solver's flat space
+ str spineTail = {getpath {spine} -tail}
- str spineHead = {getpath {spine} -head}
+ //- get head of spine for use with solver's flat space
- //- if we are handling a spine
+ str spineHead = {getpath {spine} -head}
- if ( {strncmp {spineTail} "spine" 5} == 0 )
+ //- if we are handling a spine
- //- default index is zero
+ if ( {strncmp {spineTail} "spine" 5} == 0 )
- source = "head[0]"
+ //- default index is zero
- //- if an index is available
+ source = "head[0]"
- if ( {strlen {spineTail}} != 5 )
+ //- if an index is available
- //- get index of synapse
+ if ( {strlen {spineTail}} != 5 )
- int synapseIndex \
- = {substring \
- {spineTail} \
- 6 \
- {{strlen {spineTail}} - 1}}
+ //- get index of synapse
- //- make source string with index
+ int synapseIndex \
+ = {substring \
+ {spineTail} \
+ 6 \
+ {{strlen {spineTail}} \
+ - 1}}
- source = "head[" @ {synapseIndex} @ "]"
+ //- make source string with index
+
+ source = "head[" @ {synapseIndex} @ "]"
+ end
+
+ //echo {spineHead}{source} {value}
+
+ //- find solve field and add the message
+
+ addmsg {spineHead}{source} /xcell/draw/xcell1 \
+ COLOR {value}
+
+ //- else the element does not exist
+
+ else
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
end
+ end
- //echo {spineHead}{source} {value}
+ //- else
- //- find solve field and add the message
+ else
+ //- loop over all elements in the xcell object
- addmsg {cellpath}/solve /xcell/draw/xcell1 \
- COLOR {findsolvefield \
- {cellpath}/solve \
- {spineHead}{source} \
- {value}}
+ str element
- //- else the element does not exist
+ foreach element ( { el { wPath } } )
- else
- //- add a dummy message
+ //- get the spine that gives messages to the element
+
+ str spine = {getmsg {element} -outgoing -destination 7}
+
+ //- get tail of spine
+
+ str spineTail = {getpath {spine} -tail}
+
+ //- get head of spine for use with solver's flat space
+
+ str spineHead = {getpath {spine} -head}
+
+ //- if we are handling a spine
- addmsg /config /xcell/draw/xcell1 COLOR z
+ if ( {strncmp {spineTail} "spine" 5} == 0 )
+
+ //- default index is zero
+
+ source = "head[0]"
+
+ //- if an index is available
+
+ if ( {strlen {spineTail}} != 5 )
+
+ //- get index of synapse
+
+ int synapseIndex \
+ = {substring \
+ {spineTail} \
+ 6 \
+ {{strlen {spineTail}} \
+ - 1}}
+
+ //- make source string with index
+
+ source = "head[" @ {synapseIndex} @ "]"
+ end
+
+ //echo {spineHead}{source} {value}
+
+ //- find solve field and add the message
+
+ addmsg {cellpath}/solve /xcell/draw/xcell1 \
+ COLOR {findsolvefield \
+ {cellpath}/solve \
+ {spineHead}{source} \
+ {value}}
+
+ //- else the element does not exist
+
+ else
+ //- add a dummy message
+
+ addmsg /config /xcell/draw/xcell1 COLOR z
+ end
end
end
@@ -1048,6 +1360,7 @@
/// 5 nernst E
/// 6 Calcium concen Ca
/// 7 inhibitory channel with IGE
+/// 8 comp. Im
///
/// DE: Display the buttons according to the output mode
///
@@ -1065,11 +1378,12 @@
title {getfield /xcell outputDescription}
//- comp. Vm
+ //- comp. Im
//- or spine comp. Vm
//- or nernst E
//- or Calcium concen Ca
- if (mode == 1 || mode == 4 || mode == 5 || mode == 6)
+ if (mode == 1 || mode == 4 || mode == 5 || mode == 6 || mode == 8)
//- hide I,G toggles
@@ -1218,6 +1532,7 @@
//= 5 nernst E
//= 6 Calcium concen Ca
//= 7 inhibitory channel with IGE
+ //= 8 comp. Im
int flButtons = 0
@@ -1406,6 +1721,30 @@
flButtons = 7
+ //- if we are dealing with compartmental membrane current
+
+ elif (parameters == "Im")
+
+ //- the description is compartmental membrane current
+
+ msgDescription = "Compartmental membrane current"
+
+ //- the source is empty
+
+ msgSource = ""
+
+ //- the value is Vm
+
+ msgValue = "Im"
+
+ //- remember to continue
+
+ bContinue = 1
+
+ //- set flags for buttons
+
+ flButtons = 8
+
//- else somebody messed up the code
else
@@ -1421,7 +1760,7 @@
//- if we are handling compartments
- if (flButtons == 1)
+ if (flButtons == 1 || flButtons == 8)
//- setup messages for compartments
@@ -1809,6 +2148,23 @@
setfield ^ \
parameters "Vm"
+ //- if chanmode < 2
+
+ if (iChanMode < 2)
+
+ //- create addition button for Im
+
+ create xtoggle /xcell/compIm \
+ -xgeom 70% \
+ -wgeom 20% \
+ -title "Comp. Im" \
+ -script "XCellSetOutput <w>"
+ addfield ^ \
+ parameters -description "parameters for messages"
+ setfield ^ \
+ parameters "Im"
+ end
+
create xtoggle /xcell/Caconcen \
-title "Comp. Ca" \
-xgeom 70% \
@@ -1970,16 +2326,33 @@
-wgeom 30% \
-title ""
- //- create toggle to change normalized / absolute output
+ //- if chanmode < 2
- create xtoggle /xcell/chanmode \
- -xgeom 70% \
- -ygeom 6:last.top \
- -wgeom 30% \
- -title "" \
- -onlabel "Normalized" \
- -offlabel "Absolute" \
- -script "XCellSwitchChanMode <v>"
+ if (iChanMode < 2)
+
+ //- create toggle for calculating Im
+
+ create xtoggle /xcell/chanmode \
+ -xgeom 70% \
+ -ygeom 6:last.top \
+ -wgeom 30% \
+ -title "Compute Im" \
+ -script "XCellSwitchChanMode <v>"
+
+ //- else
+
+ else
+ //- create toggle to change normalized / absolute output
+
+ create xtoggle /xcell/chanmode \
+ -xgeom 70% \
+ -ygeom 6:last.top \
+ -wgeom 30% \
+ -title "" \
+ -onlabel "Normalized" \
+ -offlabel "Absolute" \
+ -script "XCellSwitchChanMode <v>"
+ end
//- create label with normalized / absolute description
@@ -2155,6 +2528,70 @@
///
+/// SH: XCellCBPlotIm
+///
+/// PA: path..: path to the clicked compartment
+///
+/// DE: Callback to add Im of compartment to graph
+///
+
+function XCellCBPlotIm(path)
+
+str path
+
+ //- allocate next color
+
+ callfunc "XGraphNextColor"
+
+ //! the field cNextColor should be considered private,
+ //! but read the comments below to understand why I had to
+ //! read it as if it is public.
+
+ //- get allocated color
+
+ int color = {getfield /xgraphs/graph cNextColor}
+
+ //! genesis callfunc cannot handle strings nor can it handle ints
+ //! so the return value gets lost for the if statement
+
+ // get name of electrode
+
+ //str electrode = {XCellElectrodeName {path}}
+
+ //- get the electrode name
+
+ str electrode = {XGraphPlotTitle \
+ {path} \
+ "" \
+ "Im" \
+ 1}
+
+ //- if the electrode exists
+
+ if ( {exists /electrodes/draw/{electrode}} )
+
+ //- give diagnostics
+
+ echo {electrode}" is already a recording site"
+
+ //- else
+
+ else
+ //- add plot for clicked compartment
+
+ callfunc "XGraphPlotCompartment" /Purkinje {path} {color}
+
+ if ( {bXGraphPlotCompartmentResult} )
+
+ //- add electrode for the compartment
+
+ XCellAddElectrode {path} {electrode} {color}
+ end
+ end
+end
+
+
+///
/// SH: XCellCBAddPlot
///
/// PA: path..: path to the clicked compartment
@@ -2350,8 +2787,20 @@
script "XCellCBAddPlot.d1 <v> ; XCellCBRemovePlot.d3 <v>"
*/
- setfield /xcell/draw/xcell1 \
- script "XCellCBRemovePlot.d3 <v>"
+ //- if chanmode is < 2
+
+ if (iChanMode < 2)
+
+ setfield /xcell/draw/xcell1 \
+ script "XCellCBPlotIm.d1 <v> ; XCellCBRemovePlot.d3 <v>"
+
+ //- else
+
+ else
+
+ setfield /xcell/draw/xcell1 \
+ script "XCellCBRemovePlot.d3 <v>"
+ end
//- show the output form
Index: 0.55/settings.g
--- 0.55/settings.g Wed, 05 Jan 2000 11:55:14 +0100 hugo (purkinje/23_settings.g 1.8.2.2.1.1.1.1.1.1 644)
+++ AnyChanMode.2/settings.g Fri, 10 Mar 2000 16:16:46 +0100 hugo (purkinje/23_settings.g 1.8.2.2.1.1.1.1.1.1.1.1 644)
@@ -1468,9 +1468,14 @@
echo "..." -n
- //- put the state of the solve element into the originals
+ //- if chanmode >= 2
- call {cellpath}/solve HSAVE
+ if (iChanMode >= 2)
+
+ //- put the state of the solve element into the originals
+
+ call {cellpath}/solve HSAVE
+ end
//- loop over all channels that should be adjusted
@@ -1516,9 +1521,14 @@
end
end
- //- update the solve object
+ //- if chanmode >= 2
- call {cellpath}/solve HRESTORE
+ if (iChanMode >= 2)
+
+ //- update the solve object
+
+ call {cellpath}/solve HRESTORE
+ end
//echo hide update freq
Index: 0.55/cell.g
--- 0.55/cell.g Wed, 05 Jan 2000 11:58:37 +0100 hugo (purkinje/33_cell.g 1.10.1.3.2.4 644)
+++ AnyChanMode.2/cell.g Fri, 10 Mar 2000 16:16:46 +0100 hugo (purkinje/33_cell.g 1.10.1.3.2.5 644)
@@ -42,7 +42,7 @@
// cut off from previous cell
// this cell can automatically fire even without external activation
-//str cellfile = "psmall.p"
+str cellfile = "psmall.p"
end
Index: 0.55/bounds.txt
--- 0.55/bounds.txt Thu, 18 Mar 1999 14:33:34 +0100 hugo (purkinje/34_bounds.txt 1.3 644)
+++ AnyChanMode.2/bounds.txt Fri, 10 Mar 2000 16:16:46 +0100 hugo (purkinje/34_bounds.txt 1.3.1.1 644)
@@ -40,6 +40,7 @@
# 1 2 3 4 5 6 7 8 9
#
_Vm -0.09 0.02 -0.1 0.05 -0.09 0.02 -0.1 0.05
+_Im -2e-9 2e-9 -8e-9 8e-9 -2e-9 2e-9 -8e-9 8e-9
Ca_pool_Ca 0 0.001 0 0.001 0 0.001 0 0.001
# adapted to normalized mode
CaP_Ik 5e-12 3e-11 0 1e-10 0.0025 0.0015 0 0.05
Index: 0.55/actions.g
--- 0.55/actions.g Wed, 05 Jan 2000 11:55:14 +0100 hugo (purkinje/35_actions.g 1.13 644)
+++ AnyChanMode.2/actions.g Fri, 10 Mar 2000 16:16:46 +0100 hugo (purkinje/35_actions.g 1.14 644)
@@ -577,18 +577,36 @@
echo "Switching to current pulses"
- //- set command for script object
+ //- if chanmode less than 2
- setfield /actions/iClamp \
- command {"ActionIClamp " \
- @ "/actions/iClamp/current " \
- @ "output " \
- @ {cellpath} \
- @ "/solve " \
- @ {findsolvefield \
- {cellpath}/solve \
- soma \
- inject}}
+ if (iChanMode < 2)
+
+ //- set command for script object
+
+ setfield /actions/iClamp \
+ command {"ActionIClamp " \
+ @ "/actions/iClamp/current " \
+ @ "output " \
+ @ {cellpath} \
+ @ "/soma" \
+ @ " inject" }
+
+ //- else
+
+ else
+ //- set command for script object
+
+ setfield /actions/iClamp \
+ command {"ActionIClamp " \
+ @ "/actions/iClamp/current " \
+ @ "output " \
+ @ {cellpath} \
+ @ "/solve " \
+ @ {findsolvefield \
+ {cellpath}/solve \
+ soma \
+ inject}}
+ end
//- if constant current requested
@@ -598,18 +616,36 @@
echo "Switching to constant current"
- //- set command for script object
+ //- if chanmode less than 2
+
+ if (iChanMode < 2)
- setfield /actions/iClamp \
- command {"ActionIClamp " \
- @ "/actions/iClamp/current " \
- @ "ctecurrent " \
- @ {cellpath} \
- @ "/solve " \
- @ {findsolvefield \
- {cellpath}/solve \
- soma \
- inject}}
+ //- set command for script object
+
+ setfield /actions/iClamp \
+ command {"ActionIClamp " \
+ @ "/actions/iClamp/current " \
+ @ "ctecurrent " \
+ @ {cellpath} \
+ @ "/soma" \
+ @ " inject" }
+
+ //- else
+
+ else
+ //- set command for script object
+
+ setfield /actions/iClamp \
+ command {"ActionIClamp " \
+ @ "/actions/iClamp/current " \
+ @ "ctecurrent " \
+ @ {cellpath} \
+ @ "/solve " \
+ @ {findsolvefield \
+ {cellpath}/solve \
+ soma \
+ inject}}
+ end
//- else (illegal mode)
@@ -642,12 +678,26 @@
setfield /actions/iClamp \
command ""
- //- clear inject field of soma
+ //- if chanmode less than 2
+
+ if (iChanMode < 2)
+
+ //- clear inject field of soma
- setfield \
- {cellpath}/solve \
- {findsolvefield {cellpath}/solve soma inject} \
- 0
+ setfield {cellpath}/soma \
+ inject 0
+
+ //- else
+
+ else
+
+ //- clear inject field of soma
+
+ setfield \
+ {cellpath}/solve \
+ {findsolvefield {cellpath}/solve soma inject} \
+ 0
+ end
// call reset on the script to avoid bugs
Index: 0.55/TUTORIAL.g
--- 0.55/TUTORIAL.g Tue, 04 Jan 2000 15:16:41 +0100 hugo (purkinje/36_TUTORIAL.g 1.1.1.3.1.6.3.1.1.1 640)
+++ AnyChanMode.2/TUTORIAL.g Fri, 10 Mar 2000 22:36:54 +0100 hugo (purkinje/36_TUTORIAL.g 1.1.1.3.1.6.3.1.1.1.1.2 640)
@@ -53,7 +53,18 @@
//- set default chanmode for solver : normalized
+//! possible values : 0-5..: solves with implicit object hsolve
+//! -1...: solves with explicit objects (compartments)
+
int iChanMode = 5
+//int iChanMode = -1
+
+//! for chanmode -1 (explicit solution method), adapt this variable
+//! implicit solution.: dt = 2.0e-5
+//! explicit solution.: dt = 1.0e-7
+
+float dt = 2.0e-5
+//float dt = 1.0e-7
//- set default mode : in vitro
@@ -236,6 +247,14 @@
// ConfigWrite {cellfile} {cellpath}
//end
+//- give diagnostics : starting configuration
+
+echo "Starting configuration"
+
+//- give diagnostics : chanmode to configure for
+
+echo "Configuring for chanmode "{iChanMode}
+
//- read configuration file
ConfigRead {cellfile} {cellpath}
@@ -268,31 +287,35 @@
delaysteps = {delay / dt}
-//- setup the hines solver
+//- if implicit solver requested
-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
-*/
+if (iChanMode != -1)
+ //- 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
+ */
+end
//- create all info widgets
@@ -302,13 +325,34 @@
SettingsCreate
-//- setup the solver with all messages from the settings
+//- if implicit solver requested
-call /Purkinje/solve SETUP
+if (iChanMode != -1)
-//- Use method to Crank-Nicolson
+ //! if chanmode is < 2 we can only calculate Im if this flag is on
+ //! before SETUP. It is not possible to change this after the SETUP,
+ //! though the tutorial has partly been programmed in that way.
-setmethod 11
+ if (iChanMode < 2)
+
+ setfield /Purkinje/solve \
+ computeIm 1
+ end
+
+ //- setup the solver with all messages from the settings
+
+ call /Purkinje/solve SETUP
+
+ if (iChanMode < 2)
+
+ setfield /Purkinje/solve \
+ computeIm 0
+ end
+
+ //- set method to Crank-Nicolson
+
+ setmethod 11
+end
// setup actions
Index: 0.55/bounds.g
--- 0.55/bounds.g Fri, 29 Oct 1999 21:02:10 +0200 hugo (purkinje/47_bounds.g 1.3 664)
+++ AnyChanMode.2/bounds.g Fri, 10 Mar 2000 16:16:46 +0100 hugo (purkinje/47_bounds.g 1.4 664)
@@ -185,9 +185,9 @@
str bound
- //- if chanmode is 4
+ //- if chanmode is 4 or less
- if (iMode == 4)
+ if (iMode <= 4)
//- construct element name with boundaries for absolute mode