MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
MarkovChannel.h
Go to the documentation of this file.
1 #ifndef _MARKOVCHANNEL_H
2 #define _MARKOVCHANNEL_H
3 
4 //This class deals with ion channels which can be found in one of multiple
5 //states, some of which are conducting. This implementation assumes the
6 //occurence of first order kinetics to calculate the probabilities of the
7 //channel of being found in all states. Further, the rates of transition
8 //between these states can be constant, voltage-dependent, ligand dependent
9 //(only one ligand species) or both. The current flow obtained from the channel
10 //is calculated in a deterministic method by solving the system of
11 //differential equations obtained from the assumptions above.
12 //The implicit assumption is that there are a number of ion channels present in
13 //the system. */
14 
15 class MarkovChannel : public ChanCommon
16 {
17  public:
18  //Default constructor. Use is not recommended as most of the class members
19  //cannot be initialized.
20  MarkovChannel();
21 
22  //Constructor to be used when number of states and number of open states are
23  //known. Use of this constructor is recommended as all the other members of
24  //the class can be initialized with the information provided.
25  static const Cinfo* initCinfo();
26 
27  MarkovChannel( unsigned int, unsigned int);
28  ~MarkovChannel( );
29 
30  double getVm( ) const;
31  void setVm( double );
32 
33  double getLigandConc( ) const;
34  void setLigandConc( double );
35 
36  unsigned int getNumStates( ) const;
37  void setNumStates( unsigned int );
38 
39  unsigned int getNumOpenStates( ) const;
40  void setNumOpenStates( unsigned int );
41 
42  vector< string > getStateLabels( ) const;
43  void setStateLabels( vector< string > );
44 
45  //If the (i,j)'th is true, ligand concentration will be used instead of
46  //voltage.
47  vector< vector< bool > > getLigandGated( ) const;
48  void setLigandGated ( vector< vector< bool > > );
49 
50  //Probabilities of the channel occupying all possible states.
51  vector< double > getState ( ) const;
52  void setState( vector< double > );
53 
54  //The initial state of the channel. State of the channel is reset to this
55  //vector during a call to reinit().
56  vector< double > getInitialState() const;
57  void setInitialState( vector< double > );
58 
59  //Conductances associated with each open/conducting state.
60  vector< double > getGbars( ) const;
61  void setGbars( vector< double > );
62 
64  //MsgDest functions
66 
67  void vProcess( const Eref&, const ProcPtr);
68  void vReinit( const Eref&, const ProcPtr);
69  void handleLigandConc( double );
70  void handleState( vector< double > );
71 
72  private:
73  double g_; //Expected conductance of the channel.
74  double ligandConc_; //Ligand concentration.
75  unsigned int numStates_; //Total number of states.
76  unsigned int numOpenStates_; //Number of open (conducting) states.
77 
78  vector< string > stateLabels_;
79  vector< double > state_; //Probabilities of occupancy of each state.
80  vector< double > initialState_;
81  vector< double > Gbars_; //Conductance associated with each open state.
82 };
83 
84 #endif
void vProcess(const Eref &, const ProcPtr)
vector< double > getState() const
double getVm() const
void setVm(double)
unsigned int numStates_
Definition: MarkovChannel.h:75
vector< vector< bool > > getLigandGated() const
void setInitialState(vector< double >)
void setLigandConc(double)
void handleState(vector< double >)
void setGbars(vector< double >)
void setLigandGated(vector< vector< bool > >)
void handleLigandConc(double)
unsigned int numOpenStates_
Definition: MarkovChannel.h:76
unsigned int getNumStates() const
vector< string > stateLabels_
Definition: MarkovChannel.h:78
vector< double > initialState_
Definition: MarkovChannel.h:80
void vReinit(const Eref &, const ProcPtr)
Definition: Eref.h:26
vector< double > state_
Definition: MarkovChannel.h:79
vector< double > getInitialState() const
vector< double > Gbars_
Definition: MarkovChannel.h:81
vector< double > getGbars() const
double getLigandConc() const
vector< string > getStateLabels() const
static const Cinfo * initCinfo()
double ligandConc_
Definition: MarkovChannel.h:74
void setNumStates(unsigned int)
unsigned int getNumOpenStates() const
Definition: Cinfo.h:18
void setState(vector< double >)
void setNumOpenStates(unsigned int)
void setStateLabels(vector< string >)