/* Dentage Gyrus network model associated with the papers:
J. Tejada, G.M. Arisi, N. Garcia-Cairasco, A.C. Roque, Morphological alterations in newly born dentate gyrus granule cells that emerge after status epilepticus contribute to make them less excitable, PLoS ONE. 7 (2012) e40726. doi:10.1371/journal.pone.0040726.
J. Tejada, N. Garcia-Cairasco, A.C. Roque, Combined role of seizure-induced dendritic morphology alterations and spine loss in newborn granule cells with mossy fiber sprouting on the hyperexcitability of a computer model of the dentate gyrus, PLoS Comput. Biol. 10 (2014) e1003601. doi:10.1371/journal.pcbi.1003601.
julian.tejada@gmail.com - 2014
*/
secondorder=2
tstep=0
period=2
steps_per_ms = 10
dt=0.1
tstop=300 //1500
// define network size
ngcell = 500
nbcell = 6
nmcell = 15
nhcell = 6
npp = 1
//***********************************************************************************************
// Load templates of granule cells with realistic morphology
objref Gcell[ngcell]
// newborn control cells
load_file("n01.hoc")
load_file("n02.hoc")
load_file("n03.hoc")
load_file("n04.hoc")
load_file("n05.hoc")
load_file("n06.hoc")
load_file("n07.hoc")
load_file("n08.hoc")
load_file("n09.hoc")
load_file("n10.hoc")
load_file("n11.hoc")
load_file("n12.hoc")
load_file("n13.hoc")
load_file("n14.hoc")
load_file("n15.hoc")
load_file("n16.hoc")
load_file("n17.hoc")
load_file("n18.hoc")
load_file("n19.hoc")
load_file("n20.hoc")
// newborn PILO cells
load_file("n21.hoc")
load_file("n22.hoc")
load_file("n23.hoc")
load_file("n24.hoc")
load_file("n25.hoc")
load_file("n26.hoc")
load_file("n27.hoc")
load_file("n28.hoc")
load_file("n29.hoc")
load_file("n30.hoc")
load_file("n31.hoc")
load_file("n32.hoc")
load_file("n33.hoc")
load_file("n34.hoc")
load_file("n35.hoc")
load_file("n36.hoc")
load_file("n37.hoc")
load_file("n38.hoc")
load_file("n39.hoc")
load_file("n40.hoc")
// Mature cells
load_file("n41.hoc")
load_file("n42.hoc")
load_file("n43.hoc")
load_file("n44.hoc")
load_file("n45.hoc")
load_file("n46.hoc")
load_file("n47.hoc")
load_file("n48.hoc")
load_file("n49.hoc")
load_file("n50.hoc")
load_file("n51.hoc")
load_file("n52.hoc")
load_file("n53.hoc")
load_file("n54.hoc")
load_file("n55.hoc")
load_file("n56.hoc")
load_file("n57.hoc")
load_file("n58.hoc")
load_file("n59.hoc")
load_file("n60.hoc")
load_file("n61.hoc")
load_file("n62.hoc")
load_file("n63.hoc")
load_file("n64.hoc")
load_file("n65.hoc")
load_file("n66.hoc")
load_file("n67.hoc")
load_file("n68.hoc")
load_file("n69.hoc")
load_file("n70.hoc")
load_file("n71.hoc")
load_file("n72.hoc")
load_file("n73.hoc")
load_file("n74.hoc")
load_file("n75.hoc")
load_file("n76.hoc")
load_file("n77.hoc")
load_file("n78.hoc")
load_file("n79.hoc")
load_file("n80.hoc")
load_file("n81.hoc")
load_file("n82.hoc")
load_file("n83.hoc")
load_file("n84.hoc")
load_file("n85.hoc")
load_file("n86.hoc")
load_file("n87.hoc")
load_file("n88.hoc")
load_file("n89.hoc")
load_file("n90.hoc")
load_file("n91.hoc")
load_file("n92.hoc")
load_file("n93.hoc")
load_file("n94.hoc")
load_file("n95.hoc")
load_file("n96.hoc")
load_file("n97.hoc")
load_file("n98.hoc")
load_file("n99.hoc")
load_file("n100.hoc")
load_file("n101.hoc")
load_file("n102.hoc")
load_file("n103.hoc")
load_file("n104.hoc")
load_file("n105.hoc")
load_file("n106.hoc")
load_file("n107.hoc")
load_file("n108.hoc")
load_file("n109.hoc")
load_file("n110.hoc")
load_file("n111.hoc")
load_file("n112.hoc")
load_file("n113.hoc")
load_file("n114.hoc")
// ************************************************************************************************************
// Load templates of the other cells
objref Bcell[nbcell]
load_file("BasketCell.hoc")
//***********************************************************************************************************
objref Mcell[nmcell]
load_file("MossyCell.hoc")
//***********************************************************************************************************
objref Hcell[nhcell]
load_file("HIPPCell.hoc")
//***********************************************************************************************************
// Create the stimulation pattern
objref PPSt[npp]
begintemplate PPstim
public pp, connect_pre, is_art, acell
create acell
objref pp
proc init() {
actemp()
}
proc actemp() {
acell pp = new NetStim(.5)
pp.interval = 100
pp.number = 1
pp.start = 5
}
func is_art() {return 1}
proc connect_pre() {acell $o2 = new NetCon(pp, $o1)}
endtemplate PPstim
//###############################################################################################################
// Read the number of proximal and distal dendrites of each cells from a txt file
objref arq1
arq1 = new File()
arq1.ropen("NumberOfDendrites.dat")
objref NumOfPD, NumOfDD
NumOfPD= new Vector(116,0)
NumOfDD= new Vector(116,0)
for i=1,114 {
NumOfPD.x[i] = arq1.scanvar()
NumOfDD.x[i] = arq1.scanvar()
}
arq1.close()
// Load the order in which each cells will be positioned in the network
arq1 = new File()
arq1.ropen(FileName)
objref NetTopology, Counter, Randomizer
NetTopology= new Vector(500,0)
Counter= new Vector(116,0)
Randomizer = new Vector(36,0)
for i=0,499 {
NetTopology.x[i] = arq1.scanvar()
}
arq1.close()
CellPilo = 0
i_control = 0
i_pilo = 0
// Create the copy of each cells from the templates
for i=0,499 {
// print i, "Primeiro"
if (NetTopology.x[i] == 1) {Gcell[i] = new GranuleCell1(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 2) {Gcell[i] = new GranuleCell2(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 3) {Gcell[i] = new GranuleCell3(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 4) {Gcell[i] = new GranuleCell4(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 5) {Gcell[i] = new GranuleCell5(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 6) { Gcell[i] = new GranuleCell6(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 7) { Gcell[i] = new GranuleCell7(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 8) {Gcell[i] = new GranuleCell8(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 9) {Gcell[i] = new GranuleCell9(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 10) {Gcell[i] = new GranuleCell10(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 11) {Gcell[i] = new GranuleCell11(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 12) {Gcell[i] = new GranuleCell12(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 13) {Gcell[i] = new GranuleCell13(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 14) {Gcell[i] = new GranuleCell14(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 15) {Gcell[i] = new GranuleCell15(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 16) {Gcell[i] = new GranuleCell16(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 17) {Gcell[i] = new GranuleCell17(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 18) {Gcell[i] = new GranuleCell18(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 19) {Gcell[i] = new GranuleCell19(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 20) { Gcell[i] = new GranuleCell20(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 21) { Gcell[i] = new GranuleCell21(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 22) { Gcell[i] = new GranuleCell22(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 23) {Gcell[i] = new GranuleCell23(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 24) { Gcell[i] = new GranuleCell24(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 25) {Gcell[i] = new GranuleCell25(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 26) { Gcell[i] = new GranuleCell26(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 27) { Gcell[i] = new GranuleCell27(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 28) { Gcell[i] = new GranuleCell28(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 29) { Gcell[i] = new GranuleCell29(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 30) { Gcell[i] = new GranuleCell30(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 31) { Gcell[i] = new GranuleCell31(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 32) { Gcell[i] = new GranuleCell32(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 33) { Gcell[i] = new GranuleCell33(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 34) { Gcell[i] = new GranuleCell34(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 35) { Gcell[i] = new GranuleCell35(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 36) { Gcell[i] = new GranuleCell36(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 37) { Gcell[i] = new GranuleCell37(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 38) { Gcell[i] = new GranuleCell38(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 39) { Gcell[i] = new GranuleCell39(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 40) { Gcell[i] = new GranuleCell40(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 41) { Gcell[i] = new GranuleCell41(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 42) { Gcell[i] = new GranuleCell42(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 43) { Gcell[i] = new GranuleCell43(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 44) { Gcell[i] = new GranuleCell44(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 45) { Gcell[i] = new GranuleCell45(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 46) { Gcell[i] = new GranuleCell46(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 47) { Gcell[i] = new GranuleCell47(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 48) { Gcell[i] = new GranuleCell48(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 49) { Gcell[i] = new GranuleCell49(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 50) { Gcell[i] = new GranuleCell50(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 51) { Gcell[i] = new GranuleCell51(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 52) { Gcell[i] = new GranuleCell52(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
}
for i=0,499 {
if (NetTopology.x[i] == 53) { Gcell[i] = new GranuleCell53(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 54) { Gcell[i] = new GranuleCell54(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 55) { Gcell[i] = new GranuleCell55(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 56) { Gcell[i] = new GranuleCell56(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 57) { Gcell[i] = new GranuleCell57(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 58) { Gcell[i] = new GranuleCell58(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 59) { Gcell[i] = new GranuleCell59(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 60) { Gcell[i] = new GranuleCell60(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 61) { Gcell[i] = new GranuleCell61(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 62) { Gcell[i] = new GranuleCell62(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 63) { Gcell[i] = new GranuleCell63(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 64) { Gcell[i] = new GranuleCell64(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 65) { Gcell[i] = new GranuleCell65(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 66) { Gcell[i] = new GranuleCell66(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 67) {Gcell[i] = new GranuleCell67(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 68) { Gcell[i] = new GranuleCell68(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 69) { Gcell[i] = new GranuleCell69(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 70) {Gcell[i] = new GranuleCell70(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 71) { Gcell[i] = new GranuleCell71(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 72) { Gcell[i] = new GranuleCell72(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 73) { Gcell[i] = new GranuleCell73(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 74) { Gcell[i] = new GranuleCell74(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 75) { Gcell[i] = new GranuleCell75(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 76) { Gcell[i] = new GranuleCell76(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 77) { Gcell[i] = new GranuleCell77(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 78) { Gcell[i] = new GranuleCell78(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 79) { Gcell[i] = new GranuleCell79(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 80) { Gcell[i] = new GranuleCell80(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
}
for i=0,499 {
if (NetTopology.x[i] == 81) {Gcell[i] = new GranuleCell81(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 82) { Gcell[i] = new GranuleCell82(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 83) { Gcell[i] = new GranuleCell83(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 84) {Gcell[i] = new GranuleCell84(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 85) { Gcell[i] = new GranuleCell85(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 86) {Gcell[i] = new GranuleCell86(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 87) {Gcell[i] = new GranuleCell87(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 88) { Gcell[i] = new GranuleCell88(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 89) { Gcell[i] = new GranuleCell89(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 90) { Gcell[i] = new GranuleCell90(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 91) { Gcell[i] = new GranuleCell91(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 92) { Gcell[i] = new GranuleCell92(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 93) { Gcell[i] = new GranuleCell93(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 94) { Gcell[i] = new GranuleCell94(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 95) { Gcell[i] = new GranuleCell95(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 96) { Gcell[i] = new GranuleCell96(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 97) { Gcell[i] = new GranuleCell97(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 98) { Gcell[i] = new GranuleCell98(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 99) { Gcell[i] = new GranuleCell99(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 100) { Gcell[i] = new GranuleCell100(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 101) { Gcell[i] = new GranuleCell101(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 102) { Gcell[i] = new GranuleCell102(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 103) { Gcell[i] = new GranuleCell103(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 104) { Gcell[i] = new GranuleCell104(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 105) { Gcell[i] = new GranuleCell105(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 106) { Gcell[i] = new GranuleCell106(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 107) { Gcell[i] = new GranuleCell107(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 108) { Gcell[i] = new GranuleCell108(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 109) { Gcell[i] = new GranuleCell109(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 110) { Gcell[i] = new GranuleCell110(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 111) {Gcell[i] = new GranuleCell111(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 112) { Gcell[i] = new GranuleCell112(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 113) { Gcell[i] = new GranuleCell113(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
if (NetTopology.x[i] == 114) { Gcell[i] = new GranuleCell114(Counter.x(NetTopology.x[i]))
Counter.x(NetTopology.x[i]) +=1
}
}
for i=0, nbcell-1 {Bcell[i] = new BasketCell(i)}
for i=0, nmcell-1 {Mcell[i] = new MossyCell(i)}
for i=0, nhcell-1 {Hcell[i] = new HIPPCell(i)}
for i =0, npp-1 {PPSt[i] = new PPstim(i)}
objref nclist, netcon, cells, net_c, net_d, net_gr, net_bc, net_mc, net_hc, vbc2gc, vmc2gc, vhc2gc
{ cells = new List()
nclist = new List()
}
func cell_append() {cells.append($o1)
return cells.count -1}
func nc_append() {
if ($3 >= 0 ) {
cells.object($1).connect_pre(cells.object($2).pre_list.object($3),netcon)
netcon.weight = $4 netcon.delay = $5 netcon.threshold = $6
}
nclist.append(netcon)
return nclist.count-1
}
func is_connected() {local i, c
c=0
for i=0, nclist.count-1 {
net_c= nclist.object(i)
if (($o1 == net_c.postcell()) && ($o2 == net_c.precell())) {c=1}
}
return c
}
objref vbc2gc, vmc2gc, vhc2gc, vgc2bc, vbc2bc, vmc2bc, vhc2bc, vgc2mc, vbc2mc, vmc2mc, vhc2mc, vgc2hc, vmc2hc,vgc2gc
{
vgc2bc = new Vector(nbcell, 0)
vbc2bc = new Vector(nbcell, 0)
vmc2bc = new Vector(nbcell, 0)
vhc2bc = new Vector(nbcell, 0)
vgc2mc = new Vector(nmcell, 0)
vbc2mc = new Vector(nmcell, 0)
vmc2mc = new Vector(nmcell, 0)
vhc2mc = new Vector(nmcell, 0)
vgc2hc = new Vector(nhcell, 0)
vmc2hc = new Vector(nhcell, 0)
vbc2gc = new Vector(ngcell, 0)
vmc2gc = new Vector(ngcell, 0)
vhc2gc = new Vector(ngcell, 0)
vgc2gc = new Vector(ngcell, 0)
}
//initiating randm number generator
objref rdsynb, rdsyna, rdgc2hc, rdgc2bc, rdgc2mc, rdbc2gc, rdbc2bc, rdbc2mc
objref rdmc2gc1, rdmc2gc2, rdmc2bc, rdmc2mc, rdmc2mc1, rdmc2hc, rdhc2gc, rdhc2bc, rdhc2mc, rdgc2gc
objref RandUniform, rdm_1
ropen("/proc/uptime") // get a seed that is changing based on the processing time
{
rseed = fscan() // so simulation will not start with the same seed
ropen()
}
//************************************GC***********************************************
rdgc2bc = new Random(rseed) // use for syn.connections
proc new_rdgc2bc() {rdgc2bc.discunif(-1,1)}
new_rdgc2bc()
rdgc2mc = new Random(rseed) // use for syn.connections
proc new_rdgc2mc() {rdgc2mc.discunif(0,2)}
new_rdgc2mc()
rdgc2hc = new Random(rseed) // use for syn.connections
proc new_rdgc2hc() {rdgc2hc.discunif(-2 , 2)}
new_rdgc2hc()
rdgc2gc = new Random(rseed) // use for syn.connections
proc new_rdgc2gc() {rdgc2gc.discunif(-50, 50)}
new_rdgc2gc()
//************************************BC***********************************************
rdbc2gc = new Random(rseed) // use for syn.connections
proc new_rdbc2gc() {rdbc2gc.discunif(0, ngcell-1)}
new_rdbc2gc()
rdbc2bc = new Random(rseed) // use for syn.connections
proc new_rdbc2bc() {rdbc2bc.discunif(ngcell, ngcell+nbcell-1)}
new_rdbc2bc()
rdbc2mc = new Random(rseed) // use for syn.connections
proc new_rdbc2mc() {rdbc2mc.discunif(ngcell+nbcell, ngcell+nbcell+nmcell-1)}
new_rdbc2mc()
//*************************************MC********************************************
rdmc2gc1 = new Random(rseed) // use for syn.connections
proc new_rdmc2gc1() {rdmc2gc1.discunif(25, 175)}
new_rdmc2gc1()
rdmc2gc2 = new Random(rseed) // use for syn.connections
proc new_rdmc2gc2() {rdmc2gc2.discunif(-175, -25)}
new_rdmc2gc2()
rdmc2bc = new Random(rseed) // use for syn.connections
proc new_rdmc2bc() {rdmc2bc.discunif(-3,3)}
new_rdmc2bc()
rdmc2mc = new Random(rseed) // use for syn.connections
proc new_rdmc2mc() {rdmc2mc.discunif(ngcell+nbcell, ngcell+nbcell+nmcell-1)}
new_rdmc2mc()
rdmc2mc1 = new Random(rseed) // use for syn.connections
proc new_rdmc2mc1() {rdmc2mc1.discunif(-3, 3)}
new_rdmc2mc1()
rdmc2hc = new Random(rseed) // use for syn.connections
proc new_rdmc2hc() {rdmc2hc.discunif(-2, 2)}
new_rdmc2hc()
//*************************************HC********************************************
rdhc2gc = new Random(rseed) // use for syn.connections
proc new_rdhc2gc() {rdhc2gc.discunif(0, ngcell-1)}
new_rdhc2gc()
rdhc2bc = new Random(rseed) // use for syn.connections
proc new_rdhc2bc() {rdhc2bc.discunif(ngcell, ngcell+nbcell-1)}
new_rdhc2bc()
rdhc2mc = new Random(rseed) // use for syn.connections
proc new_rdhc2mc() {rdhc2mc.discunif(ngcell+nbcell, ngcell+nbcell+nmcell-1)}
new_rdhc2mc()
//*********************************************************************************
rdsyna = new Random(rseed) // initialize random distr.
proc new_rdsyna() {rdsyna.discunif(0, 1)}
new_rdsyna()
rdsynb = new Random(rseed) // initialize random distr.
proc new_rdsynb() {rdsynb.discunif(0, 3)}
new_rdsynb()
//**************************Sinapse realistic networks*******************************
RandUniform = new Random(rseed)
// NETWORK INITIATION
for i = 0, ngcell-1 {cell_append(Gcell[i])} // cells 0-4 GCs
for i = 0, nbcell-1 {cell_append(Bcell[i])} // cells 5-6 BC
for i = 0, nmcell-1 {cell_append(Mcell[i])} // cell 7 MC
for i = 0, nhcell-1 {cell_append(Hcell[i])} // cell 8 HC
for i = 0, npp-1 {cell_append(PPSt[i])} // cell 9 PP
//**************Preforant Path synaptic connections ******************************
proc initNet() { local i,j,k,l/*, contador8, contador2b*/
// contador8 = 0
for i=0, npp-1 {
for j=0, 99 { //ngcell-1{
// Cada dendrito de cada neurônio recebe sinais do PP
for k=0, NumOfDD.x[NetTopology.x[j]] {
//
// print "Random number ", Randomizer.x[NumOfDD.x[NetTopology.x[j]]], "j ", j
nc_append(i+ngcell+nbcell+nmcell+nhcell, j, k, 2e-2, 3, 10)
}
}
}
for j=0, 0 { // 15% of MCs have OML dendrites
npost = rdmc2mc.repick()
dbr = rdsynb.repick()
if ((is_connected(MossyCell[npost-ngcell-nbcell], PPstim[0]) == 0) && (npost < ngcell+nbcell+3)) {
nc_append(ngcell+nbcell+nmcell+nhcell, npost, dbr, 0.5e-2, 3, 10) // Gcell[3] to Bcell[1]
// print npost, dbr
} else { j -= 1 print "pp2mc"}
}
// }
//******************************************************************************************
//**************Granule Cell post synaptic connections ******************************
for i=0, ngcell-1 {
for j=0, 1 {
if (i < 84) { a=0}
if ((i > 83) && (i < 166)) { a=1}
if ((i > 165) && (i < 252)) { a=2}
if ((i > 251) && (i < 336)) { a=3}
if ((i > 335) && (i < 420)) { a=4}
if ((i > 419) && (i < 500)) { a=5}
Gauz3 = rdgc2bc.repick()
if (a+Gauz3 > 5) {npost = a+Gauz3-6 }
if (a+Gauz3 < 0) {npost = a+Gauz3+6}
if ((a+Gauz3 > -1) && (a+Gauz3 < 6)) {npost = a+Gauz3}
dbr = rdsynb.repick()
// print npost, a
// Basket to Granule
if ((is_connected(BasketCell[npost], Gcell[i]) == 0) && (vgc2bc.x[npost] < 180)) {
nc_append(i, ngcell+npost, dbr+2, 4.7e-3, .8, 10) // Gcell[3] to Bcell[1]
// print i, npost, dbr+2
vgc2bc.x[npost] +=1
} else {j -= 1 /*print "sdtf"*/}
}
for j=0, 0 {
if (i < 100) { a=0}
if ((i > 99) && (i < 200)) { a=1}
if ((i > 199) && (i < 300)) { a=2}
if ((i > 299) && (i < 400)) { a=3}
if ((i > 399) && (i < 500)) { a=4}
b=a*3
npost = rdgc2mc.repick()
dbr = rdsynb.repick()
// print npost, b
// MC to granule
if ((is_connected(MossyCell[npost+b], Gcell[i]) == 0) && (vgc2mc.x[npost+b] < 38)){
nc_append(i, ngcell+nbcell+npost+b, dbr+4, 0.2e-3, 1.5, 10) // Gcell[3] to Bcell[1]
// print npost+b, dbr+4
vgc2mc.x[npost+b] +=1
} else { j -= 1 /*print "mdtf"*/}
}
for j=0, 2 {
if (i < 84) { a=0}
if ((i > 83) && (i < 166)) { a=1}
if ((i > 165) && (i < 252)) { a=2}
if ((i > 251) && (i < 336)) { a=3}
if ((i > 335) && (i < 420)) { a=4}
if ((i > 419) && (i < 500)) { a=5}
Gauz3 = rdgc2hc.repick()
if (a+Gauz3 > 5) {npost = a+Gauz3-6 }
if (a+Gauz3 < 0) {npost = a+Gauz3+6}
if ((a+Gauz3 > -1) && (a+Gauz3 < 6)) {npost = a+Gauz3}
dbr = rdsynb.repick()
// HIPP to Granule
if ((is_connected(HIPPCell[npost], Gcell[i]) == 0) && (vgc2hc.x[npost] < 270)) {
nc_append(i, ngcell+nbcell+nmcell+npost, dbr, 0.5e-3, 1.5, 10) // Gcell[3] to Bcell[1]
// print npost, dbr
vgc2hc.x[npost] +=1
} else {j -= 1 /*print "hhhh"*/}
}
// 10% sprouting = 10 cells connections
for j=0, 10 {
Gauz3 = rdgc2gc.repick()
//print Gauz3
if (i+Gauz3 > 499) {npost = i+Gauz3-500 }
if (i+Gauz3 < 0) {npost = i+Gauz3+500}
if ((i+Gauz3 > -1) && (i+Gauz3 < 500)) {npost = i+Gauz3}
// granule to sprout
// for j=0, NumOfPD.x[NetTopology.x[j]]/3 {
// Spine loss represented as a lost connection
// print "npost", npost
SpineLossOdds = rdsynb.repick()
if ((NetTopology.x[npost] < 41) && (SpineLossOdds == 0) && (SpineLossEnable == 1)) {
j -= 1
contador2b += 1
print "contador2b ", contador2b, "SPINE LOSS Gcell"
if (contador2b > 5000) {
print "Please try again, the network connections were not completed."
stop
}
} else {
dbr = rdsyna.repick()
if ((is_connected(Gcell[npost], Gcell[i]) == 0) && (vgc2gc.x[npost] < 15)) {
// for k=0, NumOfPD.x[NetTopology.x[npost]]/2 {
Randomizer.x[1] = 0
for l=2, 35 {
Alea = RandUniform.repick()
Numero = abs(Alea) - int(abs(Alea))
Randomizer.x[l] = 1 + (int(Numero * ((l - 1) + 1)))
Randomizer.x[l] -= 1
}
// nc_append(i, npost, Randomizer.x[NumOfPD.x[NetTopology.x[npost]]] + (NumOfDD.x[NetTopology.x[npost]]*2) + NumOfPD.x[NetTopology.x[npost]] + 1, 2e-3, .8, 10) // original value
nc_append(i, npost, Randomizer.x[NumOfPD.x[NetTopology.x[npost]]] + (NumOfDD.x[NetTopology.x[npost]]*2) + NumOfPD.x[NetTopology.x[npost]] + 1, 2e-3, .8, 10) // Gcell[3] to Bcell[1]
// print i, npost, dbr+8
// }
vgc2gc.x[npost] +=1
} else {j -= 1
// print "gc2gc"
// print "origen", i, "destino", npost
Counter8 += 1
if (Counter8 > NumOfPD.x[NetTopology.x[j]]) {
Gauz3 = rdgc2gc.repick()
if (i+Gauz3 > 499) {npost = i+Gauz3-500 }
if (i+Gauz3 < 0) {npost = i+Gauz3+500}
if ((i+Gauz3 > -1) && (i+Gauz3 < 500)) {npost = i+Gauz3}
Counter8 = 0
}
}
}
}
}
//******************************************************************************************
//**************Basket Cell post synaptic connections ******************************
for i=0, nbcell-1 {
for j=0, 99 {
npost = rdbc2gc.repick()
Sinapsis = (NumOfDD.x[NetTopology.x[npost]] * 2) + NumOfPD.x[NetTopology.x[npost]]
// Granule to BC
if ((is_connected(Gcell[npost], BasketCell[i]) == 0) && (vbc2gc.x[npost] < 2)) {
nc_append(i+ngcell, npost, Sinapsis, 1.6e-3, .85, 10) // Gcell[3] to Bcell[1]
vbc2gc.x[npost] +=1
// print i, npost, 6, "aqui"
} else {j -= 1 print "BC2GC"}
}
for j=0, 1 {
npost = rdbc2bc.repick()
dbr = rdsyna.repick()
if ((is_connected(BasketCell[npost-ngcell], BasketCell[i]) == 0) && (vbc2bc.x[npost-ngcell] < 3)) {
nc_append(i+ngcell, npost, dbr+8, 7.6e-3, .8, 10) // Gcell[3] to Bcell[1]
// print npost, dbr+8
vbc2bc.x[npost-ngcell] +=1
} else {j -= 1 print "bc2bc"}
}
for j=0, 4 {
npost = rdbc2mc.repick()
if ((is_connected(MossyCell[npost-ngcell-nbcell], BasketCell[i]) == 0) && (vbc2mc.x[npost-ngcell-nbcell] < 3)) {
nc_append(i+ngcell, npost, 12, 1.5e-3, 1.5, 10) // Gcell[3] to Bcell[1]
// print npost, 12
vbc2mc.x[npost-ngcell-nbcell] +=1
} else { j -= 1 print "bc2mc"}
}
}
//******************************************************************************************
//**************Mossy Cell post synaptic connections ******************************
}
proc initNet2() { local i,j,k, contador1, contador2, contador2b, contador3, contador4, contador5, contador6, contador7
contador1 = 0
contador2 = 0
contador2b = 0
contador3 = 0
contador4 = 0
contador5 = 0
contador6 = 0
contador7 = 0
for i=0, nmcell-1 {
if (i < 3) { y=0}
if ((i > 2) && (i < 6)) { y=1}
if ((i > 5) && (i < 9)) { y=2}
if ((i > 8) && (i < 12)) { y=3}
if ((i > 11) && (i < 15)) { y=4}
for j=0, 99 {
Gauz1 = rdmc2gc1.repick()
// print Gauz1
if (i*33+17+Gauz1 > 499) {
npost1 = i*33+17+Gauz1-500
} else {npost1 =i*33+17+Gauz1}
// print "npost1", npost1
SpineLossOdds = rdsynb.repick()
if ((NetTopology.x[npost1] < 41) && (SpineLossOdds == 0) && (SpineLossEnable == 1)) {
j -= 1
contador2b += 1
print "contador2b ", contador2b, "SPINE LOSS Mossy"
if (contador2b > 5000) {
print "Please try again, the network connections were not completed."
stop
}
} else {
// // ----------------- MC to GC
if ((is_connected(Gcell[npost1], MossyCell[i]) == 0) && (vmc2gc.x[npost1] < 7)) {
// for k=0, NumOfPD.x[NetTopology.x[npost1]]/4 {
Randomizer.x[1] = 0
for l=2, 35 {
Alea = RandUniform.repick()
Numero = abs(Alea) - int(abs(Alea))
Randomizer.x[l] = 1 + (int(Numero * ((l - 1) + 1)))
}
nc_append(i+ngcell+nbcell, npost1, Randomizer.x[NumOfPD.x[NetTopology.x[npost1]]] + NumOfDD.x[NetTopology.x[npost1]], 0.3e-3, 3, 10) // Gcell[3] to Bcell[1]
print "MC2GC"
// }
vmc2gc.x[npost1] +=1
print i, npost1, dbr+2
} else {j -= 1
print "MC2GC1"
contador1 += 1
print "contador1 ", contador1
if (contador1 > 5000) {
stop
}
}
}
// }
}
for j=0, 99 {
Gauz2 = rdmc2gc2.repick()
//print Gauz2
if (i*33+17+Gauz2 < 0) {
npost2 =i*33+17+Gauz2+500
} else {npost2 =i*33+17+Gauz2}
SpineLossOdds = rdsynb.repick()
if ((NetTopology.x[npost2] < 41) && (SpineLossOdds == 0) && (SpineLossEnable == 1)) {
j -= 1
contador2b += 1
print "contador2b ", contador2b, "SPINE LOSS Mossy 2"
if (contador2b > 5000) {
print "Please try again, the network connections were not completed."
stop
}
} else {
dbr = rdsyna.repick()
// granule to MC
if ((is_connected(Gcell[npost2], MossyCell[i]) == 0) && (vmc2gc.x[npost2] < 7)) {
// for k=0, NumOfPD.x[NetTopology.x[npost2]]/4 {
Randomizer.x[1] = 0
for l=2, 35 {
Alea = RandUniform.repick()
Numero = abs(Alea) - int(abs(Alea))
Randomizer.x[l] = 1 + (int(Numero * ((l - 1) + 1)))
}
nc_append(i+ngcell+nbcell, npost2, Randomizer.x[NumOfPD.x[NetTopology.x[npost2]]] + NumOfDD.x[NetTopology.x[npost2]], 0.3e-3, 3, 10) // Gcell[3] to Bcell[1]
// }
vmc2gc.x[npost2] +=1
print "GC2MC", i, npost2, dbr+2
} else {j -= 1
print "MC2GC2"
contador2 += 1
print "contador2 ", contador2
if (contador2 > 5000) {
stop
}
}
}
}
for j=0, 0 {
Gauz3 = rdmc2bc.repick()
if (y+Gauz3 > 5) {npost = y+Gauz3-6}
if (y+Gauz3 < 0) {npost = y+Gauz3+6}
if ((y+Gauz3 > -1) && (y+Gauz3 < 6)) {npost = y+Gauz3}
dbr = rdsyna.repick()
if ((is_connected(BasketCell[npost], MossyCell[i]) == 0) && (vmc2bc.x[npost] < 4) && (Gauz3 !=0)) {
nc_append(i+ngcell+nbcell, ngcell+npost, dbr+6, 0.3e-3, 3, 10) // Gcell[3] to Bcell[1]
// print npost, dbr+6
vmc2bc.x[npost] += 1
} else {j -= 1 print "mc2bc"}
}
for j=0, 2 {
Gauz3 = rdmc2mc1.repick()
//print Gauz3
if (i+Gauz3 > 14) {npost = i+Gauz3-15 }
if (i+Gauz3 < 0) {npost = i+Gauz3+15}
if ((i+Gauz3 >-1) && (i+Gauz3 < 15)) {npost = i+Gauz3}
//print npost
dbr = rdsynb.repick()
if ((is_connected(MossyCell[npost], MossyCell[i]) == 0) && (vmc2mc.x[npost] < 4) && (Gauz3 != 0)) {
nc_append(i+ngcell+nbcell, npost+ngcell+nbcell, dbr+8, 0.5e-3, 2, 10) // Gcell[3] to Bcell[1]
// print npost, dbr+8
vmc2mc.x[npost] +=1
} else { j -= 1
print "mc2mc"
contador4 += 1
print "contador4 ", contador4
if (contador4 > 5000) {
stop
}
}
}
for j=0, 1 {
Gauz3 = rdmc2hc.repick()
if (y+Gauz3 > 5) {npost = y+Gauz3-6}
if (y+Gauz3 < 0) {npost = y+Gauz3+6}
if ((y+Gauz3 > -1) && (y+Gauz3 < 6)) {npost = y+Gauz3}
dbr = rdsynb.repick()
if ((is_connected(HIPPCell[npost], MossyCell[i]) == 0) && (vmc2hc.x[npost] < 6) && (Gauz3 != 0)) {
nc_append(i+ngcell+nbcell, ngcell+nbcell+nmcell+npost, dbr+4, 0.2e-3, 3, 10) // Gcell[3] to Bcell[1]
// print npost, dbr+4
vmc2hc.x[npost] +=1
} else { j -= 1
print y, Gauz3, "mc2hc"
contador3 += 1
print "contador3 ", contador3
if (contador3 > 5000) {
stop
}
}
}
}
//******************************************************************************************
//**************HIPP Cell post synaptic connections ******************************
}
proc initNet3() { local i,j,l, contador1, contador2, contador2b, contador3, contador4, contador5, contador6, contador7
for i=0, nhcell-1 {
for j=0, 159 {
npost = rdhc2gc.repick()
// For newborn cells, the odds of receive a connection is a half
SpineLossOdds = rdsynb.repick()
if ((NetTopology.x[npost] < 41) && (SpineLossOdds == 0) && (SpineLossEnable == 1)) {
j -= 1
contador2b += 1
print "contador2b ", contador2b, "SPINE LOSS Hipp"
if (contador2b > 5000) {
print "Please try again, the network connections were not completed."
stop
}
} else {
dbr = rdsyna.repick()
// Granule to HIPP
if ((is_connected(Gcell[npost], HIPPCell[i]) == 0) && (vhc2gc.x[npost] < 7)) {
// for k=0, NumOfDD.x[NetTopology.x[npost]]/4 {
Randomizer.x[1] = 0
for l=2, 35 {
Alea = RandUniform.repick()
Numero = abs(Alea) - int(abs(Alea))
Randomizer.x[l] = 1 + (int(Numero * ((l - 1) + 1)))
}
nc_append(i+ngcell+nbcell+nmcell, npost, Randomizer.x[NumOfDD.x[NetTopology.x[npost]]] + NumOfDD.x[NetTopology.x[npost]] + NumOfPD.x[NetTopology.x[npost]] , 0.5e-3, 1.6, 10) // Gcell[3] to Bcell[1]
// }
// print "HIP2GC", i, npost, dbr+4
vhc2gc.x[npost] +=1
} else {j -= 1
print "HC2GC"
contador5 += 1
print "contador5 ", contador5
if (contador5 > 5000) {
stop
}
}
}
}
for j=0, 3 {
npost = rdhc2bc.repick()
dbr = rdsyna.repick()
if ((is_connected(BasketCell[npost-ngcell], HIPPCell[i]) == 0) && (vhc2bc.x[npost-ngcell] < 5)) {
nc_append(i+ngcell+nbcell+nmcell, npost, dbr+10, 0.5e-3, 1.6, 10) // Gcell[3] to Bcell[1]
// print npost, dbr+10
vhc2bc.x[npost-ngcell] += 1
} else {j -= 1
print "hc2bc"
contador6 += 1
print "contador6 ", contador6
if (contador6 > 5000) {
stop
}
}
}
for j=0, 3 {
npost = rdhc2mc.repick()
dbr = rdsynb.repick()
if ((is_connected(MossyCell[npost-ngcell-nbcell], HIPPCell[i]) == 0) && (vhc2mc.x[npost-ngcell-nbcell] < 2)) {
nc_append(i+ngcell+nbcell+nmcell, npost, dbr+13, 1.5e-3, 1, 10) // Gcell[3] to Bcell[1]
// print npost, dbr+13
vhc2mc.x[npost-ngcell-nbcell] += 1
} else { j -= 1
print "hc2mc"
contador7 += 1
print "contador7 ", contador7
if (contador7 > 5000) {
stop
}
}
}
}
}
//*********************************Print out Net cons*********************************************************
strdef strvar
objref dfile
dfile = new File()
proc saveNet(){ local i
dfile.wopen("N2I10sp")
dfile.printf("Precell \tpstcell \t Synapse \n")
for i=0, nclist.count-1 {
dfile.printf("%s\t%s\t%s\n", nclist.object[i].precell, nclist.object[i].postcell, nclist.object[i].syn)}
dfile.printf("TO BC\n GC \tBC \tMC \tHC \n")
for i= 0, nbcell-1 {dfile.printf("%d\t%d\t%d\t%d \n", vgc2bc.x[i], vbc2bc.x[i], vmc2bc.x[i], vhc2bc.x[i])}
dfile.printf("TO MC\n GC \tBC \tMC \tHC \n")
for i= 0, nmcell-1 {dfile.printf("%d\t%d\t%d\t%d\n", vgc2mc.x[i], vbc2mc.x[i], vmc2mc.x[i], vhc2mc.x[i])}
dfile.printf("TO HC \n GC\t MC\n")
for i= 0, nhcell-1 {dfile.printf("%d\t%d\n", vgc2hc.x[i], vmc2hc.x[i])}
dfile.printf("TO GC\n BC\t MC\t HC\t GC\n")
for i= 0, ngcell-1 {dfile.printf("%d\t%d\t%d\t%d\n", vbc2gc.x[i], vmc2gc.x[i], vhc2gc.x[i], vgc2gc.x[i])}
dfile.close()
}
//******************************************************************************************
strdef strmat
objref efile
efile = new File()
efile.wopen("M2I10sp.txt")
efile.printf("t\t")
for i = 0, 49 {
b = i*10
efile.printf("%s\t", cells.object[b])}
for i = 498, cells.count-2{
efile.printf("%s\t", cells.object[i])}
efile.printf("\n")
efile.close("M2I10sp.txt")
proc sMatrix(){ local j
efile.aopen("M2I10sp.txt")
efile.printf("%f\t", t)
for i = 0, 49 {
b = i*10
efile.printf("%f\t", cells.object[b].soma.v(0.5))}
for j =498, cells.count-2 {
efile.printf("%f\t", cells.object[j].soma.v(0.5))}
efile.printf("\n")
efile.close("M2I10sp.txt")
}
objref VmT
objref VmMat[cells.count-1]
VmT = new Vector()
for i=0, cells.count-2 {
VmMat[i] = new Vector()
}
proc VecMx() { local i
VmT.append(t)
for i=0, cells.count-2 {
VmMat[i].append( cells.object[i].soma.v(0.5))
}
}
objref Spike[cells.count-1]
for i=0, cells.count-2 {
Spike[i] = new Vector()
}
strdef Spkstr
objref dfile
dfile = new File()
proc SpkMx() { local i, j
for i=0, cells.count-2 {
Spike[i].spikebin(VmMat[i], 0)
}
dfile.wopen("S2I10sp.txt")
while(k < VmT.size) {
for j = 0, cells.count-2 {
if(Spike[j].x[k] != 0) {
dfile.printf("%f\t%d\n", VmT.x[k], j)}
}
k +=1 }
dfile.close("S2I10sp.txt")
}
objref r_plt
proc initrPlt() {
r_plt = new Graph(0)
r_plt.size(0, tstop,0, cells.count)
r_plt.label(0.95, 0.02, "ms")
r_plt.label(0.01, 0.82, "neu")
r_plt.view(0,0, tstop, cells.count,320,20,300,230)
}
initrPlt()
proc plotAP() { local i, a
a=1
r_plt.erase()
while(j < cells.count-2) {
for i = 0, VmT.size-1 {
if ((j > ngcell-1)&&(j < ngcell+nbcell-1)) { a=2}
if ((j > ngcell+nbcell-1)&&(j < ngcell+nbcell+nmcell-1)) { a=3}
if (j > ngcell+nbcell+nmcell-1) { a=4}
if (Spike[j].x[i] == 1) {
r_plt.mark(VmT.x[i], j, "T", 5, a, 1)}}
// print "Coordenadas"
// print i, j
j+=1}
r_plt.flush()
}
//################################################################################################
proc init() { local dtsav, temp, secsav
finitialize(v_init)
t = -1000
dtsav = dt
secondorder =0
dt= 10
// if cvode is on, turn it off to do large fixed step
temp= cvode.active()
if (temp!=0) {cvode.active(0)}
while(t<-100) { fadvance() print t}
//restore cvode if reqd
if (temp!=0) {cvode.active(1)}
dt = dtsav
secondorder =2
t = 0
if (cvode.active()){
cvode.re_init()
}else{
fcurrent()
}
//frecord_init()
}
proc continuerun() {local rt
eventcount =0
eventslow =1
stoprun =0
if (using_cvode_) {
cvode.event($1)
}
while(t < $1 && stoprun == 0) {
step()
sMatrix()
VecMx()
rt = stopsw()
if (rt > realtime) {
realtime = rt
if (!stdrun_quiet) fastflushPlot()
doNotify()
if (realtime == 2 && eventcount > 50) {
eventslow = int(eventcount/50)+1
}
eventcount = 0
}else{
eventcount = eventcount +1
if ((eventcount%eventslow) == 0) {
doEvents()
}
}
}
flushPlot()
}
objectvar save_window_, rvp_
objectvar scene_vector_[4]
objectvar ocbox_, ocbox_list_, scene_, scene_list_
{ocbox_list_ = new List() scene_list_ = new List()}
{
xpanel("RunControl", 0)
v_init = -60
xvalue("Init","v_init", 1,"stdinit()", 1, 1 )
xbutton("Init & Run","run()")
xbutton("Stop","stoprun=1")
runStopAt = 5
xvalue("Continue til","runStopAt", 1,"{continuerun(runStopAt) stoprun=1}", 1, 1 )
runStopIn = 1
xvalue("Continue for","runStopIn", 1,"{continuerun(t + runStopIn) stoprun=1}", 1, 1 )
xbutton("Single Step","steprun()")
t = 0
xvalue("t","t", 2 )
tstop = 300 //1500
xvalue("Tstop","tstop", 1,"tstop_changed()", 0, 1 )
dt = 0.1
xvalue("dt","dt", 1,"setdt()", 0, 1 )
steps_per_ms = 10 //40
xvalue("Points plotted/ms","steps_per_ms", 1,"setdt()", 0, 1 )
xpanel(344,321)
}
proc rrun(){
initNet()
initNet2()
initNet3()
saveNet()
run()
SpkMx()
}
rrun()
plotAP()
objectvar scene_vector_[1]
{doNotify()}
//quit()
// the below allows modelview to run
access Gcell[0].soma
// quit()