1. PCSI TP 5 Informatique 2016-2017
TP 5 : ANALYSE D'UNE SEQUENCE D'ADN
OBJECTIF : On souhaite, en s'appuyant sur des séquences d'ADN, se familiariser avec les chaînes de
caractères : création d'une chaîne, accès à un caractère, concaténation de deux chaînes, parcours et
recherche dans une chaîne de caractères seront notamment abordés dans ce TP.
CONSIGNES :
» Commencez par sauvegarder le fichier dans votre dossier Informatique (par exemple sous le nom
"Nom_TP5.py"). Avant d’écrire un programme sur la machine, vous réfléchirez sur feuille !
» N'oubliez pas de commenter votre programme, de documenter vos fonctions et d’utiliser des noms de
variables explicites.
I - MANIPULATION DE CHAÎNES DE CARACTÈRES EN PYTHON
Une chaîne de caractères n’est autre qu’un texte, vu comme une suite finie de caractères consécutifs,
qu’on note entre apostrophes, entre guillemets ou entre triplets de guillemets. Par exemple, ’Coucou’,
"Bonjour" et """Salut !""" sont des chaînes de caractères.
Opérations Exemples
Création d’une chaîne de caractères
>>> mot = 'Coucou'
>>> mot
'Coucou'
Concaténation (= On accole deux chaînes)
Chaine1 + Chaine2 (ne modifie pas Chaine1 mais
renvoie le résultat)
>>> phrase = mot + "et au revoir !"
>>> phrase
'Coucou et au revoir !'
Longueur
>>> len(mot)
6
Obtenir un élément d'une chaîne : Chaine[i]
La numérotation commence à 0
>>> mot[1]
'o'
Obtenir une partie d’une chaîne : Chaine[n:m] de
l'indice 𝑛 à 𝑚 − 1
La numérotation commence à 0
>>> mot[1:3]
'ou'
Mise en forme
• Chaine.lower( ) renvoie la chaîne en minuscules
• Chaine.upper( ) renvoie la chaîne en majuscules
• Chaine.capitalize( ) renvoie la chaîne avec la 1ère
lettre en majuscule
• Chaine.center(n) renvoie la chaîne centrée dans un
espace de n caractères
>>> mot.lower( )
'coucou'
>>> mot.upper( )
'COUCOU'
>>> mot.capitalize( )
'Coucou'
>>> mot.center(20)
' Coucou '
Remarques :
» Les chaînes de caractères sont « immuables » : on ne peut pas modifier un élément d’une chaîne de
caractères par une commande de la forme chaine[i]=... .
» Les méthodes de chaîne, comme lower, upper, capitalize, center, etc... ne modifient pas la
chaîne de caractères d'origine, mais renvoient une chaîne modifiée.
» Les données saisies par l’utilisateur après la commande input(...) sont des chaînes de caractères.
3. PCSI TP 5 Informatique 2016-2017
2. Générer une séquence d’ADN, ADN1, de longueur 200 et l’afficher.
Nous disposons alors d’une séquence d’ADN de longueur 200. Nous utiliserons également une séquence
fixe : ADN2 = ’ATCTCATGCTCGGTAATATGTCATAGCCGATGCTACGATGACCTAC’
La générer et l'afficher.
III - RECHERCHE DE RÉGIONS CODANTES
Une région codante est une succession de codons (triplet de nucléotides) non-chevauchants qui commence
par un triplet ATG (appelé codon start) et s’achève par l’un des trois triplets TAA, TAG ou TGA (appelés
codons stop).
Exemple avec la séquence ADN2 :
ATCTC ATG CTC GGT AAT ATG TCA TAG CCG ATG CTA CGA TGA CCTAC
non
codant
Start * Stop non
codant
Start Stop non
codant Région codante Région codante
Il y a deux régions codantes. Dans la première, le deuxième codon ATG (*) n’est pas un codon start car il
n’est pas précédé d’un codon stop.
Une région codante est composée d’un nombre entier de codons.
1. Recherche d'un codon start
Travail à faire :
3. Écrire une fonction codon_start(ADN) prenant en entrée une séquence d’ADN (chaîne de caractères)
et renvoyant une liste contenant la place de tous les codons start ATG trouvés (on donnera la place du A).
Si aucun codon ATG n’est trouvé, la fonction doit renvoyer une liste vide.
... ...
" " "Fonction codon_start, parametre = ADN, séquence d'ADN, chaîne de A, T, C, G
renvoie : liste contenant la place de tous les codons start ATG, en indiquant la
position de chaque A" " "
... ...
4. PCSI TP 5 Informatique 2016-2017
4. Tester avec les séquences ADN1 et ADN2.
Réponse attendue pour la séquence fixe : codon_start(ADN2) = [5, 17, 29, 37]
2. Recherche d'un codon stop en phase
Travail à faire :
5. Écrire une fonction codon_stop(ADN, i) prenant en entrée une séquence d’ADN et l’indice i du début
d’un codon start et renvoyant l’indice du premier codon stop (TAA, TAG ou TGA) suivant celui-ci. Les
codons start et stop doivent être en phase, c’est-à-dire séparés par un nombre de nucléotides multiple
de 3. Si aucun codon stop n’est trouvé, la fonction doit renvoyer le booléen False.
6. Tester avec les séquences ADN1 et ADN2.
... ...
" " "Fonction codon_stop
parametre 1 (str)= ADN, une séquence d'ADN qui est une chaine de A, T, C, G
parametre 2 (int)= i, l'indice du début d'un codon start
renvoie : l'indice du premier codon stop (TAA, TAG ou TGA) suivant
codons start et stop en phase (séparés par un multiple de 3)
si pas de codon stop, renvoie False." " "
... ...
5. PCSI TP 5 Informatique 2016-2017
Réponses attendues pour la séquence fixe :
codon_stop(ADN2, 5) = 23. codon_stop(ADN2, 17) = 23.
codon_stop(ADN2, 29) = 38. codon_stop(ADN2, 37) = False.
3. Affichage des régions codantes
Travail à faire :
7. Écrire une fonction regions_codantes(ADN) prenant en entrée une séquence d’ADN et renvoyant la
liste des emplacements des régions codantes de cette séquence. Les emplacements seront de la forme
[a, b] où a est l’indice du début du codon start et b est l’indice du début du codon stop correspondant. On
fera attention à ne pas renvoyer de régions codantes chevauchantes. Si aucune région codante n’est
trouvée, la fonction doit renvoyer la liste vide.
On testera avec les séquences ADN1 et ADN2.
Réponse attendue pour la séquence fixe : regions_codantes(ADN2) = [ [5,23] , [29,38] ].
8. Écrire une fonction regions_codantes_aff(ADN) prenant en entrée une séquence d’ADN et renvoyant
la liste des régions codantes de cette séquence. Chaque région codante sera donnée sous la forme d’une
chaîne de caractères et chaque codon sera séparé par le caractère | (Sous Windows : Alt Gr + 6 ; sous Mac :
Alt + Maj + L).
Si aucune région codante n’est trouvée, la fonction doit renvoyer la liste vide.
... ...
" " "Fonction regions_codantes
parametre (str) = ADN, une séquence d'ADN qui est une chaine de A, T, C, G
renvoie : une liste des emplacements des régions codantes, sous la forme
[a,b] avec a l'indice du début du codon start et b l'indice du début du codon stop
si pas de region codante, revoie une liste vide" " "
... ...