File contents
// heart10Doc.h : interface of the CHeart10Doc class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_HEART10DOC_H__404AF2EC_AC93_11D3_8BDF_00C026DD6028__INCLUDED_)
#define AFX_HEART10DOC_H__404AF2EC_AC93_11D3_8BDF_00C026DD6028__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define NOP 12
const float R=8.3143f;
const float T=310.15f;
const float F=96.4867f; //Coulomb/mM
const float Elementarycharge=1.602E-19;
const int gatstep=1;
const int powerghk=1000;
class CHeart10Doc : public CDocument
{
protected: // create from serialization only
CHeart10Doc();
DECLARE_DYNCREATE(CHeart10Doc)
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CHeart10Doc)
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
//}}AFX_VIRTUAL
// Implementation
public:
float Pulse[19]; //Pulse Parameter Array
/////-------------------- Pulse Parameters ------------------------------------------------------/////
// 0:holding potential, 1:holding length, 2:pulse I start, 3:pulse I final, 4:pulse I length /////
// 5:PII start, 6:PII final, 7:PII length, 8:PIII start, 9:PIII final, 10:PIII length /////
// 11:return potential, 12:return length, 13:step(mV) increment, 14:Duration Increment /////
// 15:Episode number, 16:Episode interval (sec), 17:Stimulus Number /////
// 18:stimulus interval (sec), m_TotalTime=Pulse[18]*Pulse[17] /////
float SF[25]; //Scale Factor Array
/////-------------------- Scale Factor Parameters -----------------------------------------------/////
// 3:Inward Rectifier K channel, 4:Na channel, 5:IKr channel, 6:Transient Outward K, /////
// 7:Sustained Outward K channel, 8:L-type Ca channel, 9:T-type Ca channe /////
// 10:Slow Delayed Rectifier K, 11:Hyperpolarized Activated channel, 12:KACh channel /////
// 18: K background,19:Stretch-Activated Channel, 20:Nonselective Cation Channel, 21:Na-Ca exchanger /////
// 22:Na-K pump, 23:Cell Capacitance Factor /////
float SF_Arel, SF_Aup, SF_Atr; //scale factor of SR store
float Ion[10]; //Ion Array -- 0:Nae, 1:Nai, 2:Ke, 3:Ki, 4:Cae, 5:Cat, 6:Mgi
float Condition[4]; //Experiment Condition Array
/////--- Experimental Condition Variables ---/////
// 0:Access Resistance (MOhm)
// 1:Seal Resistance (MOhm)
// 2:Ratio of Cell Volume to Electrode
// 3:temperature
int m_AP; //integer for determining current clamp or voltage clamp mode
/////--- 3-dimension Matrix ---/////
// 3rd element -- Cell Number for multicellular calculation
// 2nd element
// m: 1:forward rate constant, 2:backward, 3:m(infinite value), 4:tau, 5:dm/dt, 6:m, 7:m0(previous m), 8:m0(infinite value), 9:tau0
// Org: 1:forward), 2:backward, 5:dOrg/dt), 6:Org, 7:Org0
// C: 5:dC/dt, 6:C, 7:C0
// ii: 1:K selective, 2:Na selective, 3:Ca, 4:total, 5:previous total
// 1st element
// m: 3:IRK1, 4:INa, 5:IKr, 6:Ito, 7:Isus, 8:ICaL, 9:ICaT, 10:IKs, 11:Ih, 12:IKACh
// Org: 1:NaCa exchanger, 2:Ca transfer, 3: Ca uptake
// C: 1:Ki, 2:Nai, 3:Cai(cytoplasmic total Ca), 4:Ca(uptake pool), 5:Ca(release pool), 6:membrane potential
// ii: 3:IRK1, 4:INa, 5:IKr, 6:Ito, 7:Isus, 8:ICaL, 9:ICaT, 10:IKs, 11:Ih, 12:IKACh
// 19:ISAC, 20:INSC, 21:INaCa, 22:INaK
float C[7][8][3]; //concentration variable
float Org[4][8][3]; //organelle variable
float m[NOP+1][10][3]; //gate variable
float mm[NOP+1][10][3];
float h[NOP+1][10][3];
float hh[NOP+1][10][3];
float ii[25][6][3]; //current amplitude variable
BOOL NewCell; //bool variable to start new cell experiment
float E0;
BOOL bUserRate; //bool variable to use user-rate constants
BOOL bRectify; //rectifing current equation
float RectifyingK; //rectifying K channel
float Ke; //extracellular K (mM)
float Ki[3]; //Intracellular K (mM)
float Nae; //Extracellular Na (mM)
float Nai[3]; //Intracellular Na (mM)
float Cae; //Extracellular Ca (mM)
float Caf[3]; //Intracellular Ca (mM)
float Cafb[3]; //Intracellular Ca (mM)
float PNAK; //PNa/PK (ratio)
float PCAK; //PCa/PK (ratio)
float CMAXIM; //maximal current within screen
float KCF[3]; //constant field for K
float NaCF[3]; //constant field for Na
float CaCF[3]; //constant field for Ca
float Vm[3]; //real membrane potential(mV)
float GfK[3], GfNa[3], ACh[3];
float testpotential;
int episodeN; //temporary episode number
float TotalTime;
CString Param; //As Variant
CString strParam; //As String
float P1S; //option value for which pulse is series pulse
float P2S;
float P3S;
UINT iVariablePulse; //which pulse is variable pulse?
float timeinterval, timeintervalb, didt;
float m_FixedTimeInterval;
float stiminterval;
float CurrentTime;
float Vi; //Cell volume
float Vtotal; //Cell volume + Electrode volume
float Mgi; //Mg ion concentration
float E; //command potential(mV)
float Erev; //reversal potential at rest(mV)
float Cap; //capacitance(pF)
float rNaCa;
float dNaCa;
float KmTRPN; //DISSOCIATION CONSTANT OF TROPONIN Luo & Rudy, Circ Res,74:1071-1096,1994
float KmCMDN; //DISSOCIATION CONSTANT OF CALMODULIN Luo & Rudy, Circ Res,74:1071-1096,1994
float KmCSQN; //DISSOCIATION CALSEQUESTRIN OF TROPONIN Luo & Rudy, Circ Res,74:1071-1096,1994
float TRPNt; //TOTAL CONCENTRATION OF TROPONIN, mM/L
float CMDNt; //TOTAL CONCENTRATIONT OF CALMODULIN, mM/L
float CSQNt; //TOTAL CONCENTRATIONT OF CALSEQUESTRIN, mM/L
float TRPNf[3]; //FREE CONCENTRATION OF TROPONIN, mM/L necessary to start calculation "buffer"
float CMDNf[3]; //FREE CONCENTRATION OF CALMODULIN, mM/L
float Vrel; //original VOLUME OF RELEASING STORE
float Vup; //original VOLUME OF UPTAKING STORE
float RVrel; //ratio of original VOLUME OF RELEASING STORE to cell volume
float RVup; //ratio of original VOLUME OF UPTAKING STORE to cell volume
float Caupmax; //maximal concentration of Ca in uptake pool
float Caupinitial; //initial concentration of Ca in uptake pool
float Carelinitial; //initial concentration of Ca in release pool
float Taurel; //time constant of release
float Tautr; //time constant of transfer
float TauUp; //time constanat of uptake
float Iinj[3];
float CurrentApplied;
float DTinfinite;
float tauDT;
float FTinfinite;
float tauFT;
float Painfinite;
float tauaf;
float tauas;
float Piinfinite;
float taui;
float Arel; //Amplitude factor for Ca release
float Atr; //Amplitude factor for Ca transfer
float Aup; //Amplitude factor for Ca uptake
//------------RyR open kinetics-------------//
float kco[3];
float kou[3];
float kuc[3];
float kcu[3];
float dRyROpen_dt[3];
float RyRClose[3];
float RyROpen[3];
float dRyRClose_dt[3];
float RGITONa; //ratio of Transient Outward Na component
float RGIsusNa; //ratio of Sustained Outward Na component
float RGILNSCK; //relative ratio of K component in NSC
float RGILNSCCA; //relative ratio of Ca component in NSC
float RGKNA; //relative ratio of K component in INa
float RGIKrNa; //relative ratio of Na component in IKr
float RGIKsNa; //relative ratio of Na component in IKs
float RGfNa; //relative ratio of Na component in If
float PCaLK; //relative ratio of K component in ICaL
float PCaLNa; //relative ratio of Na component in ICaL
float GSAC[3]; //conductance of Stretch-Activated Channel
float GbK[3];
float GILNSCNa[3];
float GNa[3];
float GITOK[3];
float GIsusK[3];
float GIRK1[3];
float GKr[3];
float GIKsK[3];
float INaKmax[3];
float INaCaMax[3];
float KNaCa;
float KmNa; //Km value for Na sensitivity of Na-K pump
float BasalRate; //basal rate constant for the Na-Ca exchanger
float NumberofCareer;
float Partition_v;
float KNAI; //dissociation constant for Na at the inner side of the membrane
float KNAO; //dissociation constant for Na at the outer side of the membrane
float KCaI; //dissociation constant for Ca at the inner side of the membrane
float KCaO; //dissociation constant for Ca at the outer side of the membrane
float KmCa; //Km value of activation of the Ca release from SR
float PCaL[3];
float PCaT[3];
int iterative;
float qr;
float VNa[3];
float VK[3];
float VCa[3];
float L;
float POINF;
float A;
float B;
float ab;
float cat[3];
float Caup[3];
float N;
float Carel[3];
float Cafrel[3];
float Cafrelb[3];
float CSQNf[3];
float Itot[3];
float Itotb[3];
float Itot_vm[3];
float Itot_up; // + current total
float Itot_down; // - current total
float Itot_upb; // + current total before time interval (previous)
float Itot_downb; // - current total before time interval (previous)
float Icap[3];
float Icapb[3];
float limitfactor;
float ICanet[3];
float Itr[3];
float Irel[3];
float Ileak[3];
float Iup[3];
float IKnet[3];
float INanet[3];
float ICaLCainf;
float ICaLKinf;
float ICaLNainf;
float ICaLCa;
float ICaLK;
float ICaLNa;
float ICaTInf;
float FF;
float PA;
float PI;
float PXI;
float PXO;
float XsINF;
float TAUxs;
float PNAO;
float PNAI;
float PCAO;
float PCAI;
float k12;
float k21;
float K30[3];
float K03[3];
float RTF;
float RTF2;
int interrupt[2];
int OpRecord;
float d[3]; //difference value used to caculate Vm by iterative method
float hinf;
float FS;
float P;
float sfCap, sfVolF, sfInj, sfTimeL;
float sf[1];
CString cell; //As Variant
CString Rates; //As Variant
CString OpenData; //As Variant
float RateM[NOP+1][7]; //User Rate Constants Array
float RateMM[NOP+1][7]; //User Rate Constants Array
float RateH[NOP+1][7]; //User Rate Constants Array
float RateHH[NOP+1][7]; //User Rate Constants Array
int DyOp[11];
float TT[1]; //calculate open time or closed time
int CN; //channel number
float poi; //initial open probability
int poiint; //initial open probability integer
float TI; //time interval
float sALFA; //rate constant for open -> close
float sBETA; //rate constant for close -> open
float KB; //forward rate constant of block
float KrB; //backward rate constant of block
float maxrate;
int NN; //channel array sequence
int LL[1]; //new open close flip variable '
float SSUM, SSUM0; //total open number at time T
float RD, TTT, RB;
float maxicurr;
int IVK;
float IV[1];
bool IVshow; //determine to show IV or Raw current
int linemove; //to define which line has the choice to move
float xpos[5];
float ypos[5];
bool drawnow;
int cellNo;
BOOL m_Stop;
virtual ~CHeart10Doc();
public:
void DefSteps(int iAP);
void DefInitialVarPreset();
void SetTimeInterval();
void PrepareNextPulse();
void differen();
void RUNGEKUTTA();
void MemoryCurrent();
void RateConstantsUser();
void RateConstantsDefault();
void currentamplitude();
void RateConstants();
void constantfield_noma();
void CABUFFER();
void dataseparate();
void CalSteps();
void calculatevm();
void INITIALSETTING();
void DefIonVar();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
//{{AFX_MSG(CHeart10Doc)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_HEART10DOC_H__404AF2EC_AC93_11D3_8BDF_00C026DD6028__INCLUDED_)