Analyser une électrophorèse SDS-PAGE

Analyser la distance de migration de différents marqueurs de tailles connues en fonction justement du poids moléculaire, permet de retrouver le poids moléculaire des molécules que l'on sépare par électrophorèse SDS-PAGE. Le logiciel R permet une exploitation complète de ce type de résultats.

Etude d'une électrophorèse avec le logiciel R
  1. Voici des données concernant le poids moléculaire de marqueurs ainsi que leurs rapports frontaux de migration sur le gel d'électrophorèse
# Exemple - chargement de données
PM_marqueurs = c(194000,132000,90000,73700,60000,48000,40200)
logPM_marqueurs = log10(PM_marqueurs)
Rf = c(0.6,1.43,2.36,2.8,3.37,4.74,5.79)

2. Voici une commande permettant de tracer le graphique log(PM) = f(rapports frontaux) avec le logiciel R

x_lab = "Rapports frontaux"
y_lab = "log(PM)"
plot(Rf,logPM_marqueurs ,xlim=c(min(Rf),max(Rf)),ylim=c(min(logPM_marqueurs),max(logPM_marqueurs)),pch=16,cex=1.5,font.lab=2,ylab=y_lab,xlab=x_lab,lwd=1, main="log(PM) de marqueurs en fonction de \nleurs rapports frontaux identifiés par SDS-PAGE",cex.main=0.8)
# pch : type de points (ici des croix avec pch=4)
# cex=1.5 (taille de la police) - cex.main : taille du titre
# font.lab : indique si les titres des axes sont normaux (1) , en gras, italique ou les 2 (4).
# xlim et ylim : valeurs min et max pour les 2 axes
# Cette commande qui suit permet de quadriller le graphique
panel.first = grid()

3. Calculer et ajouter les 2 régressions linéaires

# Calculer la régression 1 - ici cette régression est sur les 4 premiers points
regression1 = lm(logPM_marqueurs [1:4]~Rf[1:4] )$coefficients
# Tracer la régression 1
abline(regression1,col="blue",lwd=2,lty=3)
cat("Equation de la régression 1 : ",regression1,"\n")
# Afficher l'équation de la droite sur le graphique : position à définir manuellement
text(2.5,5.2,paste("Equation de la droite\ny =",round(regression1[2],3),"x + ",round(regression1[1],3))) 
# text(x,y,"text") : x et y donnent les coordonnées où s'affiche le texte.
# round permet d'arrondir les valeurs de a et b
# paste permet d'afficher les valeurs agglomérées avec du texte.
# Calculer et tracer la régression 2
regression2 = lm(logPM_marqueurs [5:7]~Rf[5:7] )$coefficients
cat("Equation de la régression 2 : ",regression2,"\n")
abline(regression2,col="blue",lwd=2,lty=3)
text(4.5,4.85,paste("Equation de la droite\ny =",round(regression2[2],3),"x + ",round(regression2[1],3))) 

4. Identifier l'intersection des deux régressions

a_reg1 = regression1[2]
b_reg1 = regression1[1]
a_reg2 = regression2[2]
b_reg2 = regression2[1]
x_intersection = (b_reg2 - b_reg1)/(a_reg1 - a_reg2)
abline(v= x_intersection, lty="dotted")

5. Indiquer les caractéristiques de la molécule X dont on cherche la taille - retrouver sa taille

# Identifier le log(PM) d'une molécule dont on connait le rapport frontal
Rf_moleculeX = 3 # ici ce rapport frontal est de 3.
# Comme ce rapport frontal est inférieur à x_intersection : on va utiliser l'équation de la 1ère régression.
logPM_moleculeX = a_reg1 * Rf_moleculeX + b_reg1
points(Rf_moleculeX, logPM_moleculeX, pch=16, col="red")
arrows(Rf_moleculeX,min(logPM_marqueurs),Rf_moleculeX,logPM_moleculeX,code=0, lty="dotted", col="red",lwd=2)
arrows(min(Rf),logPM_moleculeX,Rf_moleculeX,logPM_moleculeX,code=0, lty="dotted", col="red",lwd=2)
# Calculer le PM de la molécule
PM_moleculeX = 10^logPM_moleculeX
cat("Le poids moléculaire de la molécule est de : ",PM_moleculeX)