objref gbarscale
gbarscale = new Vector()
gbarscale = gbarscale.indgen(0,0.020,0.001)

// This chunk is to create two point processes.
// run once
objectvar stim
stim = new IClamp(0.5)
stim.del=100
stim.dur=500
tstop=700

objref apc
apc = new APCount(0.5)
apc.thresh = -20
//

objref rect, recv, recn, threshxt, reci, recscale, reclat
objref peakv, antipeakv, peakdiff, apamp
recn = new Vector()
reci = new Vector()
recscale = new Vector()
reclat = new Vector()

for j = 0, 20{
gkbar_kv4 = gbarscale.x[j]

 for i = 0, 50 {
  stim.amp = 0.012*i

//this chunk is to initiate vectors as empty because append was used in the loop
  rect = new Vector()
  recv = new Vector()
  threshxt= new Vector()
  peakv = new Vector()
  antipeakv = new Vector()
  peakdiff = new Vector()
  apamp = new Vector()
 
  posl = 0 
  posr=0

  rect.record(&t)
  recv.record(&soma.v(0.5))
  apc.record(threshxt)
  run()
 
  if (apc.n >=2){
   for k = 0, threshxt.size()-2{
    posl = rect.indwhere("==", threshxt.x[k])
    posr = rect.indwhere("==", threshxt.x[k+1])
    peakv.append(recv.max(posl, posr))
    antipeakv.append(recv.min(posl,posr))}
 
    k = threshxt.size()-1 
    posl = rect.indwhere("==", threshxt.x[k])
    posr = rect.indwhere("==",600)
    peakv.append(recv.max(posl, posr))
    antipeakv.append(recv.min(posl,posr))
 
    peakdiff = peakv.c.sub(antipeakv)
    apamp.where(peakdiff,">=",30)
    recn.append(apamp.size())
    reclat.append(rect.x[recv.indwhere("==",peakv.x[0])]) 
  }else if (apc.n==1){
   posl = rect.indwhere("==", threshxt.x[0])
   posr = rect.indwhere("==",600)
   peakv.append(recv.max(posl, posr))
   antipeakv.append(recv.min(posl,posr))
   peakdiff = peakv.c.sub(antipeakv)
   apamp.where(peakdiff,">=",30)
   recn.append(apamp.size())
   reclat.append(rect.x[recv.indwhere("==",peakv.x[0])])  
  } else {
   recn.append(0)
   reclat.append(600)
  }
 reci.append(stim.amp)
 recscale.append(gkbar_kv4)
 }
}

objref savdata
savdata = new File()
savdata.wopen("kv4_20190516_1n.dat")

savdata.printf("reci recn reclat recscale\n")

objref tempmatrix
tempmatrix = new Matrix()
tempmatrix.resize(recn.size(),4)
tempmatrix.setcol(0, reci)
tempmatrix.setcol(1, recn)
tempmatrix.setcol(2, reclat)
tempmatrix.setcol(3, recscale)
tempmatrix.fprint(savdata, " %g")
savdata.close()