Reconstituting the results of a complete simulation from the segmentxx.dat files
This is done by init_reconst.hoc, which contains two procedures:
- proc reconst(), which reads the data from each segmentxx.dat file in turn, and appends them to a pair of Vectors
- proc xytofile(), which is identical to the procedure with the same name in initcell_fullrun.hoc and initcell_segrun.hoc
Here is init_reconst.hoc
///// read NSEGS segmentnn.dat files and reconsititute a complete simulation from them NSEGS = 3 strdef tmpstr // for constructed file names objref testtvec, testvvec testtvec = new Vector() testvvec = new Vector() // read $1 files called $s200.dat..$s2$1-1.dat // and concatenate their data contents to generate a "complete" pair of vectors proc reconst() { local i, j, numpts localobj fil testtvec = new Vector() testvvec = new Vector() for i=0,$1-1 { // open $s2i.dat file sprint(tmpstr, "%s%2.2d.dat", $s2, i) print "reading ", tmpstr // read data from segment$i.dat file and append to testtvec and testvvec fil = new File() fil.ropen(tmpstr) numpts = fil.scanvar() for j=0,numpts-1 { testtvec.append(fil.scanvar()) testvvec.append(fil.scanvar()) } } } reconst(NSEGS, "segment") // $o1, $o2 Vectors of x & y values, respectively // $s3 file name string proc xytofile() { local i localobj tfil print "writing to ", $s3 tfil = new File() tfil.wopen($s3) tfil.printf("%d\n",$o1.size()) for i=0,$o1.size()-1 tfil.printf("%g\t%g\n", $o1.x[i], $o2.x[i]) tfil.close() } // finally, write testtvec and testvvec to a file xytofile(testtvec, testvvec, "reconst.dat") print "exit NEURON, then compare complete.dat and reconst.dat"
Verifying that the reconstituted and original results are identical
At the UNIX/Linux command line
ls -l reconst.dat complete.dat
reveals that both files are 3194 bytes long, and
cmp reconst.dat complete.dat
returns no error message, so their contents are identical