Cinétique michaélienne

Lors d'une étude enzymologique ou étude cinétique d'une enzyme michaélienne (dont les paramètres cinétiques (Vm et Km) répondent à l'équation de Michaelis-Menten), il est possible de retrouver les paramètres cinétiques de cette enzyme par linéarisation en double-inverse ou linéarisation de Lineweaver-Burk.

L'exemple ci-dessous d'étude enzymologique réalisée avec le logiciel R project parlera mieux.

Détermination des paramètres cinétiques d'une enzyme michaélienne avec le logiciel R project

Etude cinétique réalisée avec le logiciel R project

Ces 2 graphiques correspondent à l'ensemble d'une étude cinétique permettant de retrouver la vitesse maximale (Vm) d'une enzyme ainsi que sa constante de Michaelis (Km) qui correspondant à la concentration en substrat permettant d'avoir la moitié de Vm.

  1. Entrer dans R les valeurs récupérer lors de l'étude - ici les absorbances des produits formés pour différentes concentrations initiales en substrat
# Valeurs Absorbances
a5=c(0,.015,.031,.047,.062,.079,.092,.104,.114,.128)
a10=c(0,.032,.049,.071,.093,.115,.137,.157,.175,.198)
a15=c(0,.033,.065,.095,.131,.157,.185,.209,.234,.256)
a30=c(0,.034,.071,.107,.140,.176,.205,.24,.267,.295)
a50= c(0,.036,.079,.12,.158,.198,.232,.268,.3,.333)
# Valeurs Temps
tps = c(0,15,30,45,60,75,90,105,120,135)

2. Calculer les vitesses initiales

# Calcule des vitesses initiales sur les zones de corrélation maximale
vitesse_i = function(temps,vector,intervalle=2, duree="all") { # cette fonction recherche l'intervalle présentant la plus grande variation
if (duree=="all") {duree = length(vector)} # si intervalle = 3 recherche de l'intervalle sur 3 valeurs entre n-1 et n+1
cori = 0 # si durée = 5 : recherche de l'intervalle le plus grand sur les 5 premoiers points
for (i in rev(c(1:(duree - intervalle)))) { # l'intervalle conservée n'est en réalité pas le plus grand mais celui retenu sur la zone de corrélation maximale.
l1 = vector[i:(i+intervalle)]
l2 = temps[i:(i+intervalle)]
cor_temp = cor(l1,l2)
if (cor_temp>cori) {cori = cor_temp;vi = (vector[i+intervalle]-vector[i])/(temps[i+intervalle]-temps[i])}
}
return(vi)
}
vi =c(vitesse_i(tps,a50,duree=5),vitesse_i(tps,a30,duree=5),vitesse_i(tps,a15,duree=5),vitesse_i(tps,a10,duree=5),vitesse_i(tps,a5,duree=5))

3. Tracer le premier graphique exprimant la formation du produit en fonction du temps et pour différentes concentrations initiales en substrat

ylab= expression(A[500]) # permet de mettre la longueur d'onde en indice
plot(tps,a50,pch=16,col="orange",type="o",xlab="Temps (en s)",ylab=ylab,main="TITRE 1 à ADAPTER\nFormation du produit en fonction du temps\npour différentes concentrations en substrat") # courbe 1
# ATTENTION : xlab, ylab et main dépendent des conditions expérimentales.
points(tps,a10,col="red",pch=16,type="o") # points : ajoute une courbe
points(tps,a15, col="green",pch=16,type="o")
points(tps,a30,col="blue",pch=16,type="o")
points(tps,a5,col="black",pch=16,type="o")
# Legend
legend(x="topleft",legend=c("5 mM","10 mM","15 mM","30 mM","50 mM"),lty=1,pch=16,col=c("black","red","green","blue","orange"))

4. Tracer le deuxième graphique ou linéarisation en double inverse présentant l'inverses des vitesses initiales en fonction de l'inverse des concentrations en substrat

s = c(50,30,15,10,5)
inv_v = 1/vi
inv_s = 1/s
x_y0 = -(lm(inv_v~inv_s)$coefficients[1])/(lm(inv_v~inv_s)$coefficients[2])
xlab = expression(1/S~~(L.mmol^-1)) # la fonction expression et ^permet de mettre en exposant
ylab = expression(1/V~~(s.*Delta*A^-1))
main = "TITRE 2 à ADAPTER\nReprésentation en double inverse de\nLineweaver et Burk" #\n retour à la ligne
plot(inv_s,inv_v,pch=16,type="p",col="red",ylim=c(0,max(inv_v)),xlim=c(x_y0,max(inv_s)),xlab = xlab,,ylab=ylab,main=main)
cat("Attention : xlab, ylab et main dépendent des conditions expérimentales - à modifier.\n")
abline(h=0,v=0) # Tracer des traits verticaux et horizontaux à x = 0 et y = 0
abline(lm(inv_v~inv_s)$coefficients,col="red",lty=3)  # régression linéaire

5. Annoter ce dernier graphique pour indiquer les valeurs de -1/Km et 1/Vm qui permettent de retrouver les paramètres cinétiques

# Ajouter des flèches de légende
# Km
arrows(x0 = x_y0,y0 =(max(inv_v)/100*20) ,x1 = x_y0,y1 = (max(inv_v)/100*2))
text_km = signif(x_y0,2)
cat("L'opposé de l'inverse de Km vaut ",x_y0,".\n")
text_km = bquote(bold(frac(-1,Km)==~.(text_km)~(L.mmol^-1)))
text(x_y0, (max(inv_v)/100*20), text_km,adj=c(0,0),font=2,cex=0.7)
# Vm
arrows(x0 = (x_y0/100*22),y0 =((lm(inv_v~inv_s)$coefficients[1])+(max(inv_v)/100*20)) ,x1 = (x_y0/100*2),y1 = (lm(inv_v~inv_s)$coefficients[1]))
cat("L'inverse de Vm vaut ",(lm(inv_v~inv_s)$coefficients[1]),".\n")
text_vm = round((lm(inv_v~inv_s)$coefficients[1]),0)
delta = bquote(Delta)
text_vm = bquote(bold(frac(1,Vm)==~.(text_vm)~(s.*.(delta)*A^-1))) # si on veut des s/Delta(A)
#text_vm = bquote(bold(frac(1,Vm)==~.(text_vm)~(mL.min.µmol^-1))) # avec les unités comme sur l'image (min.mL/µmol)
text((x_y0/100*22),((lm(inv_v~inv_s)$coefficients[1])+(max(inv_v)/100*20)), text_vm,adj=c(0.5,0),font=2,cex=0.7)