Para cierta enzima, se ha medido en laboratorio la velocidad de reaciónV
en función de la concentración de sustrato [S]
. El siguiente gráfico muestra la distribución de esos datos
y cuya gráfica para, por ejemplo, a = 20
y b = 5
es
hiperb = function(x, a, b){
a*x/(1+b*x)
}
x = seq(from = 0, to = 10, by = 0.001)
y = hiperb(x, 20, 5)
plot(x,y,pch = 19, cex = .4, xlim = c(0,10), ylim =c(0,5))
En el contexto de la cinética enzimática hay dos cantidades (parámetros) importantes que caracterizan la reacción:
En el lenguaje de las funciones \(V_{max}\) es la asíntota horizontal de la función \(V([S])=a[S]/(1+b[S])\), es decir, \[V_{max}=\lim_{[S]\to\infty} \dfrac{a[S]}{1+b[S]}=\dfrac{a}{b}\] La constante cinética \(K_M\) se obtiene resolviendo la ecuación \[V_{max}/2=\dfrac{a[S]}{1+b[S]}\] que, gráficamente, se visualiza como
Como \(V_{max}=a/b\), si resuelves la ecuación anterior obtendrás que \(K_M=1/b\).
Es decir, si, conseguimos estimar valores apropiados a
y b
para obtener una hipérbola que proxime bien los valores de [S]
y V
obtenidos experimentalmente podremos obtener (de forma aproximada) los valores que caracterizan la reacción enzimática: \(V_{max}\) y \(K_M\).
Este hecho sugiere que si en lugar de trabajar con
[S]
y V
lo hacemos con 1/[S]
y 1/V
, la nueva serie de datos estará distribuida aproximadamente como una recta, y podremos usar las técnicas de recta de regresión para calcular la reca \(y = b_1x+b_0\) que mejor aproxima los datos transformados. Vamos a ello:
Partimos de los valores experimentales:
df = data.frame(S, V)
library(knitr)
kable(head(df))
S | V |
---|---|
9.250002 | 4.928917 |
5.418046 | 5.181942 |
4.745037 | 4.447790 |
2.957399 | 4.585522 |
7.723873 | 4.364000 |
7.750410 | 5.152153 |
invertimos esos datos
S_inv = 1/S
V_inv = 1/V
df_inv = data.frame(S_inv, V_inv)
kable(head(df_inv))
S_inv | V_inv |
---|---|
0.1081081 | 0.2028843 |
0.1845684 | 0.1929778 |
0.2107465 | 0.2248307 |
0.3381349 | 0.2180777 |
0.1294687 | 0.2291476 |
0.1290254 | 0.1940936 |
Visualizamos la nube de puntos de los datos transformados
plot(S_inv, V_inv, pch=19, cex = .7)
que, efectivamente, parecen estar dispuestos conforme a una linea recta. Pordemos calular los coeficientes delarecta de regresión de los datos transformados
lmInv = lm(V_inv ~ S_inv)
lmInv$coefficients
## (Intercept) S_inv
## 0.19287284 0.08437565
plot(S_inv, V_inv, pch=19, cex = .7)
abline(a = lmInv$coefficients[1], b = lmInv$coefficients[2], col = "red")
Finalmente, como \[ K_M = \frac{1}{b} = 0.1928728 \] y \[ V_{max} = \frac{a}{b} = 5.1847631 \]
se despeja y se obtiene que
(a = 1/lmInv$coefficients[2])
## S_inv
## 11.85176
(b = a*lmInv$coefficients[1])
## S_inv
## 2.285883
Vmax = a/b
Km = 1/b
A continuación representamos la nube de puntos obtenidos experimentalmente y gráfica de la hipérbola cuyos coeficientes hemos aproximado mediante la técnica de regresión.
# puntos de la hiperbola
x = seq(from = 0, to = 10, by = 0.001)
y = hiperb(x, a, b)
plot(S, V, xlim = c(0,10), ylim =c(0,6), pch = 19, col = "red", xlab="[S]", ylab = "V")
par(new=TRUE)
plot(x,y, pch = 19, cex = .4, xlim = c(0,10), ylim =c(0,6), xlab = "", ylab = "")