//================ BASIC UTILITIES FOR BUILDING NEURONS ==============// // This file contains functions to read neuron coordinate positions // // and to create and connect the compartments that make up individual // // neurons. // // // // Available functions: // // 1. connect_compartments - connect adjacent cylindrical compartments// // coordinates for the neurons, one neuron per line. // // 2. make_cylind_compartment - create a cylindrical compartment // // 3. make_sphere_compartment - create a spherical compartment // // 4. make_spike - create a spike train // // 5. read_coords - read neuron coordinates from a file and create // // corresponding neurons // // // //====================================================================// include ../lib/global_constants.g /* ****************************************************************** connect_compartments Connect compartments electrically Parameters: first name of the first compartment second name of the second compartment ****************************************************************** */ function connect_compartments(first, second) str first, second addmsg {second} {first} RAXIAL Ra previous_state addmsg {first} {second} AXIAL previous_state end /* ****************************************************************** make_cylind_compartment Create a cylindrical compartment Parameters: path name of the compartment len length of the compartment dia diameter of the compartment area effective membrane surface area eleak membrane leakage potential rm membrane resistance cm membrane capacitance ra axial resistance ****************************************************************** */ function make_cylind_compartment(path, len, dia, area, eleak, rm, cm, ra) str path float len, dia, area, eleak, rm, cm, ra create compartment {path} setfield {path} Em {eleak} Rm {rm/area} Cm {cm*area} \ Ra {4.0*ra*len/(dia*dia*PI)} end /* ****************************************************************** make_sphere_compartment Create a spherical compartment Parameters: path name of the compartment dia diameter of the compartment area effective membrane surface area eleak membrane leakage potential rm membrane resistance cm membrane capacitance ra axial resistance ****************************************************************** */ function make_sphere_compartment(path, dia, area, eleak, rm, cm, ra) str path float dia, area, eleak, rm, cm, ra create compartment {path} setfield {path} Em {eleak} Rm {rm/area} Cm {cm*area} Ra {8.0*ra/(dia*PI)} end /* ****************************************************************** make_spike Generates a spike train from spike membrane potential Vm using a spikegen mechanism named {path}/spike Parameters: path name of the compartment dia diameter of the compartment area effective membrane surface area eleak membrane leakage potential rm membrane resistance cm membrane capacitance ra axial resistance ****************************************************************** */ function make_spike(path, thresh, refract, amp) str path float thresh, refract, amp create spikegen {path}/spike setfield ^ thresh {thresh} abs_refract {refract} output_amp {amp} addmsg {path} {path}/spike INPUT Vm end /* ****************************************************************** read_coords Read x, y, z coordinates of a set of elements from file filepath and create numbered elements parent0, .... Parameters: filepath name of the file which stores the coordinates parent address of the parent of cells to be created ****************************************************************** */ function read_coords (filepath, parent) str filepath, parent openfile {filepath} r str xt, yt, zt str line = {readfile {filepath} -linemode} int count = 0; while (!{eof {filepath}}) count = count + 1 create neutral {parent}{count} xt = {getarg {arglist {line}} -arg 1} yt = {getarg {arglist {line}} -arg 2} zt = {getarg {arglist {line}} -arg 3} setfield ^ x {xt} y {yt} z {zt} line = {readfile {filepath} -linemode} end // calculate total LGN neurons if ({parent} == "/network_lgn/cell") TOTAL_LGN_NEURONS = count end closefile {filepath} if (ECHO_ON == 1) echo "Created" {count} {parent} "neurons" end end