/****************************************************************/ /* */ /* tectum_11.c */ /* */ /****************************************************************/ # include "nsl_include.h" NETWORK(TECTUM_11); INPUT_DAT(IN); // network input INPUT_DAT(R2); // ganglion cells INPUT_DAT(R3); INPUT_DAT(R4); DATA(gl); DATA(GL); DATA(lp); DATA(LP); DATA(sp); DATA(SP); DATA(sn); DATA(SN); DATA(py); DATA(PY); DATA(tp); DATA(TP); DATA(C); DATA(gl_tm); DATA(lp_tm); DATA(sp_tm); DATA(sn_tm); DATA(py_tm); DATA(tp_tm); DATA(Wr2gl); DATA(Wlpgl); DATA(Wspgl); DATA(Wr2lp); DATA(Wgllp); DATA(Wsplp); DATA(Wsnlp); DATA(Wtplp); DATA(Wr2sp); DATA(Wglsp); DATA(Wsnsp); DATA(Wtpsp); DATA(Wlpsn); DATA(Wr2py); DATA(Wr3py); DATA(Wr4py); DATA(Wsppy); DATA(Wlppy); DATA(Wtppy); DATA(Wr3tp); DATA(Wr4tp); INIT_MODULE(tectum11_init) { IN = 0; R2 = 0; R3 = 0; R4 = 0; gl = 0; GL = 0; lp = -0.09; LP = 0; sp = -0.18; SP = 0; sn = 0; SN = 0; py = -0.36; PY = 0; tp = 0; TP = 0; } MODULE(tectum11_IN) { IN.run(); } MODULE(tectum11_R2) { R2 = IN; } MODULE(tectum11_R3) { R3 = 0.65*IN; } MODULE(tectum11_R4) { R4 = 0.4*IN; } RUN_MODULE(tectum11_GL) { DIFF.eq(gl,gl_tm) = -gl + Wr2gl*R2 + Wlpgl*LP + Wspgl*SP; GL = gl; } RUN_MODULE(tectum11_LP) { DIFF.eq(lp,lp_tm) = -lp+Wr2lp*R2+Wgllp*GL+Wsplp*SP-Wsnlp*SN-Wtplp*TP; LP = NSLstep(lp,1.0); } RUN_MODULE(tectum11_SP) { DIFF.eq(sp,sp_tm) = -sp + Wr2sp*R2 + Wglsp*GL - Wsnsp*SN - Wtpsp*TP; SP = NSLstep(sp,1.7); } RUN_MODULE(tectum11_SN) { DIFF.eq(sn,sn_tm) = -sn + Wlpsn*LP; SN = NSLramp(sn,0.2,0,0.2); } RUN_MODULE(tectum11_PY) { DIFF.eq(py,py_tm) = -py + Wr2py*R2 + Wr3py*R3 + Wr4py*R4 + Wsppy*SP + Wlppy*LP - Wtppy*TP; PY = NSLsat(py,1.91,5); } RUN_MODULE(tectum11_TP) { DIFF.eq(tp,tp_tm) = -tp + Wr3tp*R3 + Wr4tp*R4; TP = NSLramp(tp,3.7,0,3.7); } FUNC_MODULE(f) { NSL << "status data_value ALL" << ENDL; NSL << "status panel_item ALL" << ENDL; }