// Save simulation data to a folder (data0)
DT = 0.2 // Record data with a resolution of 0.2 ms
DTT = 0.02 // Record data with a resolution of 0.02 ms
sum = 0
objref f1
f1 = new File()
strdef filepath, filepath1, string, filename, WD
objref time, input, Vmean, Vmean2
objref Gpm[nmitx][nmity]
objref Ggm[nMit][nGran], Ggm_Total[nMit]
objref Vms[nmitx][nmity], Vmd[nmitx][nmity], Vmt[nmitx][nmity]
objref Vgs[ngranx][ngrany], Vgb[ngranx][ngrany]
objref Vps[npgx][npgy], Vpb[npgx][npgy]
objref Tt
objref Vmc22[5]
filepath1 = "RSP2/" // used to store random background inputs; not used currently
Tt = new Vector()
time = new Vector()
input = new Vector()
// Record time
Tt.record(&t, DTT)
time.record(&t, DT)
// Record input timecourse
input.record(&MCinput[0][0].i, DT)
//====================================================
// Record Voltage
//====================================================
for i = 0, 4 {
Vmc22[i] = new Vector()
}
Vmc22[0].record(&mit[2][2].soma.v(0.5), DTT)
Vmc22[1].record(&mit[2][2].dend.v(0.16), DTT)
Vmc22[2].record(&mit[2][2].dend.v(0.35), DTT)
Vmc22[3].record(&mit[2][2].dend.v(0.47), DTT)
Vmc22[4].record(&mit[2][2].dend.v(0.99), DTT)
// Record Mit Soma Voltage
for i=0, nmitx-1 {
for j=0, nmity-1 {
Vms[i][j] = new Vector()
Vms[i][j].record(&mit[i][j].soma.v(0.5), DT)
}
}
// Record Mit Dend Voltage
for i=0, nmitx-1 {
for j=0, nmity-1 {
Vmd[i][j] = new Vector()
Vmd[i][j].record(&mit[i][j].dend.v(1.0), DT)
}
}
// Record Mit tuft Voltage
for i=0, nmitx-1 {
for j=0, nmity-1 {
Vmt[i][j] = new Vector()
Vmt[i][j].record(&mit[i][j].tuft.v(0.5), DT)
}
}
// Record PG Soma Voltage
for i=0, npgx-1 {
for j=0, npgy-1 {
Vps[i][j] = new Vector()
Vps[i][j].record(&pg[i][j].soma.v(0.5), DT)
}
}
// Record PG Spine Voltage
for i=0, npgx-1 {
for j=0, npgy-1 {
Vpb[i][j] = new Vector()
Vpb[i][j].record(&pg[i][j].gemmbody.v(0.5), DT)
}
}
// Record GC Soma Voltage
for i=0, nmitx-1 {
for j=0, nmity-1 {
Vgs[i][j] = new Vector()
Vgs[i][j].record(&gran[i][j].soma.v(0.5), DT)
}
}
// Record Gran Spine Voltage
for i=0, ngranx-1 {
for j=0, ngrany-1 {
Vgb[i][j] = new Vector()
Vgb[i][j].record(&gran[i][j].gemmbody.v(0.5), DT)
}
}
//====================================================
// Record Conductance
//====================================================
// Record PG->MC conductance
for i=0, nmitx-1 {
for j=0, nmity-1 {
Gpm[i][j] = new Vector()
Gpm[i][j].record(&p2m[i][j].g, DT)
}
}
// Record GC->MC conductance
for i=0, nMit-1 {
for j=0, GMS[i]-1 {
Ggm[i][j] = new Vector()
Ggm[i][j].record(&g2m[i][j].g, DT)
}
}
//====================================================
// Save Data
//====================================================
proc save_data() {
WD = getcwd()
sprint(filepath, "data%d",$1)
print filepath
print "\n"
FL=chdir(filepath)
if (FL==-1) {
sprint(string, "system(\"mkdir %s\")", filepath)
//chdir("getcwd()")
chdir(WD)
execute(string)
} else {
chdir(WD)
}
//====================================================
size1 = Vms[0][0].size()
Vmean = new Vector(size1, 0)
// Calculate mean voltage
for i=0, nmitx-1 {
for j=0, nmity-1 {
Vmean = Vmean.c.add(Vms[i][j])
}
}
size2 = Vgb[0][0].size()
Vmean2 = new Vector(size2, 0)
for i=0, ngranx-1 {
for j=0, ngrany-1 {
Vmean2 = Vmean2.c.add(Vgb[i][j])
}
}
// Calculate the total GC GABAa conductance to each MC
size = Ggm[0][0].size()
for i=0, nMit-1 {
Ggm_Total[i] = new Vector(size, 0)
for j=0, GMS[i]-1 {
Ggm_Total[i] = Ggm_Total[i].c.add(Ggm[i][j])
}
}
// ====================================================
// Save Input
// ====================================================
sprint(filename, "%s/OSN", filepath)
f1.wopen(filename)
input.printf(f1)
f1.close()
sprint(filename, "%s/Odor", filepath)
f1.wopen(filename)
for i = 0, nmitx-1 {
for j = 0, nmity-1 {
f1.printf("%5.4f ", odor[i][j])
f1.printf("\n")
}
}
f1.close()
// ====================================================
// Save Simulation Time
// ====================================================
sprint(filename, "%s/tt", filepath)
f1.wopen(filename)
time.printf(f1)
f1.close()
sprint(filename, "%s/Tt", filepath)
f1.wopen(filename)
Tt.printf(f1)
f1.close()
//====================================================
// Save Conductance
//====================================================
// Save PG-->MC conductance
for i=0, nmitx-1 {
for j=0, nmity-1 {
sprint(filename, "%s/Gpm%d%d",filepath, i,j)
f1.wopen(filename)
Gpm[i][j].printf(f1)
f1.close()
}
}
// Save GC-->MC conductance
for i=0, nMit-1 {
sprint(filename, "%s/Ggm%d",filepath, i)
f1.wopen(filename)
Ggm_Total[i].printf(f1)
f1.close()
}
//====================================================
// Save Voltage
//====================================================
// Save voltage of lateral DEND of MC22 at various points
for i = 0, 4 {
sprint(filename, "%s/Vmc22_%d",filepath, i)
f1.wopen(filename)
Vmc22[i].printf(f1)
f1.close()
}
// Save mean MC voltage
Vmean = Vmean.div(nMit)
sprint(filename, "%s/Vam", filepath)
f1.wopen(filename)
Vmean.printf(f1)
f1.close()
Vmean2 = Vmean2.div(nGran)
sprint(filename, "%s/Vag", filepath)
f1.wopen(filename)
Vmean2.printf(f1)
f1.close()
// Save voltage of mitral cells
// Soma
for i=0, nmitx-1 {
for j=0, nmity-1 {
sprint(filename, "%s/Vms_%d_%d",filepath, i,j)
f1.wopen(filename)
Vms[i][j].printf(f1)
f1.close()
}
}
// Dendrite
for i=0, nmitx-1 {
for j=0, nmity-1 {
sprint(filename, "%s/Vmd_%d_%d",filepath, i,j)
f1.wopen(filename)
Vmd[i][j].printf(f1)
f1.close()
}
}
// Save PG voltages
// Soma
/*
for i=0, npgx-1 {
for j=0, npgy-1 {
sprint(filename, "%s/Vps%d%d",filepath, i,j)
f1.wopen(filename)
Vps[i][j].printf(f1)
f1.close()
}
}
*/
// Spine
for i=0, npgx-1 {
for j=0, npgy-1 {
sprint(filename, "%s/Vpb_%d_%d",filepath, i,j)
f1.wopen(filename)
Vpb[i][j].printf(f1)
f1.close()
}
}
// Save GC voltages
// Soma
/*
for i=0, nmitx-1 {
for j=0, nmity-1 {
sprint(filename, "%s/Vgs%d%d",filepath, i,j)
f1.wopen(filename)
Vgs[i][j].printf(f1)
f1.close()
}
}
*/
// Spine
for i=0, ngranx-1 {
for j=0, ngrany-1 {
sprint(filename, "%s/Vgb_%d_%d",filepath, i,j)
f1.wopen(filename)
Vgb[i][j].printf(f1)
f1.close()
}
}
//====================================================
// Save Spike Time
//====================================================
// Save MC somatic spike time
for i=0, nmitx-1 {
for j=0, nmity-1 {
sprint(filename, "%s/Ms_%d_%d",filepath, i,j)
f1.wopen(filename)
mit[i][j].spiketimes.printf(f1)
f1.close()
}
}
// Save MC dendritic spike time
for i=0, nmitx-1 {
for j=0, nmity-1 {
sprint(filename, "%s/Md_%d_%d",filepath, i,j)
f1.wopen(filename)
mit[i][j].dendspike.printf(f1)
f1.close()
}
}
// Save GC somatic spike time
for i=0, ngranx-1 {
for j=0, ngrany-1 {
sprint(filename, "%s/Gs_%d_%d",filepath, i,j)
f1.wopen(filename)
gran[i][j].spiketimes.printf(f1)
f1.close()
}
}
// Save GC dendritic spike time
for i=0, ngranx-1 {
for j=0, ngrany-1 {
sprint(filename, "%s/Gd_%d_%d",filepath, i,j)
f1.wopen(filename)
gran[i][j].dendspike.printf(f1)
f1.close()
}
}
// Save PG somatic spike time
for i=0, npgx-1 {
for j=0, npgy-1 {
sprint(filename, "%s/Ps_%d_%d",filepath, i,j)
f1.wopen(filename)
pg[i][j].spiketimes.printf(f1)
f1.close()
}
}
// Save PG dendritic spike time
for i=0, npgx-1 {
for j=0, npgy-1 {
sprint(filename, "%s/Pd_%d_%d",filepath, i,j)
f1.wopen(filename)
pg[i][j].dendspike.printf(f1)
f1.close()
}
}
//===============================================
// Save random spontaneous spikes
/*
for i = 0, nmitx-1 {
for j = 0, nmity-1 {
sprint(filename, "%ssp%d%d",filepath1, i, j)
f1.wopen(filename)
RSP[i][j].printf(f1)
f1.close()
}
}
*/
}