// Script to write channel tables into ascii file to use in matlab.
// C. Gunay <cgunay@emory.edu> 2007/02/26
// $Id: dump_chans.g,v 1.1 2007/03/06 17:24:23 cengiz Exp $
function usage
echo "Usage: dump_chans_func file_name output_type"
echo "where"
echo " output_type: 'text' or 'matlab'."
echo " file_name: output file with channel tables."
end
// var_name can be "minf" or "tau"
function dump_chan_gate_var(soma_chan_name, gate_name, var_name, file_name, output_type)
str chan_name = {getpath {soma_chan_name} -tail}
str id = "tables." @ {chan_name} @ "." @ {gate_name} @ "_" @ {var_name}
str table2
if ( {output_type} == "text")
echo {id} @ ":" >> {file_name}
echo {{chan_name} @ ":" }
elif ( {output_type} == "matlab" )
echo {id} " = [" >> {file_name}
end
// dump table
echo {file_name} {soma_chan_name} { {gate_name} @ "_A" } "_mode" {var_name}
// no table2 in tau
if ( {var_name} == "tau" )
tab2file {file_name} {soma_chan_name} { {gate_name} @ "_A" } -mode {var_name}
else
tab2file {file_name} {soma_chan_name} { {gate_name} @ "_A" } -table2 { {gate_name} @ "_B" } -mode {var_name}
end
// end of table
if ( {output_type} == "text")
echo >> {file_name}
elif ( {output_type} == "matlab" )
echo "];" >> {file_name}
end
end
// dumps both minf and tau of one gate
function dump_chan_gate(soma_chan_name, gate_name, file_name, output_type)
// if gate allocated?
if ( {getfield {soma_chan_name} { {gate_name} @ "_alloced" }} == 1 )
dump_chan_gate_var {soma_chan_name} {gate_name} "minf" {file_name} {output_type}
dump_chan_gate_var {soma_chan_name} {gate_name} "tau" {file_name} {output_type}
end
end
// Main function
function dump_chans_func(file_name, output_type)
if ( ( {output_type} == "" ) || ( {file_name} == "" ))
echo "*** Error: need arguments."
echo
usage
return
elif ( ( {output_type} != "matlab" ) && ( {output_type} != "text" ))
echo "*** Error: output_type not recognized."
echo
usage
return
end
str soma_chan_name, chan_name, dend_name, chan_names
float g_total_soma, g_total_dend, g_total_axIS, g_total_axHill
if ( {output_type} == "matlab")
chan_names = "chan_names = {"
end
foreach soma_chan_name ({el /GP/soma/#[][CLASS=channel][OBJECT!=nernst]})
chan_name = {getpath {soma_chan_name} -tail}
if ( {output_type} == "text")
echo {{chan_name} @ ":" }
elif ( {output_type} == "matlab" )
chan_names = { {chan_names} @ ", '" @ {chan_name} @ "'" }
end
dump_chan_gate {soma_chan_name} "X" {file_name} {output_type}
dump_chan_gate {soma_chan_name} "Y" {file_name} {output_type}
dump_chan_gate {soma_chan_name} "Z" {file_name} {output_type}
end
if ( {output_type} == "matlab")
chan_names = { {chan_names} @ "};"}
echo { chan_names } >> {file_name}
end
end
echo "Call dump_chans_func"
usage