Correcting space clamp in dendrites (Schaefer et al. 2003 and 2007)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:22203
In voltage-clamp experiments, incomplete space clamp distorts the recorded currents, rendering accurate analysis impossible. Here, we present a simple numerical algorithm that corrects such distortions. The method enabled accurate retrieval of the local densities, kinetics, and density gradients of somatic and dendritic channels. The correction method was applied to two-electrode voltage-clamp recordings of K currents from the apical dendrite of layer 5 neocortical pyramidal neurons. The generality and robustness of the algorithm make it a useful tool for voltage-clamp analysis of voltage-gated currents in structures of any morphology that is amenable to the voltage-clamp technique.
Reference:
1 . Schaefer AT, Helmstaedter M, Sakmann B, Korngreen A (2003) Correction of conductance measurements in non-space-clamped structures: 1. Voltage-gated K+ channels. Biophys J 84:3508-28 [PubMed]
2 . Schaefer AT, Helmstaedter M, Schmitt AC, Bar-Yehuda D, Almog M, Ben-Porat H, Sakmann B, Korngreen A (2007) Dendritic voltage-gated K+ conductance gradient in pyramidal neurones of neocortical layer 5B from rats. J Physiol 579:737-52 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism:
Cell Type(s): Neocortex M1 L5B pyramidal pyramidal tract GLU cell;
Channel(s): I K; I K,leak; I M; I Potassium;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Parameter Fitting; Influence of Dendritic Geometry; Detailed Neuronal Models;
Implementer(s): Schaefer, Andreas T [andreas.schaefer at crick.ac.uk];
Search NeuronDB for information about:  Neocortex M1 L5B pyramidal pyramidal tract GLU cell; I K; I K,leak; I M; I Potassium;
/
demo
Kinetics
cells
mod
Output
cylinder.kin.par
InOut.kin
Kinetics
Routines.kin
twoclamp.hoc
                            
// Parameters for Experiment, to be loaded first

    strdef iClampFileName, loadProg
    objref vC, sh, st

    load_file("stdgui.hoc")
    {load_proc("nrnmainmenu") nrnmainmenu()}

    strdef ExperimentName, CellName, CellFileName, CurrentFileName
    objref stimSec,VProtocol,VProtocolTVector

ExperimentName = "sphere"
sprint(CurrentFileName,"Output/%s.kin",ExperimentName)
CellName  = "point" // to be included later

    print " reading experimental Parameters from File ",ExperimentName,".exp.par"


// ++++ CELL PARAMETERS ++++
// Cell-Morphology, Passive and active Parameters

// the following is inserted later
ra        = 250
global_ra = ra
rm        = 20000
c_m       = 0.75
v_init    = -110
celsius   = 22
Ek        = -80
Eca       = 60
Epas      = -65

gKslow    = 0
gKfast    = 50
gKv       = 0
gKm	  = 0
gKap	  = 0

ReduceCell = 0


    sprint(CellFileName,"cells/%s.cell",CellName)
    {xopen(CellFileName)}  // Load Cell


// defining VClamp-location:
somaA stimSec = new SectionRef()
stimPos=0.5



forall {
  // passive:
  insert pas
  Ra = ra
  cm = c_m
  g_pas = 1/rm
  e_pas = Epas
  // active:
    insert kslow
    gbar_kslow = gKslow   // explicitely set above
    insert kfast
    gbar_kfast = gKfast
    insert kv
    gbar_kv = gKv
    insert km
    gbar_km = gKm
    insert kap
    gkabar_kap = gKap
  ek=Ek
}



//++++ VCLAMP- PARAMETERS:


// setting duration and amplitude of clamp-protocol:

VClampSeriesR = 1e-5 // setting it to something like ideal to accopunt for TEVC



VProtocolNumSteps = 4               // including final (fit-) step

    double DTSteps[VProtocolNumSteps]

    double VProtocolTstart[VProtocolNumSteps]

    VProtocol = new Vector(VProtocolNumSteps)

    VProtocolTVector = new Vector(VProtocolNumSteps)

VProtocol.x[0]      = -110
DTSteps[0]          = 100
VProtocolTstart[0]  = 0

VProtocol.x[1]      = -110
DTSteps[1]          = 10
VProtocolTstart[1]  = 8000  // start times!

VProtocol.x[2]      = -110
DTSteps[2]          = 0.1
VProtocolTstart[2]  = 8400

VProtocol.x[3]      = -80
DTSteps[3]          = 0.025
VProtocolTstart[3]  = 8410  // i.e. beginning of measurements



MeasTStart = VProtocolTstart[VProtocolNumSteps-1]  // beginning of measurements

for VProtCount=1,VProtocolNumSteps-1 {     // make sure that voltage will be = VProtocol[x] for TStart[x] <= t < TStart[x+1]
  VProtocolTVector.x[VProtCount] = VProtocolTstart[VProtCount] + DTSteps[VProtCount]/2
}

Experimental_dt = 0.025             // basic integration time step




// Voltage - Steps:

NumVSteps = 16
VStep = 10    // height of VStep
FirstVStep = 2      // VStep to start Fit Routine at
LastVStep = NumVSteps-1
VStepDirection = 1   // for toggling backward/forward calculation
Vmin = -80

    double vclmp[NumVSteps]  //Voltages starting at COUNT=0!!

for VStepCount=0,NumVSteps-1 {//array starts at 0
  vclmp[VStepCount] =Vmin+VStepCount*VStep}  // Initializing VClamp- Array



// ++++ TIMES ++++


Experimental_dt = 0.025 // basic integration time step


// Time - Steps:
// timescale in experimental data:

MaxMeasTime = 50  // unit is ms!!
ExpTRes = 10      // steps per ms
NumTSteps = ExpTRes*MaxMeasTime   // i.e. number of timepoints at which experiment is supposed to be done

    double MeasTimes[NumTSteps+1]  // including time ZERO

// Initialize ExpMeasTimepoint-Array (must match timescale in *.iCl:
for TStepCount=0, NumTSteps  MeasTimes[TStepCount]=TStepCount* 1/ExpTRes // times in [ms]!!




// ++++ CURRENTS AND CONDUCTANCES ++++

// IClamp-Array for exp. data:
    double iclmp[NumVSteps][NumTSteps+1]

// corresponding Ileak-Array:
    double leak[NumVSteps][NumTSteps+1]


DebugOn = 0

// xopen("Kinetics")