// genesis // included stellate cells, rmaex 19/6/96 include defaults include Gran_layer_const.g function make_synapse (pre, post, weight, delay) str pre, post float weight, delay int syn_num addmsg {pre} {post} SPIKE syn_num = {getfield {post} nsynapses} - 1 setfield {post} synapse[{syn_num}].weight {weight} \ synapse[{syn_num}].delay {delay} end function comb (C, n) int C, n, fac, i, num, denom denom = 1 for (i = n; i > 1; i = i - 1) denom = {denom * i} end if ({C < n}) num = 0 else num = C end for (i = 1; i < n; i = i + 1) num = {num * (C - i)} end fac = {num / denom} return (fac) end /************************* neurons and mossy fibers *****************/ if ({number_mossy_fibers} < 4) number_mossy_fibers = 4 end // otherwise the synapse loops are not executed !! // make /white_matter/mossy_fiber[0-number_mossy_fibers] include Mossy_fiber.g echo the number of mossy fibers is {number_mossy_fibers} if ({{number_mossy_fibers} > 0}) make_mossy_fiber_array {number_mossy_fibers} \ {mossy_fiber_firing_rate} \ {mossy_fiber_refractory_period} end echo made {number_mossy_fibers} mossy fibers // make /granule_cell_layer/Granule[0-number_granule_cells] include Granule_cell.g number_granule_cells = 0 int i, var_comb var_comb = {comb {mossy_fiber_to_granule_cell_connection_radius} 3} for (i = 1; i <= {number_mossy_fibers}; i = i + 1) if ({i <= mossy_fiber_to_granule_cell_connection_radius}) number_granule_cells = {number_granule_cells + {comb {i - 1} 3}} else number_granule_cells = {number_granule_cells} + {var_comb} end end if ({{number_granule_cells} > 0}) make_granule_cell_array {number_granule_cells} end echo made {number_granule_cells} granule cells // make /granule_cell_layer/Golgi[0-number_Golgi_cells] include Golgi_cell.g if ({{number_Golgi_cells} > 0}) make_Golgi_cell_array {number_Golgi_cells} end echo made {number_Golgi_cells} Golgi cells // make /molecular_layer/Stellate[0-number_stellate_cells] /* include Stellate_cell.g if ({{number_stellate_cells} > 0}) make_stellate_cell_array {number_stellate_cells} end echo made {number_stellate_cells} stellate cells */ /************************ synapses *****************/ int i, j, k, l, index // make AMPA synapses from mossy fibers to all Golgi cells // within a circle of radius {mossy_fiber_to_Golgi_cell_radius} if ({{weight_mossy_fiber_Golgi_cell_synapse} > 0}) planarconnect /white_matter/mossy_fiber[]/spike \ /granule_cell_layer/Golgi[]/soma/mf_AMPA \ -relative \ -sourcemask box -1e10 -1e10 1e10 1e10 \ // all elements connected -destmask ellipse 0 0 {mossy_fiber_to_Golgi_cell_radius} \ {mossy_fiber_to_Golgi_cell_radius} \ -probability {P_mossy_fiber_to_Golgi_cell_synapse} planarweight /white_matter/mossy_fiber[]/spike \ /granule_cell_layer/Golgi[]/soma/mf_AMPA -fixed \ {weight_mossy_fiber_Golgi_cell_synapse} -uniform {weight_distribution} planardelay /white_matter/mossy_fiber[]/spike \ /granule_cell_layer/Golgi[]/soma/mf_AMPA -fixed \ {delay_mossy_fiber_Golgi_cell_synapse} -uniform {delay_distribution} end echo connected {number_mossy_fibers} mossy fibers to {number_Golgi_cells} \ Golgi cells with probability {P_mossy_fiber_to_Golgi_cell_synapse} // make AMPA and NMDA synapses from mossy fibers to granule cells, each granule cell // receiving a different combination of 4 different mossy fiber inputs within a circle // with radius {mossy_fiber_to_granule_cell_connection_radius} float delay_factor int lb_mossy_fiber = 0 // lower boundary index = 0 for (i = 3; i < {number_mossy_fibers}; i = i + 1) // lb_mossy_fiber = 0; // while ({{getfield /white_matter/mossy_fiber[lb_mossy_fiber] x} + \ // {mossy_fiber_to_granule_cell_connection_radius} < \ // {getfield /white_matter/mossy_fiber[lb_mossy_fiber] x}}) // lb_mossy_fiber = {lb_mossy_fiber} + 1 // end lb_mossy_fiber = {i - mossy_fiber_to_granule_cell_connection_radius} if (lb_mossy_fiber < 0) lb_mossy_fiber = 0 end for (j = i - 1; j >= {lb_mossy_fiber}; j = j - 1) for (k = j - 1; k >= {lb_mossy_fiber}; k = k - 1) for (l = k - 1; l >= {lb_mossy_fiber}; l = l - 1) if ({{{index} < {number_granule_cells}} && \ {{rand 0 1} <= {P_mossy_fiber_to_granule_cell_connection}}}) position /granule_cell_layer/Granule[{index}] \ {{{getfield /white_matter/mossy_fiber[{i}] x} + \ {getfield /white_matter/mossy_fiber[{j}] x} + \ {getfield /white_matter/mossy_fiber[{k}] x} + \ {getfield /white_matter/mossy_fiber[{l}] x}} / 4.0} 0.0 0.0 delay_factor = {1 + {delay_distribution} * {rand -1 1}} if ({{weight_mossy_fiber_granule_cell_AMPA_synapse > 0}}) make_synapse /white_matter/mossy_fiber[{i}]/spike \ /granule_cell_layer/Granule[{index}]/soma/mf_AMPA \ {weight_mossy_fiber_granule_cell_AMPA_synapse * (1 + {weight_distribution} * {rand -1 1})} \ {delay_mossy_fiber_granule_cell_synapse * delay_factor} echo made AMPA synapse from mossy fiber {i} to granule cell {index} end if ({{weight_mossy_fiber_granule_cell_NMDA_synapse > 0}}) make_synapse /white_matter/mossy_fiber[{i}]/spike \ /granule_cell_layer/Granule[{index}]/soma/mf_NMDA \ {weight_mossy_fiber_granule_cell_NMDA_synapse * (1 + {weight_distribution} * {rand -1 1})} \ {delay_mossy_fiber_granule_cell_synapse * delay_factor} echo made NMDA synapse from mossy fiber {i} to granule cell {index} end delay_factor = {1 + {delay_distribution} * {rand -1 1}} if ({{weight_mossy_fiber_granule_cell_AMPA_synapse > 0}}) make_synapse /white_matter/mossy_fiber[{j}]/spike \ /granule_cell_layer/Granule[{index}]/soma/mf_AMPA \ {weight_mossy_fiber_granule_cell_AMPA_synapse * (1 + {weight_distribution} * {rand -1 1})} \ {delay_mossy_fiber_granule_cell_synapse * delay_factor} echo made AMPA synapse from mossy fiber {j} to granule cell {index} end if ({{weight_mossy_fiber_granule_cell_NMDA_synapse > 0}}) make_synapse /white_matter/mossy_fiber[{j}]/spike \ /granule_cell_layer/Granule[{index}]/soma/mf_NMDA \ {weight_mossy_fiber_granule_cell_NMDA_synapse * (1 + {weight_distribution} * {rand -1 1})} \ {delay_mossy_fiber_granule_cell_synapse * delay_factor} echo made NMDA synapse from mossy fiber {j} to granule cell {index} end delay_factor = {1 + {delay_distribution} * {rand -1 1}} if ({{weight_mossy_fiber_granule_cell_AMPA_synapse > 0}}) make_synapse /white_matter/mossy_fiber[{k}]/spike \ /granule_cell_layer/Granule[{index}]/soma/mf_AMPA \ {weight_mossy_fiber_granule_cell_AMPA_synapse * (1 + {weight_distribution} * {rand -1 1})} \ {delay_mossy_fiber_granule_cell_synapse * delay_factor} echo made AMPA synapse from mossy fiber {k} to granule cell {index} end if ({{weight_mossy_fiber_granule_cell_NMDA_synapse > 0}}) make_synapse /white_matter/mossy_fiber[{k}]/spike \ /granule_cell_layer/Granule[{index}]/soma/mf_NMDA \ {weight_mossy_fiber_granule_cell_NMDA_synapse * (1 + {weight_distribution} * {rand -1 1})} \ {delay_mossy_fiber_granule_cell_synapse * delay_factor} echo made NMDA synapse from mossy fiber {k} to granule cell {index} end delay_factor = {1 + {delay_distribution} * {rand -1 1}} if ({{weight_mossy_fiber_granule_cell_AMPA_synapse > 0}}) make_synapse /white_matter/mossy_fiber[{l}]/spike \ /granule_cell_layer/Granule[{index}]/soma/mf_AMPA \ {weight_mossy_fiber_granule_cell_AMPA_synapse * (1 + {weight_distribution} * {rand -1 1})} \ {delay_mossy_fiber_granule_cell_synapse * delay_factor} echo made AMPA synapse from mossy fiber {l} to granule cell {index} end if ({{weight_mossy_fiber_granule_cell_NMDA_synapse > 0}}) make_synapse /white_matter/mossy_fiber[{l}]/spike \ /granule_cell_layer/Granule[{index}]/soma/mf_NMDA \ {weight_mossy_fiber_granule_cell_NMDA_synapse * (1 + {weight_distribution} * {rand -1 1})} \ {delay_mossy_fiber_granule_cell_synapse * delay_factor} echo made NMDA synapse from mossy fiber {l} to granule cell {index} end end index = {index} + 1 end end end end // make AMPA synapses from granule cells to Golgi cells if ({{weight_granule_cell_Golgi_cell_synapse} > 0}) planarconnect /granule_cell_layer/Granule[]/soma/spike \ /granule_cell_layer/Golgi[]/soma/pf_AMPA \ -relative \ -sourcemask box -1e10 -1e10 1e10 1e10 \ // all elements connected -destmask box -{parallel_fiber_length / 2.0} -1e10 \ {parallel_fiber_length / 2.0} 1e10 \ -probability {P_granule_cell_to_Golgi_cell_synapse} planarweight /granule_cell_layer/Granule[]/soma/spike \ /granule_cell_layer/Golgi[]/soma/pf_AMPA \ -fixed {weight_granule_cell_Golgi_cell_synapse} -uniform {weight_distribution} planardelay /granule_cell_layer/Granule[]/soma/spike \ /granule_cell_layer/Golgi[]/soma/pf_AMPA \ // -fixed {delay_granule_cell_Golgi_cell_synapse} \ -radial {parallel_fiber_conduction_velocity} -uniform {delay_distribution} // planardelay /granule_cell_layer/Granule[]/soma/spike \ // /granule_cell_layer/Golgi[]/soma/pf_AMPA \ // -add \ // to account for width Golgi cell dendritic tree // -fixed {(Golgi_cell_separation / 2.0) / parallel_fiber_conduction_velocity} \ // -absoluterandom \ // -uniform {(Golgi_cell_separation / 2.0) / parallel_fiber_conduction_velocity} end echo connected {number_granule_cells} granule cells to {number_Golgi_cells} \ Golgi cells with probability {P_granule_cell_to_Golgi_cell_synapse} // make AMPA synapses from granule cells to stellate cells if ({{weight_granule_cell_stellate_cell_synapse} > 0}) planarconnect /granule_cell_layer/Granule[]/soma/spike \ /molecular_layer/Stellate[]/soma/pf_AMPA \ -relative \ -sourcemask box -1e10 -1e10 1e10 1e10 \ // all elements connected -destmask box -{parallel_fiber_length / 2.0} -1e10 \ {parallel_fiber_length / 2.0} 1e10 \ -probability {P_granule_cell_to_stellate_cell_synapse} planarweight /granule_cell_layer/Granule[]/soma/spike \ /molecular_layer/Stellate[]/soma/pf_AMPA \ -fixed {weight_granule_cell_stellate_cell_synapse} -uniform {weight_distribution} planardelay /granule_cell_layer/Granule[]/soma/spike \ /molecular_layer/Stellate[]/soma/pf_AMPA \ // -fixed {delay_granule_cell_Golgi_cell_synapse} \ -radial {parallel_fiber_conduction_velocity} -uniform {delay_distribution} end echo connected {number_granule_cells} granule cells to {number_stellate_cells} \ stellate cells with probability {P_granule_cell_to_stellate_cell_synapse} // make GABA_A synapses from Golgi cells to granule cells if ({{weight_Golgi_cell_granule_cell_GABAA_synapse} > 0}) planarconnect /granule_cell_layer/Golgi[]/soma/spike \ /granule_cell_layer/Granule[]/soma/GABAA \ -relative \ -sourcemask box -1e10 -1e10 1e10 1e10 \ // all elements connected -destmask ellipse 0 0 {Golgi_cell_to_granule_cell_radius} \ {Golgi_cell_to_granule_cell_radius} \ -probability {P_Golgi_cell_to_granule_cell_synapse} planarweight /granule_cell_layer/Golgi[]/soma/spike \ /granule_cell_layer/Granule[]/soma/GABAA \ -fixed {weight_Golgi_cell_granule_cell_GABAA_synapse} -uniform {weight_distribution} planardelay /granule_cell_layer/Golgi[]/soma/spike \ /granule_cell_layer/Granule[]/soma/GABAA \ -fixed {delay_Golgi_cell_granule_cell_synapse} -uniform {delay_distribution} end if ({{weight_Golgi_cell_granule_cell_GABAB_synapse} > 0}) planarconnect /granule_cell_layer/Golgi[]/soma/spike \ /granule_cell_layer/Granule[]/soma/GABAB \ -relative \ -sourcemask box -1e10 -1e10 1e10 1e10 \ // all elements connected -destmask ellipse 0 0 {Golgi_cell_to_granule_cell_radius} \ {Golgi_cell_to_granule_cell_radius} \ -probability {P_Golgi_cell_to_granule_cell_synapse} planarweight /granule_cell_layer/Golgi[]/soma/spike \ /granule_cell_layer/Granule[]/soma/GABAB \ -fixed {weight_Golgi_cell_granule_cell_GABAB_synapse} -uniform {weight_distribution} planardelay /granule_cell_layer/Golgi[]/soma/spike \ /granule_cell_layer/Granule[]/soma/GABAB \ -fixed {delay_Golgi_cell_granule_cell_synapse} -uniform {delay_distribution} end echo connected {number_Golgi_cells} Golgi cells to {number_granule_cells} \ granule cells with probability {P_Golgi_cell_to_granule_cell_synapse} // make GABA_A synapses from stellate cells to Golgi cells if ({{weight_stellate_cell_Golgi_cell_synapse} > 0}) planarconnect /molecular_layer/Stellate[]/soma/spike \ /granule_cell_layer/Golgi[]/soma/GABAA \ -relative \ -sourcemask box -1e10 -1e10 1e10 1e10 \ // all elements connected -destmask ellipse 0 0 {stellate_cell_to_Golgi_cell_radius} \ {stellate_cell_to_Golgi_cell_radius} \ -probability {P_stellate_cell_to_Golgi_cell_synapse} planarweight /molecular_layer/Stellate[]/soma/spike \ /granule_cell_layer/Golgi[]/soma/GABAA \ -fixed {weight_stellate_cell_Golgi_cell_synapse} -uniform {weight_distribution} planardelay /molecular_layer/Stellate[]/soma/spike \ /granule_cell_layer/Golgi[]/soma/GABAA \ -fixed {delay_stellate_cell_Golgi_cell_synapse} -uniform {delay_distribution} end echo connected {number_stellate_cells} stellate cells to {number_Golgi_cells} \ Golgi cells with probability {P_stellate_cell_to_Golgi_cell_synapse}