Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Compter les bases d’une séquence d’ADN

Après cette leçon: Je peux compter les bases d’une séquence et calculer son complément inverse.

Leçon de 55 min2 commandesLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Une séquence d’ADN est une chaîne de caractères

Une séquence d’ADN s’écrit avec quatre lettres : A, C, G et T. Pour un programme, c’est donc une simple chaîne de caractères.

La bio-informatique traite ces chaînes avec du code. Vous allez compter les lettres, mesurer la part de G et de C, puis calculer le brin opposé. Toutes les séquences de ce module sont inventées.

À la fin de cette leçon

Remarque

Je peux compter les bases d’une séquence et calculer son complément inverse.

Mots clés

MotCe que ça veut direExemple
Baseune lettre de la séquenceA
Séquencela suite des bases, de gauche à droite
Taux de GCla part des bases qui sont G ou C
Complémentla séquence où chaque base est remplacée par sa partenaire
Complément inversele complément, lu dans l’autre sens

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Quatre bases suffisent à écrire une séquence

Chaque lettre est une base : A, C, G ou T. Une séquence est la suite de ces bases, lue de gauche à droite.

En Python, on la range dans une chaîne. len(sequence) donne sa longueur et sequence.count("G") compte les G.

Exemple travaillé : compter ATGGCGCTAAGC

BaseCombienCalcul
A3positions 1, 9 et 10
T2positions 2 et 8
G4positions 3, 4, 6 et 11
C3positions 5, 7 et 12
Total123 + 2 + 4 + 3

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Le taux de GC est une part

Le taux de GC est le nombre de bases G ou C divisé par la longueur. Dans notre séquence, 7 bases sur 12 sont G ou C : 7 divisé par 12 donne environ 0,583.

Une séquence sans aucun G ni C a un taux de 0. Une séquence faite uniquement de G et de C a un taux de 1.

Une erreur fréquente

Attention

Beaucoup divisent le nombre de G et de C par le nombre de A et de T. Le taux de GC se divise toujours par la longueur totale. Avec 7 et 5, la bonne réponse est 7 sur 12, pas 7 sur 5.

Compter G et C avec une boucle

Code: python
sequence = "ATGGCGCTAAGC"

# On parcourt la séquence base par base et on compte les G et les C.
total_gc = 0
for base in sequence:
    if base == "G" or base == "C":
        total_gc = total_gc + 1

print("longueur", len(sequence))
print("G ou C", total_gc)
print("taux de GC", round(total_gc / len(sequence), 3))
# Changez la séquence puis relancez.

Compter dans le labo

Commande
docker exec jupyter python3 -c "s='ATGGCGCTAAGC'; print(len(s), s.count('G') + s.count('C'))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ce que la commande affiche

La commande lance Python dans le labo. Elle prend la même séquence inventée et affiche deux nombres : la longueur, puis le nombre de G et de C ajoutés.

Vous lisez donc 12 7. Divisez 7 par 12 pour retrouver le taux de GC.

Le complément inverse lit le brin opposé

L’ADN a deux brins. En face d’un A il y a un T, en face d’un G il y a un C. Remplacer chaque base par sa partenaire donne le complément.

L’autre brin se lit en sens contraire. On retourne donc le complément : c’est le complément inverse.

Exemple travaillé : le brin opposé

ÉtapeRésultat
Séquence de départATGGCGCTAAGC
Complément, base par baseTACCGCGATTCG
Complément inverse (on retourne)GCTTAGCGCCAT

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Calculer le complément inverse

Code: python
table = {"A": "T", "T": "A", "G": "C", "C": "G"}
sequence = "ATGGCGCTAAGC"

# On remplace chaque base par sa complémentaire, puis on retourne le résultat.
complement = ""
for base in sequence:
    complement = complement + table[base]

print("complément     ", complement)
print("complément inverse", complement[::-1])

Le complément inverse dans le labo

Commande
docker exec jupyter python3 -c "s='ATGGCGCTAAGC'; print(s[::-1].translate(str.maketrans('ACGT', 'TGCA')))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Pour aller plus loin

Dans votre carnet, inventez deux séquences de vingt bases : l’une riche en G et en C, l’autre pauvre. Calculez leurs taux de GC.

Écrivez une phrase qui dit laquelle a le taux le plus haut et comment vous l’avez vu.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.