// Parameters for Fit Routine
// (to be loaded first)
strdef ExperimentName, CellName, CellFileName, TauFileName, LeakFileName
objref stimSec,VProtocol,VProtocolTVector
ExperimentName = "cylinder" // experimental data to fit
LeakFileName = "cylinder" // for each cell only
CellName = "cylinder" // to be included by LoadNInit-Proc from cell.hoc
//TauFileName = "cylinder" // contains taus for dummy conductance
print " reading Fit-Parameters from File ",ExperimentName,".fit.par"
// ++++ FILTER PARAMETERS ++++
FilterOn=0
fZero=5000 // filter corner frequency
numpoles=2 // number of times the filter will be convoluted with the data
StartTau = 0
EndTau = 5
// ++++ CELL PARAMETERS ++++
// Cell-Morphology, Passive and active Parameters (for Fit Routine)
// the following is used first by cell.hoc, then by fit.hoc
ra = 250
global_ra = ra
rm = 20000
c_m = 0.75
v_init = -110
celsius = 22
Ek = -80
Eca = 60
Epas = -80
revPot = Ek
// {xopen("cells/cell.hoc")} // Mainen-Cell
// LoadNInit(CellName) // proc. from cell.hoc; initializes cell: creates basal, apical, axon - Lists
sprint(CellFileName,"cells/%s.cell",CellName)
{xopen(CellFileName)} // Load Cell
ReduceCell=0 // reducing cell model or not in fit.hoc
//++++ VCLAMP- PARAMETERS:
// defining VClamp-location:
load_file("twoclamp.hoc")
somaA stimSec = new SectionRef()
stimPosI=0.5
stimPosV=0.5
// 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
dtAdapt=1
MeasTStart = VProtocolTstart[VProtocolNumSteps-1] // beginning of measurements, i.e. also beginning of kinetics in gDK.mod
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]
}
Experimental_dt = 0.025 // basic integration time step
// scaled dts for t>MeasTStart (i.e. within measurements):
DTRes = 1/100 // "dt=measTime*DTRes" -scaling
DTmin = 0.025 // minimal dt; all dts will be n*dtmin
// Voltage - Steps: (must match exp. data)
NumVSteps = 16
VStep = 10 // height of VStep
FirstVStep = 1 // VStep to start Fit Routine at
LastVStep = NumVSteps-1
VStepDirection = 1 // for toggling backward/forward calculation
double vclmp[NumVSteps] // Voltages starting at COUNT=0!!
// Initializing VClamp- Array:
for VStepCount=0,NumVSteps-1 { // array starts at 0
vclmp[VStepCount] =-80+VStepCount*VStep}
double org_taus[NumVSteps] // array to store original taus
// ++++ TIMES ++++
// 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 experimental data is available
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]!!
// Time - Steps:
// Time-Points out of ExpMeasTimes-array from Exp. at which fit is supposed to be done:
NumFitTPoints = 100
double FitTPoints[NumFitTPoints+1]
// Initialize FitTPoints:
for FitTStepCount=0, NumFitTPoints FitTPoints[FitTStepCount] =FitTStepCount
// i.e. fit at all meas.points
// ++++ CURRENTS AND CONDUCTANCES ++++
// IClamp-Array for exp. data:
double iclmp[NumVSteps][NumTSteps+1]
// corresponding Ileak-Array:
double leak[NumVSteps][NumTSteps+1]
// (both filled later by ReadICandLeak)
// temporal resolution of gbar[voltage][gbarTRes * MaxMeasTime] -Array:
gbarTRes = 10 // steps per ms
gbarNumTSteps = gbarTRes*MaxMeasTime
// MaxMeasTime is the same for experimental data and max g(t)
gDKVmin = -120
gDKVmax = 180
gDKVRange = gDKVmax-gDKVmin // caution: has to match gv[] in gDK.mod
// VRange is relevant both for gv[] and tau[] in gDK.mod
OutputVScale = 5 // print gbar[v] to file in .. mV steps
gDKVOffset = 120.5 // voltage Offset in gDK.mod, used by fit.hoc
gDKVPointerConverter = gDKVOffset - 0.5
// must simply be added to convert real voltages->Pointer, subtracted for vice versa
double gbar[gDKVRange+1][gbarTRes*(MaxMeasTime+1)]
double InitialTaus[gDKVRange+1] // estimated taus read from file
// ++++ FIT - PARAMETERS ++++
Tolerance=0.001 // tolerance of squr deviation of deltaI in Algorithm
startG = -3 // logbase2of lastg (initial Value of Dummy conductance)
numRun = 40 // number of iterations
PrintVerbose = 0
// Offset configuration for Fit routine:(i.e. voltage attenuation)
NumVOffsets = 1
double VOffset[NumVOffsets*2] // entry pairs: from voltage $1 use offset $2
VOffset[0]=revPot+70 // scheme: if v>Voffset[0] offset=VOffset[1]
VOffset[1]=2
// array must be filled in increasing order! no "else" used in Algorithm.fit
UseOffset = 1
DebugOn = 0
|