M1 – Examen de Bioinformatique
Jean-Baptiste Lamy
Mercredi 18 janvier 2018, 10-12h (1ère session)
Les documents (cours, TP, notes personnelles) sont autorisés lors de l’examen. Les livres, les ordinateurs, les
tablettes et les téléphones portables sont interdits !
Vous devez écrire les réponses aux questions et les programmes Python sur une feuille d’examen.
Exercice 1 :
Le taux de GC3 est une caractéristique d’une séquence d’ARNm. Il s’agit du pourcentage de bases G ou C
situées en 3ème position dans les codons. Par exemple, dans la séquence suivante : AUCGGUAGG , seuls les G
et les C soulignés sont comptés. Dans cet exemple, nous avons 3 codons, dont 2 ont un GC en position 3. Le taux
de GC3 est donc de 2/3 = 66%.
Le taux de GC3 est caractéristique de certaines espèces, et peut donc aider à l’identification d’une séquence.
L’objectif de l’exercice est de réaliser un programme pour calculer le taux de GC3 dans une séquence de gène.
Pour les questions 1 à 5, écrivez le code Python permettant d’effectuer les opérations demandées. On consi-
dérera que les modules suivants sont importés (il n’est donc pas nécessaire de recopier les importations) :
from Bio.Seq import *
from Bio.SeqIO import *
from Bio import Entrez
from Bio.Alphabet import *
import Bio.motifs as motifs
from Bio.pairwise2 import *
1. Nous travailler sur la séquence d’ARNm ayant l’identifiant “Y45764” dans la base de données en ligne
nucleotide. Télécharger cette séquence. (2 points) Réponse :
Entrez.email = ”[email protected]”
arn = read(Entrez.efetch(db=”nucleotide”, id=”Y45764”, rettype=”gb”, retmode=”text”), ”genbank”)
2. Afficher la séquence complète de l’ARNm, et le nombre de bases de cette séquence. (1 point) Réponse :
print(arn.seq)
print(len(arn))
3. Calculer le nombre de codons dans l’ARNm, et mettre le résultat dans une variable appelé “nb codon”. (1
point) Réponse :
nb codon = int(len(adn) / 3) # le int n’est nécessaire qu’avec Python 3
4. Calculer le nombre de GC3. Pour répondre à cette question :
(a) On initialisera un compteur. (1 point)
(b) On effectuera une boucle sur les numéros des codons (0, 1, 2, 3...), à l’aide de la fonction range(). (1
point)
(c) On extraira la séquence de 3 bases du codon en cours dans la variable “codon”. (2 points)
(d) On regardera si le codon en cours a un GC en position 3. (3 points)
Réponse :
nb gc3 = 0
for i in range(nb codon) :
codon = adn.seq[i * 3 : i * 3 + 3]
if (codon[2] == ”G”) or (codon[2] == ”C”) :
nb gc3 = nb gc3 + 1
5. Calculer le taux de GC3 à partir du nombre de GC3 obtenu à la question précédente. (1 point) Réponse :
taux = nb gc3 / float(nb codon)
6. Peut-on calculer le taux de GC3 à partir d’une séquence de gène ? à partir d’une séquence de protéine ?
Pourquoi ? (2 points) Réponse :
Gène : oui. Il suffit de faire la transcription.
Protéine : non, car le code génétique est redondant : il n’est pas possible de retrouver le codon qui a produit
un acide aminé donné. C’est en particulier vrai pour la 3ème base du codon, qui ne change souvent pas
l’acide aminé codé.
Exercice 2 :
Nous allons travailler sur les deux séquences protéiques suivantes : PLYA et LYAM, correspondant à des sites
actifs d’enzymes. La première des deux séquences correspond à la séquence normale qui sera prise comme référence,
la seconde étant une séquence anormale conduisant à une maladie génétique.
1. Construire la matrice de programmation dynamique, en utilisant un score de +1 pour les identités, -1 pour
les substitutions, -2 pour les insertions et les délétions. (4 points) Réponse :
- P L Y A
-
0 →-2 →-4 →-6 →-8
↓ & &
L
-2 -1 -1 →-3 →-5
↓ &↓ & &
Y
-4 -3 -2 0 →-2
↓ &↓ &↓ ↓ &
A
-6 -5 -4 -2 1
↓ &↓ &↓ ↓ ↓
M
-8 -7 -6 -4 -1
2. Reconstruire l’alignement le plus probable entre les deux séquences. (2 points) Réponse :
PLYA-
|||
-LYAM