Unidad: Iztapalapa División: Ciencias Básicas e

Anuncio
Unidad:
Iztapalapa
División:Ciencias Básicas e Ingeniería
Carrera: Licenciatura enComputación
Materia: Proyecto de Investigación
Título: "Simulacióndelmovimientode
carga enmúsculo
esquelético durante elacople Excitación-Contracción"
Fecha:
Marzo/2000
Alumno:Olivama
Garcia Bello
Matrícula: 94217533
------
1
------------
3
-------------
5
4 . 3 Conductancia del sodio
--------------
6
4.4 Conductancia del calcio
-------------
8
--------------
9
3. Modelo eléctrico de la membrana
4. Ecuaciones de Hodgkin & Huxley
4.1 Corriente de la membrana
4.2 Conductancia del potasio
5. Código de la aplicación
l.
Objetivo
Representar mediante modelos eléctricos las corrientes capacitativas no lineales
debida a los iones de potasio, sodio, y la corriente total de lamembrana que se atribuye
a ambos iones durante el acople excitación-contracción del músculo esquelético.
2. Introducción
Las células están completamente rodeadas por una unidad de membrana delgada.
La exitación de las células está siempre acompañada por cambios en el potencial de la
membrana. Estos cambiospueden serabruptos o lentos,breves o permanentemente
largos,dependiendodelacélulaylaestimulación,peroel
mecanismo de cambio de
potencial es fundamentalmente el mismo. La corriente eléctrica que fluye a través de
membranas es transportado por el movimiento de los iones.
Cualquier
cambio
en
ladirecciónpositivadesdeelreposo
es
llamada
despolarización,porelcontrario,
uncambioenla
direcciónnegativa esllamada
hiperpolarización.
una
una
LOSpotenciales de acción son generalmente similares en todas
las células pero
difieren en la forma y el tiempo de corriente deun tipo de célula a otro.
En los siguientes capítulos podremos ver el comportamiento de la membrana como
un equivalente a un circuito, así como la variaciones de la corriente debida a los iones y
al potencial.
3. Modelo eléctrico de la membrana
Lamembranabiológicapuedeserconsideradaenelsentido
eléctrico como el
equivalente a capacitores, separando 2 fases de conducción, conteniendo principalmente
iones de sodioenlaprimerafase
y depotasioen la segunda. La existencia de una
diferencia de voltaje (E, envolts) a través de un capacitor (C, en farads) indica la
separación de carga (9, en coulombs). La relación entre estas cantidades es: q = CE
La diferencia de potencial a través de la capacitancia de la membrana (C) puede
ser alterado por la transferencia de cargas a lo largo de cualquiera de los t r e s canales
ionicos.
1
Bajo condiciones de reposo la membrana permite pequeñas corrientes que fluyen
a través de ésta. En el modelo, estas corrientes se mueven a través de canales de sodio,
potasio y cloro separados, y cada uno tiene su propio gradiente químico (representado
por el potencial de equilibrio para elion) y una resistencia variable. Un incremento de la
permeabilidad de la membrana para un ionparticularcorresponde
a una caída de la
resistencia.
De
esta
forma,
los biólogos encontraron la relación
inversa
entre
la
permeabilidad y la resistencia.
Permeabilidad
a
1
Resistencia
Utilizando la ley deOhm:
Conductancia =
1
Resistencia
Entonces, permeabilidad es proporcional a la conductancia.
Estas características pueden ser incorporadas dentro deun circuito eléctrico.
El modelo en la figura
da una buena aproximación del comportamiento delas células.
2
4. Ecuaciones de Hodgkin & Huxley
4.1 Corriente de la membrana
Como ya se mencionó anteriormente, la existencia de una diferencia de voltaje
estable a través de un capacitorindicanlaseparacióndecarga.
Y la relación entre
estascantidades es: q = CE
Diferenciando la ecuación se obtiene:
&= C&
dt dt
De este modo, el cambio del voltaje en la membrana con el tiempo da un ascenso
para un cambio en la separación de carga o desplazamiento de carga con el tiempo. Esta
es la corriente capacitativa. En resumen, las membranas biológicas son requebrajadas
en pequeñas partículascargadas (¡.e, iones), obteniendo un ascenso enla corriente
ionica. Así, la membrana exhibe su propiedad de conductancia G, de ese modo:
GE = y
(1)
Cuando I = O, no habrá diferencia de voltaje a través de la membrana. Esto será
así si la membrana está compuesta sólo de componentes eléctricos pasivos.
ES de conocimiento común que una fuentedevoltajeexista
a travésde las
membranas biológicas (¡.e, potencial en reposo). Así la ecuación (1) puede ser modificada
como:
G(E - E,) = y
(2)
Só10 cuando E = E, hace que I sea cero. El valor de la diferencia de voltaje E a través
de la membrana cuando I = O es llamado potencial de equilibrio.
Si un ionde
una membrana permeable no está enequilibrio a travésdela
membrana, entonces se moverá bajo su gradiente de potencial electroquímico. La razón
(j),es decir, Ij, es determinado por el producto
de la fuerza de conducción en el ion (¡.e, E - Ej) y la conductancia de la membrana para
de este movimiento del ion particular
este ion (Gj). Esto puede ser escrito:
(3)
Ij = Gj (E - Ej)
Aunque la ecuación (3) es formalmenteequivalente
a la ecuación (2) I esla
corriente total debido al movimiento de todos los iones (¡.e, I = C j I j ) cuando I + I, en la
ecuación (3)
I
I j
es la corriente transportada por el ion particular j cuando E # Ej. Cuando
= O, E, = E es el potencial interno, considerando que
la corriente
I j
Ej
es el potencial interno cuando
es cero. Esto simplemente muestra que E, es el potencial de la membrana
en reposo, considerando que Ej es el potencial de equilibrio para ese ionj.
3
La corriente totalI para dos iones, j y k, se obtienen por:
I=Ij+Ik
Substituyendo la ecuación(3) se tiene:
I = Gj (E - Ej) + Gk (E -
Ek)
La corriente a través de la membrana del axon se
asume a la consistencia de 2
componentes, una corriente capacitativa debidoa cambios en la densidad de cargacomo
las superficies interiores y exteriores de la membrana y una corriente ionica debido al
flujo de iones a través de los caminos dentro de la membrana. Por lo tanto, la corriente
total de la membrana I se obtiene por:
I=Cm&+CiIi
dt
De acuerdo a la hipótesis ionica
interno de iones de sodio.
Silamagnituddel
, la corriente interna inicial
pulso dedespolarización es menorque
(6)
es debido al flujo
VNa,
la corriente de
sodio ser6 interna, y si essuperiorde
VNa, la corriente será externa. La corriente
interna queda inafectada por cambios en la concentración de sodio externa, y así ese
componente de la corriente de la membrana es debido a algún o t r o ion, posiblemente
potasio.
La dinámica del cambio de conductancia siguiendo los cambios en el potencial de la
membrana fueron descritos por: Hodgkin
y Huxley usando un conjunto de ecuaciones
empíricas. La corriente totala través de la membrana es obtenida por la ecuación (6), y
'q"
t iIi = Ik + I N a + Ita+ IL,donde IL es una corriente ohmica por lo general referida a
corriente de fuga. Las permiabilidadesionicasde las membranassonexpresadasen
términos deSUS conductancias. Por tanto:
= Gk (E - Ek) + Gk (v - v k )
I N a = G N a (E - E N a ) + G N a (V - VNa)
h a
G c a (E - E c a ) + G c a (V - Vea)
IL
= GL (E - EL) + GL (V - VL)
Ik
(7)
(8)
(9)
(10)
Dónde V=E-Er,Vk=Ek-Er,VNa=ENa-Er, V b = L - E , . ,VL = EL - E , ; las V'S son medidas
directamente como desplazamientos desde E,. EL es el potencial al que la corriente de
fuga debido al cloruroy otros iones es cero.
4
Experimentos indican que GNa y Gk varían con el tiempo, y los otros parámetros son
asumidos como constantes, Desde una examinación de los antecedentes experimentales
de voltaje, Hodgkiny Huxley revisaron ecuaciones empíricas para evaluar Gk y GNa como
más adelante con mayor
función del voltaje y el tiempo. Estas conductancias se verán
detalle.
4.2 Conductancia del potasio
Hodgkin & Huxley revisaron ecuaciones empíricas para evaluar Gk y GNa como
función del voltaje y del tiempo.
Ellos asumieron que éste requiere de 4 partículas para ocupar sitios específicos
en lamembranapara
causaruncambio
en la conductanciadelpotasio.
Si nesla
probabilidad para que una partícula singular estéen el lugar derecho, entonces:
-
Dónde Gk es la máxima conductancia del potasio. El valor de n se obtiene por la
solución de la ecuación:
Dónde any fin son los valores de las constantes , las cuales dependen solamente del
potencial. La dependencia del voltaje de a n y Rn determinada por Hodgkin y Huxley
desde sus curvas experimentales se obtienepor:
an=
O.Ol(V+lO)/{
exp[(V+10)/10
Rn=
0.125exp(V/80)
- 13 }
Con ayuda de las ecuaciones (12) y (13), los valores para an y
calculados para cualquier potencial.
Reacomodando la ecuación (11) se obtiene:
dn = a n - (an + pn)n
dt
Si y = a n - (an + pn)n, entonces dy/dt
(14) puede ser escrita:
dy/y = - ( a n + pn)dt
=-
(an +
(13)
(14)
R,,
pueden ser
(15)
pn)dn/dt, y así la ecuación
(16)
5
En el estado de reposo, V=O y n tuvo un valor de reposo obtenido por: no
=
ano/( ano+fino). Cuando la membrana está retenida en un voltaje constante, la ecuación
(15) puede ser integrada. El resultado es:
In y = - ( a n + p n ) t + const.
Con t=O, n=no,y así la constante de integración,
queda In[an - ( a n + pn) no]. Entonces la ecuación obtenida es:
(17)
en substitución para y,
Sustituyendo:
no0 =
an
a n + pn
‘cn =
1
a n + pn
b e la ecuación (17) se tiene:
no0 - n = exp(-t / m)
no0 - no
O bien:
4.3 Conductanciadel sodio
Ladespolarizaciónde
la membrana ejerce 2 efectos, los cuales son la
activación de sodio e inactivación de sodio. Para describir el resultado experimental,
fueron introducidos 2 parámetros, entonces:
GNa = GNam3h
(23)
6
La activación del parámetro m es similar a n, existen ambos potenciales y
dependen del tiempo y tienen valores desde O hasta 1. GNa es una constante igual al
valor máximo de GNa. La ecuación (12) está basada en la idea de que el canal de sodio
puede ser abierto por el movimiento de 3 partículas, cada una con una probabilidad m
existente en el lugar correcto e inactivo por un proceso de probabilidad 1 - h , m y h
se obtienen por:
dm=am(l-m)-pmm
(24)
dt
dh =
dt
(25)
a h (I
- h) - ph h
La solución de estas ecuaciones que satisfacen las condiciones límite m=mo
y h=ho con t = O son:
(26)
m = mm- (mm - mo)exp(-t / zm)
h = h a - (ha - ho)exp(-t / zh)
(27)
Donde:
ma =
am
am
zm =
+
pm
1
a n + pn
ha
=
ah
a h + ph
zh
1
a h + ph
Además:
am
= 0.1(V+25) / [exp{(V+25)/10} - 13
4exp(V/18)
a h = 0.07exp(V/20)
p h = 1 / [exp{ (V+30)/10}
pm
+
11
7
4.4 Conductanciadelcalcio
Ca++ es el ion más controlado en el cuerpo humano, y ha sido largamente
conocido por afectar la excitabilidad del nervio y del músculo. Los iones del calcio no
fueron directamente involucrados en las fórmulas de Hodgkin y Huxley, excepto en la
medidaen que estosfueronintroducidosdentrodeltérminopara
lasalida de la
corriente.Recientemente las corrientesde Ca++ fuerondemostradosenvarios
tejidos, incluyendo axones de calamar.
La magnitud de la corriente varía comenzando siendo pequeña en axones de
calamar hasta que es más grande que la corriente de Na+.
Adiconalmente,
Frankenhaeuser
& Hodgkin
demostraron
que la
concentraciónde Ca++ tiene un efectoindirectoimportante
en el cambio de las
curvas de activación e inactivación de las variables que predominan en los canales de
Na+ y K+.
8
5. Código
- de la aplicación
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
*****
*****
Olivama Garcia
Bello
*****
(942 17533)
*****
**x**
*****
Proyecto Final
*****
*****
*****
*****
*****
................................................
*****
*****
*****
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#include <do&>
#define LimIzq 1O0
#define LimDer 500
#define LimSup 150
#define LimInf 450
//Funciones Globales
void mensaje(void);
int validaf(char[]);
void convierte-float-cadena(float);
float mayorIm(float [I);
float menorIm(float [I);
void opciones-graficar(void);
void rect(int,int ,int ,int ,int ,int);
void escribe(char *,int , int , int ,int , int );
//Variables Globales
int ni, opcion[5],ver;
float Ek=-46, ENa=60, ECa=60, E[ 151, t[ 151, tiempo;
float Emax, Emin;
char salida[ 151;
float Ik[401],INa[401], ICa[401], Im[401], max,min;
float mO, hO, no;
int flagl, flag2, flag3;
9
I***
Este es el inicio del programa y aqui es donde ****
**** se hacen las llamadas de las dem S funciones * * * I
void inicio(void)
{
void constantes(void);
void potencial(void);
void coordenadas(void);
void grafica-E(void);
void evaluaquntos(void);
void visualiza(void);
void inicializa-graf();
float texto;
int controlador, modo;
char ans,X-Esc[ 151, Y-Esc[ 151;
int x=3IO,y1=15O,y2=450, q, xaux=lOO, xaux2=500;
int xl=x-l0,x2=x+lO,y=250,a,yx, Z;
char w,X[ 1O] ,Y[ 1O], textochll51;
inicializa-graf();
do i
if(ver==O) { /*si no se visualiza la gr fica(ver-O), captura los valores*/
I / constantes();
mensaje();
potencial();
1
/*de otra forma, s6lamente se grafica con los valores anteriores*/
opciones-graficaro;
coordenadas();
grafica-E();
evaluaquntos();
setcolor(L1GHTMAGENTA);
line(x,yl ,x,y2); ll x
line(x 1,y,x2,y); ll y
itoa(x-100,X,lO);
itoa(300-y,Y,IO);
/*escribe las coordenadas tanto en pixeles como en escala*/
settextstyle(DEFAULT-FONT,HORIZ-DIR, 1);
setcolor(WH1TE);
outtextxy(550,10,"Pixeles");
outtextxy(540,20,X);
outtextxy(580,20,Y);
outtextxy(550,40,"Escala");
convierte-float-cadena((x- 1OO)*tiempo/4OO);
strcpy(X-Esc,salida);
10
convierte-float-cadena(max-(max-min)*(y- 160)/280);
strcpy(Y-Esc,salida);
outtextxy(5 18,50,XEsc);
outtextxy(570,50,Y-Esc);
do {
ans=getch();
while(tolower(ans)!='o' && tolower(ans)!='s'&& tolower(ans)!='v'
&& ans!='2' && ans!='4'&& ans!='6'&& ans!='8');
while(tolower(ans)!='s' && tolower(ans)!='o'&& tolower(ans)!='v'){
if(ans=='6') {
I* derecha *I
if(x<LimDer) {
setcolor(BLACK); /* borrar*/
line(x,yl,x,y2);
line(x 1,y,x2,y);
setcolor(WH1TE); /*graficar coordenadas y funciones*/
line(100,150,100,450);
line( 100,300,520,300);
if(x1>100)
xaux=x 1;
if(x2<500)
xaux2=x2;
/*flagx indica si ,Sta gr fica h e solicitada para
graficarla, si la bandera est encendida as¡ íüe;
en caso contrario no. En donde xes el no. de la
gr fica.*i
for(q=xaux;q<=xaux2;q++) {
if(flagl==l)
putpixel(q,440-280*(Ik[q-1OO]-min)i(max-min),LIGHTRED);
if(flag2==1)
putpixel(q,440-280*(~a[q-100]-min)/(max-min),GREEN);
if(flag3==l)
putpixel(q,440-280*(Im[q-1OO]-min)/(max-min),YELLOW);
I
X++'
x 1++;
x2++;
I
if(ans=='4') {
I* izquierda *i
if(x>LimIzq) {
setcolor(BLACK);
line(x,yl,x,y2);
line(x 1,y,x2,y);
setcolor(WH1TE);
11
line(100,150,100,450);
line( 100,300,520,300);
if(xl>lOO)
xaux=x 1 ;
if(x2400)
xaux2=x2;
for(q=xaux;q<=xaux2;q++) {
if(flagl==l)
putpixel(q,440-280*(Ik[q-1OO]-min)/(max-min),LIGHTRED);
if(flag2==l)
putpixel(q,440-280*(INa[q-100]-min)/(max-min),GREEN);
if(flag3==l)
putpixel(q,440-280*(Im[q-100]-min)/(max-min),YELLOW);
I
x".
xl";
x2";
2
I
if(ans=='2'){
/* abajo */
if(y<LimInf) {
setcolor(BLACK);
line(x,yl,x,y2);
line(x 1 ,y,x2,y);
setcolor(WH1TE);
line( 100,150,100,450);
line( 100,300,520,300);
for(q=xl ;q<=x2;q++){
if(flagl==l)
putpixel(q,440-280*(Ik[q-100]-min)/(max-min),LIGHTRED);
if(flag2==l)
putpixel(q,440-28O*(INa[q-1OO]-min)/(max-min),GREEN);
if(flag3==1)
putpixel(q,440-280*(Im[q-100]-min)/(max-min),YELLOW);
1
y++;
I
I
I
I
if(ans=='8'){
I* arriba *I
if(y>LimSup) {
setcolor(BLACK);
line(x,yl,x,y2);
line(x 1 ,y,x2,y);
setcolor(WH1TE);
12
line(100,150,100,450);
line( 100,300,520,300);
for(q=x l;q<=x2;q++) {
if(flagl==l)
putpixel(q,44O-28O*(Ik[q-100]-min)/(max-min),LIGHTRED);
if(flag2==1)
putpixel(q,44O-28O*(INa[q-lOO]-min)/(max-min),GREEN);
if(flag3==1)
putpixel(q,440-280*(Im[q-1OO]-min)/(max-min),YELLOW);
1
J
Y";
1
for(a= 1;a<= 1O;a++)
line(a*40+ 100,30O,a*40+ 100,305);
/*escribe las coordenadas en escala y pixeles durante los
desplazamientos que ejecuta el usuario con la regla*/
settextstyle(SMALLFONT, HORIZ-DIR, 4);
for(yx=O;yx<= 1O;yx++) {
texto=yx*tiempo/ 1O;
convierte-float-cadena(text0);
strcpy(textoch,salida);
outtextxy(90+40*yx,303,textoch);
i
setcolor(L1GHTMAGENTA);
line(x,yl,x,y2);
line(x1 ,y,x2,y);
itoa(x- 1OO,X, 1O);
itoa(300-y,Y, 1O);
setfillstyle(SOL1D-FILL, BLACK);
bar(530,18,610,30):
bar(5 10.48,640,60);
setcolor(WH1TE);
settextstyle(DEFAULT-FONT,HORIZ-DIR, 1);
outtextxy(540,20,X);
outtextxy(580,20,Y);
convierte-float-cadena((x- 1OO)*tiempo/400);
strcpy(X-Esqsalida);
convierte-float-cadena(max-(max-min)*(y-160)/280);
strcpy(Y-Esc,salida);
outtextxy(5 18,50,X-Esc);
13
ans=getch();
I
if(tolower(ans)=='o') ver=O;/*si se quiere otra gr fica, ver=0 indica
que se van a capturar nuevos
datos*/
j while(tolower(ans)=='o');
if(tolower(ans)=='v') /*si se quieren verlos datos que se introdujeron...*/
visualiza();
restorecrtmode0;
I
I* Visualiza los datos en la pantalla* I
void visualiza(void)
{
void guardar-datos(void);
char Z, ENaInt[lS], EkInt[l5], tInt[l5], EInt[l5];
int z;
clearviewport();
setbkcolor(BLACK);
setcolor(WH1TE);
gotoxy( 1o, 1O);
printf("\n\t\tENa=%5fEk=
%5f', ENa,Ek);
printf("\n\n\tInteralodetiempo(ms)Potencial(mv)");
for(z=O;z<ni;z++)
printf("\n\tt [%6.3f,%06.3fl\t\t%06.f',t[z],t[z+l],E[z+1]);
printf("\n\n\n\n\t\t<pulsa
una tecla para continuar>");
/*otro men&...*/
clearviewport();
rect(O,O,getmaxx(),230,8,3);
escribe("1) Nuevos datos",50,50,1,15,1);
escribe("2) Ver otra vez la gr fica",50,80,1,15,1);
escribe("3) Guardar los datos",50,11 O, 1,15,1);
escribe("4) Salir",50,140,1,15,1);
do
Z=getche():
while(Z!='I' && Z!='2' && Z!='3'&& Z!='4');
14
if(Z=='I'){
ver=O; /*introducirnuevosdatos*/
inicio();
I
else if(Z=='2'){
ver=l; /*ver
la gr fica con los datos anteriores*/
inicio();
I
I
else if(Z=='3')
guardar-datos();
else {
restorecrtmode(); /*finalizar*/
exit(0);
/*** captura el potencial(E)en cada intervalode tiempo * * * I
void potencial(void)
c
char R, 1t [ 1S], E 1[ 151, Emax, Emaxaux;
flagl=O; flag2=0; flag3=0;
opcion[O]=O;
ni=O;
t[O]=O;
escribe("1ntroduca el potencial en cada intervalo detiempo.",140,135,0,15,1);
escribe("Cada vez que se introduzca un par metro, debe pulsar ENTER.", 140,155,0,15,1);
escribe(" Intervalo de tiempo",185,180,0,15,1);
do I
if(tolower(R)=='s') {
setfillstyle(SOLIDFILL,BLACK);
bar( 180,246,400,265); //borra el tiempo
bar(265,192,500,208); //borra el potencial
bar(290,22 1,500,242); //borra la pregunta o aviso
I
gotoxy(46,12);
printf("t[%f,t%d]:",t[ni],ni+l);
do {
do {
gotoxy(30,13);
printf("t%d = ' I , ni+l);
scanf("%s",&tl);
if(validaf(tl)!=l){
gotoxy(30,13);
setfillstyle(SOL1D-FILL,BLACK);
bar(265,192,500,208);
15
j while(validaf(tl)!=l);
t[ni+l]=atof(tl);
if(t[ni+ l]<=t[ni]) { /* valida los intervalos */
//printf("\tNo es v lido el intervalo!, intenta nuevamente");
escribe("No es v lido elintervalo!!, pulsa cualquier tecla para intentarlo nuevamente",15,250,0,15,1);
bar(265,192,500,208);
getch0;
bar( 10,24O,getmaxx()-2,265); //borra la pregunta o aviso
1
j while(t[ni+l]<=t[ni]);
gotoxy(30,15);
printf("E(mv) = );
scanf("%s",&E1);
if(validaf(El)!=l){
gotoxy(30,15);
setfilIstyle(SOL1D-FILL,BLACK);
bar(290,22 1,500,242);
I
1 while(validaf(El)!=l);
E[ni+l]=atof(El);
ni++;
tiempo=t[ni]; /*tiempo contiene el tiempo m ximo*/
escribe("0tro intervalo'? (sin)", 185,250,0,15,1);
do I
R=getche();
if(tolower(R)!='s'&&tolower(R)!='n'){
gotoxy(30,17);
printf("
");
j *I
while(tolower(R)!='s'&& tolower(R)!='n');
/*
1 while(tolower(R)=='s');
void opciones-graficar(void)
1
char gft. opcaux:
mensaje();
flag 1=O; flag2=0; flag3=0;
opcion[O]=O;
16
escribe("Para elegir las opciones se tiene que introducir", 150,140,0,15,1);
escribe("1os numeros correspondientes a dicha opcion", 150,160,0,15,1);
escribe("Opciones:",160,195,0,15,1);
escribe("(1)Graficar Ik",160,220,0,15,1);
escribe("(2)Graficar INa", 160,240,0,15,1);
escribe("(3)Graficar Im", 160,260,0,15,1);
escribe("(4)Finalizar", 160,280,0,15,1);
do { //captura las opciones a graficar (1,2 o 3)
do I
opcaux=getch();
~while(opcaux!='l'&&opcaux!='2'&&opcaux!='3'&&opcaux!='4');
if(opcaux==' 1') {
flagl=l;
escribe("",300,220,0,15,1);
I
if(opcaux=='2') {
flag2= 1;
escribe("",300,240,0,15,1);
I
if(opcaux=='3') {
flag3= 1;
escribe("",300,260,0,15,1);
I
1while(opcaux!='4');
opcion[O]=O;
opcion[ l]=flag1;
opcion[2]=flag2;
opcion[3]=flag3;
!
I* grafica los ejes * * I
void coordenadas0
i
int a,b,d,x,y,time2;
char cad[151, textoch[ 151;
float minimo-E(void), maximo-E(void), Emax, Emin, texto;
clearviewport();
setbkcolor(BLACK);
rectangle(O,O,getmaxx(),getmaxy());
setfillstyle(0,DARKGRAY);
setcolor(WH1TE);
I* coordenadas para E * I
17
line(100,10,100,130);
for(d=O;d<=4;d++) {
line(95,30+20*d,100,30+20*d);
I
/* coordenadas para Im *I
line(l00,150,100,450);
line( 100,30O,S20,300);
for(a= 1;a<= 1O;a++)
line(a*40+100,300,a*40+100,305);
for(b=l;b<=15;b++)
line(95,20*b+140,100,20*b+140);
outtextxy(530,140,"<s>");
outtextxy(530,150,"salir");
outtextxy(530,170,"<0>");
outtextxy(530,180,"nuevos datos");
outtextxy(S30,200,"<v>");
outtextxy(530,2 10,"visualizar");
outtextxy(530,220,"los datos");
/** letras para E **I
settextstyle(SMALLFONT, HORIZ-DIR, 4);
Emax=maximo-E();
Emin=minimo-E():
if(ni> 1
for(x=O;x<=4;x++){
texto=Emax-x*(Emax-Emin)/4;
convierte-float-cadena(text0);
strcpy(textoch,salida);
outtextxy(35,26+20*x,textoch);
I
I
else{
convierte-float-cadena(E[ 11);
strcpy(textoch,salida);
outtextxy(35,66,textoch);
I
/* letras para Im */
settextstyle(SMALLFONT, HORIZ-DIR, 4);
for(y=O;y<= IO;y++) {
texto=y*tiempo/lO;
convierte-float-cadena(text0);
strcpy(textoch,salida);
outtextxy(90+40*y,303,textoch);
I
setfillstyle(SOLID_FILL. LIGHTRED);
bar(590, 350, 605,360):
setfillstyle(SOL1D-FILL, GREEN);
bar(590, 390, 605,400);
setfillstyle(SOL1D-FILL, YELLOW);
bar(590,430,605,440);
18
settextstyle(DEFAULT-FONT,HORIZ-DIR, 1);
outtextxy(560,350,"Ik");
outtextxy(560,390,"INa");
outtextxy(560,430,"Im");
settextstyle(SMALL-FONT, HORIZ-DIR, 4);
outtextxy(550,303,"tiempo(mv)");
/** grafica el potencial(E) **/
void grafica-E(void)
{
int j ;
float tauxl , taux2, Eauxil;
setcolor(L1GHTCYAN);
if(ni>l)
for(j= 1;j<=ni; j++) { /*ni=n&mero de intervalos*/
tauxl=tlj-11;
taux2=tb];
Eauxil=80*(Elj]-Emin)/(Emax-Emin);
line(tauxl*40/(tiempo/l0)+100,11O-Eauxil,taux2*40/(tiempo/10)+99,11O-Eauxil);
I
I
else
line( 100,70,500,70);
/* evalua cada puntopara Ik,INa e Im y calcula los datos
m ximo y minim0 obtenidos */
void evaluaquntos(void)
1
void escribe-coordenadas-Imy(float,float);
void grafica-I(void);
float intervalo-E(float);
float gk,gNa,Eaux;
float Ikmax,INamax,Immax,Ikmin,INamin,Immin;
float Gk(float, float);
float GNa(float, float);
void valores(void);
float amo, BmO, ahO, BhO, ano, BnO;
int k;
int mOaux, hOaux, n0aux;
Eaux=E[ l]/l000.0000;
!*
randomize();
mOaux= rand() %' O 100;
mO= mOaux/100.00000;
hOaux= rand() % 100;
hO= h0aux/lOO.OOOOO;
19
nOaux= rand() YO100;
nO= n0aux1100.00000;
*I
/x*********************************/
mO=O.8;
hO=0.9;
nO= 1.O;
...................................
for(k=O;k<=4OO;k++) {
Eaux=intervalo-E(k);
gk = Gk(Eauxl1OOO,k*tiempol4OO);/lvolts
Ik[k]=gk*(Eaux-Ek);
gNa = GNa(Eaux/1OOO,k*tiempol4OO);llvolts
INa[k]=gNa*(Eaux-ENa);
gCa = GCa(Eauxl1OOO,k*tiempo/4OO);//volts
ICa[k]=gCa*(Eaux-ECa);
Im[k]=Ik[k]+INa[k]+ICa[k];
I
Ik[401]='\0';
INa[401]='\O';
ICa[401]='\O';
Im[401]='\0';
Ikmax=mayor-Im(1k);
Ikmin=menorIm(Ik);
INamax=mayor-Im(1Na);
INamin=menor-Im(1Na);
Immax=mayor-Im(1m);
Immin=menor-Im(1m);
max=Ikmax;
if(INamax>max)
max=INamax;
if(Immax>max)
max=Immax;
min=Ikmin;
if(INamin<min)
min=INamin;
if(Immin<min)
min=Immin:
escribe-coordenadas-Imy(min,max);
grafica-I();
20
/******
Calcula la conductancia del Potasio ************I
float Gk(float V, floatT)
.r
float an, Bn, n8,tn, n, GkAux, GkMax=36;
T=T/ 1000;
an = 0.01*(V+10)/(exp((V+10)/10)-1);
Bn = 0.125*exp(VI80);
n8 = an/(an+Bn);
tn = l/(an+Bn);
n = n8-(n8-nO)*exp(-T/tn);
GkAux = GkMax*pow(n,4);
return(GkAux);
**********/
Calcula la conductancia del Sodio
float GNa(float V, float T)
I********
{
float am, Bm, ah, Bh, m8, tm, h8,th;
float m, h, GNaAux, GNaMax= 120;
T=T/ 1000;
am = 0.1*(V+0.25) / ( exp((V+25)/10) - I ) ;
Bm = 4*exp(V/18);
ah = 0.07*exp(V/20);
Bh = 1/( exp((V+30)/10) +l);
m8 = am/(am+Bm);
tm = l/(am+Bm);
h8 = ah/(ah+Bh);
th = l/(ah+Bh);
m = m8 - (m8-mO)*exp(-T/tm);
h = h8 - (h8-hO)*exp(-T/th):
GNaAux
=
GNaMax*pow(m,3)*h:
return(GNaAux);
/******
Calcula la conductancia del Calcio
float Gk(float V, float T)
************/
{
float an, Bn, n8, tn, n, GCaAux, GCaMax=36;
T=T/ 1000:
21
am = O. 1*(V+0.25) / ( exp((V+25)110) - I ) ;
Bm = 4*exp(V/18);
ah = 0.07*exp(V/20);
Bh = I/( exp((V+30)/10) +l);
m8 = am/(am+Bm);
tm = l/(am+Bm);
h8 = ah/(ah+Bh);
th = l/(ah+Bh);
m = m8 - (m8-mO)*exp(-T/tm);
h = h8 - (h8-hO)*exp(-T/th);
GNaAux = GNaMax*pow(m,3)*h;
return(GNaAux);
I
.....................................................
/* escribe los valores de Im en eleje de las y's, */
void escribe-coordenadas-Imy(float min,float max)
i
int x;
float texto;
char textoch[151;
setcolor(WH1TE);
settextstyle(SMALL-FONT,HORIZ-DIR, 4);
for(x=O;x<=14;x++){
texto=max-x*(max-min)i14:
convierte-float-cadena(text0);
strcpy(textoch,salida);
outtextxy(33,150+20*x,textoch):
I
/* dibuja las gr ficas solicitadas *Í
void graficaI(void)
{
int h,graf;
float Baux;
delay( 1000);
/*en opci$n est n almacenados los ngmeros de las gr ficas a dibujar*Í
if(opcion[ I]==1) { /*graficar Ik*/
for(h=O;h<=40O;h++){
Baux=440-280*(Ik[h]-min)/(max-min);
putpixel(h+ lOO,Baux,LIGHTRED);
delay(2);
1
delay(200);
22
if(opcion[2]==1){ /*graficar INa*/
for(h=O;h<=400;h++){
Baux=(INa[h]-min)/(max-min);
putpixel(h+l00,440-280*Baux,GFEEN);
delay(2);
I
delay(200);
if(opcion[3]== 1) { /*graficar Im*/
for(h=O;h<=40O;h++) {
Baux=(Im[h]-min)/(max-min);
putpixel(h+l00,440-280*Baux,YELLOW);
delay(2);
I
delay(200);
i
delay( 1O);
I* devuelve elpotencial(E) para el valor determinado de tiempo(t)
(ya a escala) */
float intervalo-E(float tiemp)
{
int inter;
float valor-E;
for(inter= 1;inter<=ni;inter++) {
if(tiemp<=400*t[inter]/tiempo && tiemp>400*t[inter-l]/tiernpo)
valor-E=E[inter];
return(va1or-E);
I
/* calcula el valor mayor de E */
float maximo-E(void)
i
int k;
Emax=E[ 11;
for(k=2;k<=ni;k++)
if(E[k]>Emax)
Emax=E[k];
return(Emax);
I
/* calcula el valor menor de E */
23
float minimo-E(void)
í
int k;
Emin=E[ 11;
for(k=2;k<=ni;k++)
if(E[k]<Emin)
Emin=E[k];
retum(Emin);
i
I* devuelve los valores mayores y menores para graficar Im*/
float mayor-Im(float 1[401])
I
1
int r;
float mayor;
mayol-I[O];
for(r= 1;r<=400;r++)
if(I[r]>mayor)
mayor=I[r];
return(mayor);
I
float menor-Im(float 1[401])
I
int r;
float menor:
menor=I[O];
for(r==1;r<=400;r++)
if(I[r]cmenor)
menor-I[r];
retum(menor);
i
I** convierte un flotante en cadena para
poder escribirlo en las coordenadas **I
void convierte-floatcadena(float cade)
í
sprintf(salida,”%.2f”,cade);
I
I* valida que sea un flotante bien escrito *I
int validaf(char 4 1S ] )
f
int i,A,punto=O;
24
if(flO]=='-') A= 1;
else A=O;
for(i=A;i<strlen(f);i++) {
if(!isdigit(qi])){
if(fli]=='.')
punto++;
else return(0);
I
J
I
if(punto>l)return(0);
return( 1);
I******* Inicializa el modo gr fico * * * * * * * * I
void inicializa-graf(void)
i
int controlador, modo;
controlador=DETECT;
modo=O;
initgraph(&controlador, &modo, "");
I
I***** Guarda los datos en un archivo ******I
void guardar-datos(void)
int B;
char an, nombre[30];
FILE *pa;
clearviewport();
setbkcolor(RED);
mensaje():
escribe(" Nombre del archivo:", 185,180,0,15,1);
gotoxy(30,13);
scanf("%s",&nombre);
if((pa=fopen(nombre,"w"))==NULL) {
gotoxy(30,15);
printf("no se puede abrir el archivo\n");
exit( 1);
I
fprintf(pa,"\n\tENa= %f Ek= %fln\n",ENa, Ek);
for(B= 1;B<=ni;B++) {
fprintf(pa,"\n\tt[%.4f,%.4fl \t E=%.4f",t[B-l],t[B],E[B]);
25
I
fclose(pa);
escribe("1) Volver al men&
anterior",l85.225,0,15,1);
escribe("2)Salir",l85,253,0,15,1):
an=getche();
if( an==' 1I )
visualiza();
else {
restorecrtmode();
exit(2);
I
I***********
Dibuja las ventanas gr ficas
**************/
void rect(int x1,int y1,int x2,int y2,int modelo,int color)
i
rectangle(x 1,y1 ,x2,y2);
setfillstyle(modelo,color);
floodfill(xl+l,yl+l,l5);
!***********
Escribe el texto en modo gr fico ***********I
void escribe(char *texto,int x, int y, int tipoletjnt colorlet, int tamanolet)
{
setcolor(color1et);
settextstyle(tipolet,O,tamanolet);
outtextxy(x,y,texto);
i
void mensaje(void)
1
clearviewport();
rect(O,O,getmaxx(),getmaxy(),8,3);
/*crea la primerapantalla*/
setcolor( 15);
line(O,O,O,getmaxy());
line(O,O,getmaxx(),O);
line(getmaxx(),O,getmaxx(),getmaxy());
line(O,getmaxy(),getmaxx(),getmaxy());
rect(0,120,getmaxx(),300,1,0); 1/100,525
return:
!
26
6. Fórmulas
Carga
q = CE
Corriente
I = GE
Corriente
para
ion
un
j
Ij = Gj (E
Corriente debida a todos los iones
I = CjIj
Corriente debida a los iones de potasio
fk
Corriente debida a 10s iones de sodio
INa
Corriente total de la membrana
1=
= Gk (E
=
GNa
-
Ej)
-
Ek)
(E -
I k + INa +
ENa)
I,,+
IL
Conductancia del potasio
Gk = Gkn4
Conductancia del sodio
&a
=
GNa
m3h
27
7. Bibliografía
8
*
e
Douglas
Junge
Nerve and Muscle Excitation
Second Edition
Jane Croin
Mathematics of cell elctrophysiology
De. Board
Richard B. Stein
Nerve and Muscle (Membranes, Cells and Systems)
D.C.S. White & John Thorson
The Kinetics o f Muscle Contraction
D. R, WiIkie
Muscle.Second Edition
Ed. Board
28
Descargar