Retour au blog

Bio-informatique : Séquençage, Alignement et Analyse Génomique pour Biologistes

Des lectures du séquenceur au variant : score de qualité Phred, alignement par programmation dynamique, lecture d'un résultat BLAST et profondeur de séquençage, avec quatre exercices corrigés.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

Analyser un génome, c'est enchaîner trois gestes : séquencer, c'est-à-dire lire l'ADN par petits fragments appelés lectures ; aligner ces lectures sur une séquence connue ; puis interpréter les différences. Exemple : la lecture GATTACA, alignée sous la référence GATCACA, n'en diffère qu'en quatrième position, un T à la place d'un C. Si presque toutes les lectures qui couvrent cette position portent ce T, tu tiens sans doute un variant, c'est-à-dire une vraie différence avec la référence ; si une seule le porte, c'est plutôt une erreur de séquençage.

Le séquençage : des lectures et leur qualité

Aucune machine ne lit un chromosome d'un bout à l'autre : on fragmente l'ADN, et le séquenceur lit chaque fragment. Une lecture courte typique fait 300 à 400 paires de bases, quand les techniques à lectures longues lisent de quelques milliers à des centaines de milliers de bases d'un coup (glossaire du NHGRI, 2026). Plus les lectures sont longues, moins il y a de morceaux à remettre en ordre.

Pour chaque base, le séquenceur estime aussi la probabilité $P$ de s'être trompé, et la traduit en score de qualité Phred :

Formule : $$Q = -10\log_{10} P \qquad \text{donc} \qquad P = 10^{-Q/10}$$

$Q = 20$ correspond à une erreur sur 100, $Q = 30$ à une erreur sur 1 000.

Ces scores voyagent dans le fichier FASTQ, où chaque lecture occupe en général quatre lignes : un identifiant commençant par @, la séquence, une ligne commençant par +, puis la qualité, un caractère par base. Ce caractère est celui dont le numéro dans la table ASCII vaut $Q + 33$ : la lettre I, numéro 73, signale $Q = 40$ (Cock et al., 2010).

Piège classique : l'échelle Phred est logarithmique. $Q = 40$ n'est pas « deux fois mieux » que $Q = 20$ : vingt points de plus divisent la probabilité d'erreur par $10^{2} = 100$, de $10^{-2}$ à $10^{-4}$.

Aligner deux séquences

Aligner, c'est écrire deux séquences l'une sous l'autre en faisant correspondre au mieux leurs positions. Tu peux ouvrir des trous, notés « - », qui représentent une insertion ou une délétion. Chaque colonne compte dans le score. Avec le barème identité $+1$, substitution $-1$ et trou $-2$, l'alignement suivant :

ACGT
A-GT

compte trois identités et un trou, soit $S = 3 \times (+1) + 1 \times (-2) = 1$. Le meilleur alignement est celui qui obtient le plus haut score pour le barème choisi.

Tester tous les alignements possibles est hors de portée : leur nombre explose avec la longueur des séquences. La programmation dynamique contourne l'obstacle avec un tableau dont la case $F(i,j)$ contient le meilleur score pour aligner les $i$ premières bases d'une séquence $a$ avec les $j$ premières d'une séquence $b$. Chaque case se déduit de trois voisines déjà remplies :

Formule : $$F(i,j) = \max\begin{cases} F(i-1,j-1) + s(a_i,b_j) \\ F(i-1,j) + g \\ F(i,j-1) + g \end{cases}$$

avec $s(a_i,b_j)$ le score d'identité ou de substitution, et $g$ la pénalité de trou, négative. Au départ, $F(0,0) = 0$, $F(i,0) = i\,g$ et $F(0,j) = j\,g$.

Venir de la diagonale aligne $a_i$ avec $b_j$ ; venir du haut ou de la gauche met un trou en face d'une base. La case en bas à droite donne le score optimal, et l'alignement se retrouve en remontant le chemin des choix retenus. C'est l'algorithme de Needleman et Wunsch, pour un alignement global, sur toute la longueur. Celui de Smith et Waterman cherche le meilleur segment commun, un alignement local : il ajoute $0$ dans le maximum, met des $0$ sur les bords et remonte de la meilleure case jusqu'à un $0$.

Chercher dans les banques avec BLAST

Pour identifier une séquence inconnue, tu la compares aux séquences publiées dans les banques publiques, comme GenBank au NCBI américain. À cette échelle, la programmation dynamique est trop lente. BLAST, l'outil de recherche par alignement local du NCBI, va plus vite : il repère de courts mots identiques entre ta séquence, appelée requête, et celles de la banque, puis étend l'alignement autour de ces ancres jusqu'à ce que le score baisse trop. Le prix de cette vitesse : il peut rater une ressemblance faible (NLM, 2023).

Pour chaque séquence trouvée, BLAST affiche le pourcentage d'identité, la couverture de la requête (la part de ta séquence qui est alignée) et l'E-value.

Définition : l'E-value d'un alignement est le nombre d'alignements de score au moins aussi bon qu'on attend par hasard dans une banque de cette taille (NLM, 2023). Très inférieure à 1, elle signale une ressemblance qui ne doit rien au hasard. Elle grandit avec la taille de la banque.

Piège classique : n'écris jamais « 85 % d'homologie ». Deux séquences sont homologues, c'est-à-dire issues d'un ancêtre commun, ou ne le sont pas : c'est une conclusion que tu tires d'une ressemblance significative. Ce qui se chiffre en pourcentage, c'est l'identité, ou la similarité pour les protéines, qui compte aussi les acides aminés aux propriétés voisines.

Des lectures au variant : l'analyse génomique

Si l'espèce a déjà un génome de référence, on aligne chaque lecture à sa place sur cette référence : c'est le mapping. Sinon, on assemble de novo : les chevauchements entre lectures permettent de reconstruire de longues séquences continues, les contigs.

On compte ensuite combien de lectures recouvrent chaque position : c'est la profondeur de séquençage. Avec $N$ lectures de longueur $L$ sur un génome de taille $G$, elle vaut en moyenne :

Formule : $$C = \frac{N \times L}{G}$$

Elle se note par exemple $30\times$ : trente lectures par base en moyenne.

La profondeur sépare le vrai de l'erreur. Si 28 lectures sur 30 portent un T là où la référence porte un C, tu retiens un variant ; un T isolé sur 30 lectures ressemble à une erreur de séquençage. Chez un organisme diploïde, un variant présent sur un seul des deux chromosomes homologues apparaît dans environ la moitié des lectures. Ce tri s'appelle l'appel de variants.

Reste l'annotation : situer les gènes, par des modèles statistiques et par comparaison avec des gènes connus, puis dire si le variant tombe dans une séquence codante et s'il change un acide aminé.

Exercices corrigés

Cherche chacun sur ta feuille avant d'ouvrir la correction.

Exercice 1 : Toutes les bases d'une lecture de 300 bases ont la qualité $Q = 30$. Combien d'erreurs contient-elle en moyenne ? Quelle qualité correspond à une erreur sur 10 000 ?

Correction :

$P = 10^{-30/10} = 10^{-3}$ par base, donc en moyenne $300 \times 10^{-3} = 0{,}3$ erreur par lecture.

Une erreur sur 10 000, c'est $P = 10^{-4}$, d'où $Q = -10\log_{10}\left(10^{-4}\right) = 40$.

Exercice 2 : Tu séquences le génome d'une bactérie de 5 millions de paires de bases et tu obtiens un million de lectures de 300 bases (données fictives). Quelle est la profondeur moyenne ? Combien de lectures suffiraient pour une profondeur moyenne de $30\times$ ?

Correction :

$C = \dfrac{N \times L}{G} = \dfrac{10^{6} \times 300}{5 \times 10^{6}} = 60$ : chaque base est lue en moyenne 60 fois, soit une profondeur de $60\times$.

Pour $30\times$, on isole $N$ : $N = \dfrac{C \times G}{L} = \dfrac{30 \times 5 \times 10^{6}}{300} = 500\,000$ lectures.

Exercice 3 : Aligne globalement $a = \text{GAT}$ et $b = \text{GT}$ par programmation dynamique, avec identité $+1$, substitution $-1$ et trou $-2$. Remplis le tableau $F$, avec $a$ en lignes et $b$ en colonnes, puis donne le score optimal et l'alignement.

Correction :

La première ligne vaut $0$, $-2$, $-4$ et la première colonne $0$, $-2$, $-4$, $-6$. Dans chaque maximum, on écrit dans l'ordre la diagonale, le haut et la gauche :

ligne G : $F(1,1) = \max(0+1\,;\,-2-2\,;\,-2-2) = 1$ et $F(1,2) = \max(-2-1\,;\,-4-2\,;\,1-2) = -1$ ;

ligne A : $F(2,1) = \max(-2-1\,;\,1-2\,;\,-4-2) = -1$ et $F(2,2) = \max(1-1\,;\,-1-2\,;\,-1-2) = 0$ ;

ligne T : $F(3,1) = \max(-4-1\,;\,-1-2\,;\,-6-2) = -3$ et $F(3,2) = \max(-1+1\,;\,0-2\,;\,-3-2) = 0$.

$$\begin{array}{c|ccc} & & \text{G} & \text{T} \\ \hline & 0 & -2 & -4 \\ \text{G} & -2 & 1 & -1 \\ \text{A} & -4 & -1 & 0 \\ \text{T} & -6 & -3 & 0 \end{array}$$

Le score optimal est $F(3,2) = 0$. En remontant, $F(3,2)$ vient de la diagonale (T face à T), $F(2,1)$ du haut (A face à un trou) et $F(1,1)$ de la diagonale (G face à G). L'alignement est donc :

GAT
G-T

Vérification : $1 - 2 + 1 = 0$.

Exercice 4 : Tu lances BLAST avec une requête de 900 bases (données fictives). Résultat A : identité 100 %, couverture de la requête 3 %, E-value 2. Résultat B : identité 81 %, couverture 98 %, E-value $10^{-120}$. Lequel appuie l'hypothèse que ta séquence est homologue de la séquence trouvée ?

Correction :

Le résultat B. Son E-value, très inférieure à 1, écarte le hasard, et l'alignement couvre 98 % de ta séquence.

Le résultat A est le piège. Ses 100 % d'identité portent sur 3 % de 900 bases, soit 27 bases, et une E-value de 2 veut dire qu'on attend environ deux alignements aussi bons par hasard dans la banque. L'identité seule ne prouve rien.

B appuie donc une homologie. La fonction connue de la séquence trouvée reste, pour la tienne, une hypothèse à tester.

À retenir

À retenir :

  • La qualité d'une base suit $Q = -10\log_{10} P$ : vingt points de plus, cent fois moins d'erreurs.
  • La programmation dynamique trouve l'alignement de meilleur score, global (Needleman et Wunsch) ou local (Smith et Waterman).
  • BLAST gagne du temps en partant de courts mots identiques, au prix d'un peu de sensibilité.
  • Un résultat BLAST se juge à l'E-value et à la couverture, jamais à l'identité seule.
  • Profondeur moyenne : $C = \dfrac{N \times L}{G}$. C'est elle qui sépare un vrai variant d'une erreur de séquençage.

Sources

Tu peux partager cette page librement, en citant ORBITECH AI Academy avec son lien.