print "loading clamp routines for experiment ....." // CLAMP-ROUTINES for EXPERIMENT proc init() { finitialize(v_init) fcurrent() } proc OLDrun() { local tstepcount // while (t<tstop) { // doesn't work properly for unknown reason for tstepcount=1,((tstop-t)/dt) { if (DebugOn==2) print "time: ",t," dt:",dt," voltage:",vC.amp1 if (DebugOn==2) { forall print "time: ",t," dt:",dt,"voltage:",vC.amp1, " gkfast:", gkfast_kfast," gbar:", gbar_kfast } if (DebugOn==2) print "debug run1" fadvance() if (DebugOn==2) print "debug run2" if (DebugOn==2) print "time: ",t,"tstop:",tstop,"tstepcount:",tstepcount," dt:",dt," voltage:",vC.amp1 if (DebugOn==2) if (t<tstop) print "yes",t,tstop else print "no" } } proc run() { local tstepcount for tstepcount=1,((tstop-t)/dt) { if (DebugOn==7) print "time: ",t," dt:",dt," voltage:",vC.vc if (DebugOn==2) { forall print "time: ",t," dt:",dt,"voltage:",vC.amp1, " gkfast:", gkfast_kfast," gbar:", gbar_kfast } if (DebugOn==2) print "debug run1" fadvance() if (DebugOn==2) print "debug run2" if (DebugOn==2) print "time: ",t,"tstop:",tstop,"tstepcount:",tstepcount," dt:",dt," voltage:",vC.amp1 if (DebugOn==2) if (t<tstop) print "yes",t,tstop else print "no" } } proc CalcLeak() { local VStepCount, TStepCount //m simulating without kinetics print " Simulating LeakCurrents (by setting all active gs=0):" //debug for VStepCount=0,NumVSteps-1 { VProtocol.x[VProtocolNumSteps-1] =vclmp[VStepCount] VProtocol.play(&vC.b.x[4],VProtocolTVector) init() for VProtCount=0,VProtocolNumSteps-2 { // pre-pulses tstop=VProtocolTstart[VProtCount+1] dt=DTSteps[VProtCount] // adapted dts run() } TStepCount=0 leak[VStepCount][TStepCount] =vC.ic //starting Measurements: dt = DTSteps[VProtocolNumSteps-1] for TStepCount=1,NumTSteps { tstop=MeasTStart+MeasTimes[TStepCount] run() leak[VStepCount][TStepCount] =vC.ic }// time }// voltage }// proc CalcLeak proc MeasureCurrents() {local VStepCount, TStepCount, VProtCount print "+++++++++++++++++ doing the experiment +++++++++++++" for VStepCount=0,NumVSteps-1 { VProtocol.x[VProtocolNumSteps-1] =vclmp[VStepCount] print "Voltage: ",VProtocol.x[VProtocolNumSteps-1] VProtocol.play(&vC.b.x[4],VProtocolTVector) init() for VProtCount=0,VProtocolNumSteps-2 { // pre-pulses tstop=VProtocolTstart[VProtCount+1] dt=DTSteps[VProtCount] // adapted dts run() } TStepCount=0 iclmp[VStepCount][TStepCount] =vC.ic VClmp[VStepCount][TStepCount] = vC.vc dt = DTSteps[VProtocolNumSteps-1] for TStepCount=1,NumTSteps { tstop=MeasTStart+MeasTimes[TStepCount] run() iclmp[VStepCount][TStepCount] =vC.ic VClmp[VStepCount][TStepCount] = vC.vc }// time }// voltage }// proc MeasureCurrents proc SubtractLeak() { local VStepCount, TStepCount //m decrease IClamp-Entries by simulated //m Leak from CalcLeak() print " Subtracting calculated Leak " //debug for VStepCount=0,NumVSteps-1 { for TStepCount=0,NumTSteps { iclmp[VStepCount][TStepCount]-=leak[VStepCount][TStepCount] } } }