12 #include "../builtins/Interpol2D.h"
19 #include <gsl/gsl_errno.h>
28 "Ligand concentration.",
40 "The number of states that the channel can occupy.",
47 "The number of states which are open/conducting.",
53 "Labels for each state.",
59 "This is a row vector that contains the probabilities of finding the channel in each state.",
64 "This is a row vector that contains the probabilities of finding the channel in each state at t = 0. The state of the channel is reset to this value during a call to reinit()",
70 "A row vector containing the conductance associated with each of the open/conducting states.",
76 static DestFinfo handleligandconc(
"handleLigandConc",
77 "Deals with incoming messages containing information of ligand concentration",
80 static DestFinfo handlestate(
"handleState",
81 "Deals with incoming message from MarkovSolver object containing state information of the channel.\n",
85 static Finfo* MarkovChannelFinfos[] =
101 "Name",
"MarkovChannel",
102 "Author",
"Vishaka Datta S, 2011, NCBS",
103 "Description",
"MarkovChannel : Multistate ion channel class."
104 "It deals with ion channels which can be found in one of multiple states, "
105 "some of which are conducting. This implementation assumes the occurence "
106 "of first order kinetics to calculate the probabilities of the channel "
107 "being found in all states. Further, the rates of transition between these "
108 "states can be constant, voltage-dependent or ligand dependent (only one "
109 "ligand species). The current flow obtained from the channel is calculated "
110 "in a deterministic method by solving the system of differential equations "
111 "obtained from the assumptions above."
115 static Cinfo MarkovChannelCinfo(
119 sizeof( MarkovChannelFinfos )/
sizeof(
Finfo* ),
122 sizeof(doc) /
sizeof(
string)
125 return &MarkovChannelCinfo;
138 g_(0), ligandConc_(0), numStates_(numStates), numOpenStates_(numOpenStates)
141 state_.resize( numStates );
143 Gbars_.resize( numOpenStates ) ;
254 cerr <<
"MarkovChannel::reinit : Initial state has not been set.!\n";
void vProcess(const Eref &, const ProcPtr)
vector< double > getState() const
void setInitialState(vector< double >)
void setLigandConc(double)
void handleState(vector< double >)
void setGbars(vector< double >)
void setGk(const Eref &e, double Gk)
void handleLigandConc(double)
double Vm_
Vm_ is input variable from compartment, used for most rates.
unsigned int numOpenStates_
unsigned int getNumStates() const
vector< string > stateLabels_
vector< double > initialState_
void vReinit(const Eref &, const ProcPtr)
static const Cinfo * markovChannelCinfo
vector< double > getInitialState() const
vector< double > getGbars() const
double getLigandConc() const
vector< string > getStateLabels() const
void sendReinitMsgs(const Eref &e, const ProcPtr info)
static const Cinfo * initCinfo()
void setNumStates(unsigned int)
void sendProcessMsgs(const Eref &e, const ProcPtr info)
unsigned int getNumOpenStates() const
static const Cinfo * initCinfo()
Specify the Class Info static variable for initialization.
void setNumOpenStates(unsigned int)
void setStateLabels(vector< string >)