silico.biotoul.fr
 

M1 MABS BBS Math TD Calcul Matriciel

From silico.biotoul.fr

(Difference between revisions)
Jump to: navigation, search
m (Matrices de substitution PAM)
m (Matrices de substitution)
Line 60: Line 60:
Après avoir chargé cette matrice dans <tt>R</tt>, transformez-la en une matrice <tt>MM</tt> (mutation matrix) qui contient des fréquences (aidez-vous des fonctions <tt>apply</tt> et <tt>sum</tt>). Ces fréquences sont interprétées comme des probabilités de passer d'un acide aminé en un autre.
Après avoir chargé cette matrice dans <tt>R</tt>, transformez-la en une matrice <tt>MM</tt> (mutation matrix) qui contient des fréquences (aidez-vous des fonctions <tt>apply</tt> et <tt>sum</tt>). Ces fréquences sont interprétées comme des probabilités de passer d'un acide aminé en un autre.
-
Vous devriez obtenir ceci (10 prémières lignes et 10 premières colonne) :
+
Vous devriez obtenir ceci (10 premières lignes et 10 premières colonne) :
<source lang="rsplus">
<source lang="rsplus">
round(MM[1:10,1:10],2)
round(MM[1:10,1:10],2)
Line 76: Line 76:
</source>
</source>
-
A présent, nous devons calculer la matrice Dayhoff à l'aide de la formule suivante :
 
-
<math>D_{i,j} = 10.log_{10}\frac{M_{i,j}}{F_i}</math>
+
 
 +
Pour un alignement de l'acide aminé <math>AA_i</math> avec l'acide aminé <math>AA_j</math>, on utilise la formule suivante :
 +
 
 +
<math>\frac{P(\mathrm{alignement. AA_i. avec. AA_j. est. du. a. l'evolution})}{P(\mathrm{alignement. AA_i. avec. AA_j. est. du. au. hasard})} = \frac{F_i.M_{j,i}}{F_i.F_j} = \frac{F_j.M_{i,j}}{F_i.F_j}</math>  
avec <math>M</math> la matrice <tt>MM</tt> précédemment calculée (mutation matrix) et <math>F</math> la fréquence de chacun des acides aminés (ici, les fréquences d'apparition dans nos alignements de départ).
avec <math>M</math> la matrice <tt>MM</tt> précédemment calculée (mutation matrix) et <math>F</math> la fréquence de chacun des acides aminés (ici, les fréquences d'apparition dans nos alignements de départ).
 +
 +
 +
 +
On en déduit la vraisemblance d'un alignement entre <math>AA_i</math> et <math>AA_j</math> : <math>L_{i,j} = \frac{F_j.M_{i,j}}{F_i.F_j} = \frac{M_{i,j}}{F_i}</math>
 +
 +
 +
En pratique, on utilise les logarithmes car <math>log( S_1 \times S_2 \times \dots \times S_n ) = log S_1 + log S_2 + \dots + log S_n</math>.
 +
 +
 +
La matrice de substitution se calcule donc à l'aide de la formule suivante : <math>S_{i,j} = 10.log_{10}\frac{M_{i,j}}{F_i}</math>
 +
 +
 +
 +
Nous avons donc besoin de calculer la fréquences de chaque acide aminé dans une séquence (ici, fréquences d'apparition dans nos alignements de départ).

Revision as of 10:25, 29 September 2011

Création d'une matrice

A = matrix( c(11, 12, 13, 21, 22, 23, 31, 32, 33), ncol=3, byrow=TRUE )

A partir d'un fichier File:Gold.metadata.txt :

G=read.table("gold.metadata.txt", sep="\t", header=TRUE)
class(G)

G est un data frame ; les deux premières colonnes contiennent l'identifiant et le nom de l'organisme. Pour extraire la matrice de données (colonnes numériques), on fait :

as.matrix( G[ , 3:12] )

Cas de la matrice unité d'ordre n (notée In), exemple avec n = 3 :

I3 = diag(3)

Cas des vecteurs colonne ou ligne :

V = c(1, 0, 5)
class(V)
# obtention de la matrice vecteur colonne :
as.matrix(V)
# pour obtenir la matrice vecteur ligne, on fait la transposée du résultat pécédent :
t( as.matrix(V) )


Opérations sur les matrices

  • addition +, soustraction -, multiplication par un nombre *,
  • produit : entre 2 matrices A et I3 : A %*% I3, entre une matrice A et un vecteur V A %*% V
  • transposition : t(M)


Matrices de substitution

Nous allons construire une matrice de type Dayhoff (PAM) pour l'alignement de séquences protéiques, ceci à partir d'alignements de séquences. La méthode en quelques mots consiste à

  • compter le nombre de substitutions observées pour chaque acide aminé (a.a.),
  • à transformer ce nombre d'occurrence en fréquence,
  • puis à calculer la log odds matrix : la matrice contenant les coûts attribuer à chaque substitution (match et mismatch).


La première étape (déjà réalisée pour vous) consiste à réaliser les alignements et à dénombrer le nombre de passage d'un acide aminé à un autre.

Fichier contenant, le nombre de substitutions observées entre chaque paire d'acides aminés dans un lot de séquences préalablement alignées File:Count matrix.txt.

CM=read.table("count_matrix.txt", sep="\t", header=TRUE, row.names=1)


Après avoir chargé cette matrice dans R, transformez-la en une matrice MM (mutation matrix) qui contient des fréquences (aidez-vous des fonctions apply et sum). Ces fréquences sont interprétées comme des probabilités de passer d'un acide aminé en un autre.

Vous devriez obtenir ceci (10 premières lignes et 10 premières colonne) :

round(MM[1:10,1:10],2)
     A    R    N    D    C    Q    E    G    H    I
A 0.54 0.03 0.03 0.03 0.08 0.04 0.05 0.05 0.02 0.02
R 0.02 0.57 0.03 0.01 0.02 0.06 0.03 0.01 0.04 0.01
N 0.01 0.02 0.48 0.06 0.01 0.03 0.03 0.03 0.05 0.01
D 0.02 0.01 0.09 0.57 0.01 0.04 0.11 0.02 0.03 0.00
C 0.01 0.00 0.00 0.00 0.57 0.00 0.00 0.00 0.00 0.00
Q 0.02 0.04 0.03 0.02 0.01 0.42 0.05 0.01 0.04 0.01
E 0.04 0.04 0.05 0.13 0.01 0.11 0.52 0.02 0.03 0.01
G 0.05 0.02 0.05 0.03 0.02 0.02 0.02 0.77 0.02 0.00
H 0.00 0.01 0.02 0.01 0.01 0.02 0.01 0.00 0.54 0.00
I 0.02 0.01 0.01 0.00 0.03 0.01 0.01 0.00 0.01 0.50


Pour un alignement de l'acide aminé AAi avec l'acide aminé AAj, on utilise la formule suivante :

\frac{P(\mathrm{alignement. AA_i. avec. AA_j. est. du. a. l'evolution})}{P(\mathrm{alignement. AA_i. avec. AA_j. est. du. au. hasard})} = \frac{F_i.M_{j,i}}{F_i.F_j} = \frac{F_j.M_{i,j}}{F_i.F_j}

avec M la matrice MM précédemment calculée (mutation matrix) et F la fréquence de chacun des acides aminés (ici, les fréquences d'apparition dans nos alignements de départ).


On en déduit la vraisemblance d'un alignement entre AAi et AAj : L_{i,j} = \frac{F_j.M_{i,j}}{F_i.F_j} = \frac{M_{i,j}}{F_i}


En pratique, on utilise les logarithmes car log( S_1 \times S_2 \times \dots \times S_n ) = log S_1 + log S_2 + \dots + log S_n.


La matrice de substitution se calcule donc à l'aide de la formule suivante : S_{i,j} = 10.log_{10}\frac{M_{i,j}}{F_i}


Nous avons donc besoin de calculer la fréquences de chaque acide aminé dans une séquence (ici, fréquences d'apparition dans nos alignements de départ).