2. Run a "complete" simulation and save its results

It was easy to implement recording and saving of a full run.

  1. Create a hoc file called cellrecord_fullrun.hoc that contains statements to accomplish these tasks:
    • set up Vector recording of the key variables (in this case, just time and soma.v(0.5))
    • call run() to launch a simulation
    • write the results to a file
  2. Add a load_file("cellrecord_fullrun.hoc") statement to the end of a copy of initcell_basic.hoc, and save this as initcell_fullrun.hoc

Here is initcell_fullrun.hoc

load_file("nrngui.hoc")

load_file("cellspec.hoc") // properties of model cell
load_file("cellrig.hoc") // basic instrumentation and simulation control
  // required to launch a simulation and see results
  // i.e. just an IClamp, graph, and RunControl

load_file("cellrecord_fullrun.hoc") // sets up Vector recording,
  // executes full run, and saves results to "complete.dat"

And here is cellrecord_fullrun.hoc

///// advanced instrumentation

// capture data to Vectors
objref tvec, vvec
tvec = new Vector()
vvec = new Vector()
tvec.record(&t)
vvec.record(&soma.v(0.5))

///// advanced simulation control

// execute a "complete" simulation and save results to a file

run()

// $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()
}

xytofile(tvec, vvec, "complete.dat")

Executing initcell_fullrun.hoc generates a file called complete.dat. Here are brief excerpts from the beginning and end of complete.dat

[ted@loki cellmodels]$ head complete.dat 
241
0       -70
0.025   -70
0.05    -70
0.075   -70
0.1     -70
0.125   -70
0.15    -70
0.175   -70
0.2     -70
[ted@loki cellmodels]$ tail complete.dat
5.775   -62.414
5.8     -62.3831
5.825   -62.3522
5.85    -62.3214
5.875   -62.2907
5.9     -62.26
5.925   -62.2294
5.95    -62.199
5.975   -62.1685
6       -62.1382