Point isoélectrique d'un acide aminé

Acide aminé sans groupe acide ou basique sur la chaîne latérale (exemple de la glycine)


Expressions des fractions molaires

Le script est écrit en considérant l'exemple de la glycine de formule $\mathsf{H_2N-CH_2-COOH}$. Le groupe acide carboxylique appartient à un couple de $\mathsf{pK_{a1}=2,4}$, le groupe amine à un couple de $\mathsf{pK_{a2}=9,6}$.

Les espèces sont symbolisées par $\mathsf{AH_2^+}$, $\mathsf{AH}$ et $\mathsf{A^-}$ où $\mathsf{AH}$ est la forme zwitterionique.

En notant $\mathsf{C_{tot}}$ la somme des concentrations $\mathsf{[AH_2^+]_{eq}}$, $\mathsf{[AH]_{eq}}$ et $\mathsf{[A^-]_{eq}}$, les fractions molaires des trois espèces s'écrivent : \begin{equation}\mathsf{ x_{AH_2^+}=\frac{[AH_2^+]_{eq}}{C_{tot}}=\frac{1}{1+10^{pH-pK_{a1}}+10^{2pH-pK_{a1}-pK_{a2}}} \\ x_{AH}=\frac{[AH]_{eq}}{C_{tot}}=\frac{1}{10^{pK_{a1}-pH}+1+10^{pH-pK_{a2}}} \\ x_{A^-}=\frac{[A^-]_{eq}}{C_{tot}}=1-x_{AH_2^+}-x_{AH}} \end{equation}

Il est ainsi possible de faire calculer, pour chaque valeur de pH, la proportion des trois espèces dans le milieu.

Charge moyenne de l'acide aminé

La charge moyenne de l'acide aminé est obtenue en sommant les concentrations en quantité de matière des trois espèces affectées de leur charge formelle. Cette grandeur est une fonction du $\mathsf{pH}$ du milieu. \begin{equation}\mathsf{ Charge(pH) = 1 \cdot [AH_2^+]_{eq} + 0 \cdot [AH]_{eq} + (-1) \cdot [A^-]_{eq} } \end{equation}

La recherche du point isoélectrique est conduit en recherchant la valeur du $\mathsf{pH}$ qui annule la fonction "charge".

Bibliothèques utilisées

La bibliothèque matplolib est utilisée pour tracer des graphiques.

Le module optimize de la bibliothèque scipy offre plusieurs fonctions permettant de rechercher les racines d'une fonction.

La commande linspace de la bibliothèque numpy permet de générer une liste d'abscisses.

Recherche du point isoélectrique

Pour ce faire, la commande bisect est utilisée. Son fonctionnement nécessite de préciser l'intervalle dans lequel la racine doit être recherchée (ici, $\mathsf{pH}$ compris entre 0 et 14) et de s'assurer que la fonction "charge" prend des valeurs de signes opposés aux bornes de l'intervalle. Un diagramme de prédominance permet de s'en assurer. Ici, un tracé de la fonction "charge" pour des valeurs de $\mathsf{pH}$ variant entre 0 et 14 est proposé.

Manipulation du script

Il est possible de modifier les valeurs des $\mathsf{pK_a}$ des couples acide carboxylique/carboxylate et ammonium/amine pour étudier d'autres acides aminés que la glycine.

In [ ]:
#Importation des bibliothèques
import numpy as np
import matplotlib.pyplot as plt
import scipy.optimize as optim

#Saisie des constantes d'acidité des couples de l'AA
pKa1=2.4        #pKa du couple RCOOH/RCOO-
pKa2=9.6        #pKa du couple RNH3+/RNH2

#Définition des fonctions renvoyant les proportions des espèces
def fAH2(x):
    return 1/(1+10**(x-pKa1)+10**(2*x-pKa1-pKa2))

def fAH(x):
    return 1/(1+10**(pKa1-x)+10**(x-pKa2))

def fA(x):
    return 1 - fAH2(x) - fAH(x)

def charge(x):
    return fAH2(x) - fA(x)

#Création d'une liste de valeurs de pH
pH = np.linspace(0,14,100)

#Tracé des diagrammes
plt.figure()
plt.subplot(211)
plt.plot(pH,fAH2(pH),'b--',label='$AH_2^+$')
plt.plot(pH,fAH(pH),'g--',label='$AH$')
plt.plot(pH,fA(pH),'k--',label='$A^-$')
plt.title(f"Diagramme de distribution et charge moyenne d'un acide aminé : $pK_a1$ = {pKa1} et $pK_a2$ = {pKa2}")
plt.grid(True)
plt.xlabel('pH')
plt.ylabel("proportions") 
plt.legend()

plt.subplot(212)
plt.plot(pH,charge(pH),'b--')
plt.grid(True)
plt.xlabel('pH')
plt.ylabel("charge moyenne AA") 

plt.show()

#Recherche du point isoélectrique
pI=optim.bisect(charge,0,14)
print("Valeur du point isoélectrique : ",round(pI,2))
Valeur du point isoélectrique :  6.0

Acide aminé avec groupe acide ou basique sur la chaîne latérale (exemple d'acide aspartique)


Expressions des fractions molaires

Le script est écrit en considérant l'exemple de la glycine de formule $\mathsf{HOOC-CH_2-CH(NH_2)-COOH}$. Les groupes acide carboxylique appartiennent à des couples de $\mathsf{pK_{a1}=2,2}$ et $\mathsf{pK_{a2}=3,9}$, le groupe amine à un couple de $\mathsf{pK_{a3}=9,8}$.

Les espèces sont symbolisées par $\mathsf{AH_3^+}$, $\mathsf{AH_2}$, $\mathsf{AH^-}$ et $\mathsf{A^{2-}}$.

En notant $\mathsf{C_{tot}}$ la somme des concentrations $\mathsf{[AH_2^+]_{eq}}$, $\mathsf{[AH]_{eq}}$ et $\mathsf{[A^-]_{eq}}$, les fractions molaires des trois espèces s'écrivent : \begin{equation}\mathsf{ x_{AH_3^+}=\frac{[AH_3^+]_{eq}}{C_{tot}}=\frac{1}{1+10^{pH-pK_{a1}}+10^{2pH-pK_{a1}-pK_{a2}} + 10^{3pH-pK_{a1}-pK_{a2}-pK_{a3}}} \\ x_{AH_2}=\frac{[AH_2]_{eq}}{C_{tot}}=\frac{1}{10^{pK_{a1}-pH}+1+10^{pH-pK_{a2}}+10^{2pH-pK_{a2}-pK_{a3}}} \\ x_{AH^-}=\frac{[AH^-]_{eq}}{C_{tot}}=\frac{1}{10^{pK_{a1}+pK_{a2}-2pH}+10^{pK_{a2}-pH}+1+10^{pH-pK_{a3}}} \\ x_{A^{2-}}=\frac{[A^{2-}]_{eq}}{C_{tot}}=1-x_{AH_3^+}-x_{AH_2}-x_{AH^-}} \end{equation}

Il est ainsi possible de faire calculer, pour chaque valeur de $\mathsf{pH}$, la proportion des quatre espèces dans le milieu.

Manipulation du script

Il est possible de modifier les valeurs des $\mathsf{pK_a}$ des couples acide carboxylique/carboxylate et ammonium/amine pour étudier d'autres acides aminés.

Selon la nature du groupe porté par la chaîne latérale, la charge formelle de chaque espèce peut/doit être modifiée dans l'expression de la fonction "charge".

In [ ]:
#Importation des bibliothèques
import numpy as np
import matplotlib.pyplot as plt
import scipy.optimize as optim

#Saisie des constantes d'acidité des couples de l'AA
pKa1=2.2        #pKa du couple RCOOH/RCOO-
pKa2=3.9        #pKa du couple RCOOH/RCOO- de la chaîne latérale
pKa3=9.8        #pKa du couple RNH3+/RNH2

#Définition des fonctions renvoyant les proportions des différentes espèces
def fAH3(x):
    return 1/(1+10**(x-pKa1)+10**(2*x-pKa1-pKa2)+10**(3*x-pKa1-pKa2-pKa3))

def fAH2(x):
    return 1/(10**(pKa1-x)+1+10**(x-pKa2)+10**(2*x-pKa2-pKa3))

def fAH(x):
    return 1/(10**(pKa1+pKa2-2*x)+10**(pKa2-x)+1+10**(x-pKa3))

def fA(x):
    return 1 - fAH3(x) - fAH2(x) - fAH(x)

def charge(x):
    return fAH3(x)-fAH(x)-2*fA(x)


#Création d'une liste de valeurs de pH et saisie des valeurs des pKa
pH = np.linspace(0,14,100)

#Tracé des diagrammes
plt.figure()
plt.subplot(211)
plt.plot(pH,fAH3(pH),'y--',label='$AH_3^+$')
plt.plot(pH,fAH2(pH),'b--',label='$AH_2$')
plt.plot(pH,fAH(pH),'g--',label='$AH^-$')
plt.plot(pH,fA(pH),'k--',label='$A^{2-}$')
plt.title(f"Diagramme de distribution et charge moyenne d'un acide aminé : $pK_a1$ = {pKa1}, $pK_a2$ = {pKa2} et $pK_a3$ = {pKa3}")
plt.grid(True)
plt.xlabel('pH')
plt.ylabel("proportions") 
plt.legend()

plt.subplot(212)
plt.plot(pH,charge(pH),'b--')
plt.grid(True)
plt.xlabel('pH')
plt.ylabel("charge moyenne AA") 

plt.show()

#Recherche du point isoélectrique
pI=optim.bisect(charge,0,14)
print("Valeur du point isoélectrique : ",round(pI,1))
Valeur du point isoélectrique :  3.0