// K-M Ion Channel Dynamics (Baker 2003)
//
// Copyright 2007 John L Baker. All rights reserved.
//
// This software is provided AS IS under the terms of the Open Source
// MIT License. See http://www.opensource.org/licenses/mit-license.php.
//
// File: ionchan_k_m_baker_2003.h
//
// Release: 1.0.0
// Author: John Baker
// Updated: 14 July 2006
//
// Description:
//
// This header file contains the classes used to implement
// the K-M (muscarinic) channel. The model is derived using the
// kinetic scheme in Selyanko & Brown adapted to voltage sensitivity
// found in CA1 along with time constants from Halliwell and Adams.
//
// The Q10 value for Halliwell and Adams is fairly large (5) and
// even the change from 30 to 37 degrees is significant as far as
// speed of deactivation is concerned.
//
// Selyanko and Brown show a [Ca++]-external sensitivity, especially
// in slope (k). For the [Ca++]=0 case, the voltage response is similar.
// to that reported for CA1. However, this results in significant channel
// open probability near rest, which is not reported. Voltage response
// for [Ca++]-ext = 2mM in Selyanko and Brown is used here instead.
//
// References:
//
// Chen X and Johnston D (2004).Properties of single voltage-dependent
// K+ channels in dendrites of CA1 pyramidal neurones of rat hippocampus.
// J. Physiology 559, 187-203.
//
// Halliwell JV, Adams PR (1982). Voltage-clamp analysis of muscarinic
// excitation in hippocmapal neurons. Brain Res. 250:71-92.
//
// Hu H, Vervaeke K, and Storm J. (2002). Two forms of electrical
// resonance at theta frequencies, generated by M-current, h-current
// and persistent Na+ current in rat hippocampal pyramidal cells.
// J. Physiology 545, 783-805.
//
// Selyanko AA and Brown DA (1999). M-Channel gating and simulation.
// Biophysical Journal 77, 701-713.
//
// Yamada WM, Koch C, and Adams PR (1999). Multiple channels and
// calcium dynamics, in Methods in Neuronal Modeling, 2nd edition,
// ed. by C. Koch and I Segev. Cambridge: MIT Press.
// Only include this header once
#ifndef __IONCHAN_K_M_BAKER_2003_H_
#define __IONCHAN_K_M_BAKER_2003_H_
#include "bnsf.h"
using namespace std;
using namespace BNSF;
namespace BAKER_2003 {
// K-M channel
class K_M_channel : public Order1EnergyBarrierTabChannel {
public:
// Constructors and destructor
K_M_channel(Number gSpVal=0) : Order1EnergyBarrierTabChannel(gSpVal) {}
virtual ~K_M_channel() {}
// Temperature parameters from Halliwell and Adams.
virtual Number ratedTempC() {return 30; }
virtual Number Q10() {return 5; }
// Voltage sensitivity from Selyanko & Brown ([Ca++]=2mM)
virtual Number Vhalf() {return -39.8*UOM::mV; }
virtual Number slope() {return 5.2*UOM::mV; }
// Rough fit starting with voltage sensitivity of CL and CS
// states in Selyanko & Brown. kalpha and kbeta are taken
// from the slopes in fig 5 for these states (19 and 46
// in log(ms)/mV). The values in Halliwell and Adams at
// -55 and -45 mV (47 and 92 msec) are used to set tauMax
// and simultaneously adjust kbeta to achieve a fit.
virtual Number tauMax() {return 150*UOM::msec; }
virtual Number tauMin() {return 0*UOM::msec; }
virtual Number kalpha() {return 45*UOM::mV; }
virtual Number kbeta() {return 10*UOM::mV; }
// Special time constant computation
virtual Number tauForTable(Number v);
// State vector label functions
virtual const char* componentName() {return "K_M"; }
virtual const char** stateLabels() {
static const char* sl[] = { "x" }; return sl; }
// Reversal potential for K
virtual Number Vrev() { return _Vrev; }
protected:
static const Number _Vrev;
virtual AlphaBetaEntry** pAlphaBetaTable() { return &_abTable; }
private:
static AlphaBetaEntry* _abTable;
};
};
#endif // #ifndef __IONCHAN_K_M_BAKER_2003_H_