(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/
Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.
Le but de cette activité est de simuler la transcription de brins d'ADN en ARN et la traduction de l'ARN en protéines.
1.1. Compléter la structure suivante, contenant la liste des nucléotides pouvant composer un brin d'ADN.
Attention : Penser ensuite à exécuter la zone ci-dessous (et les suivantes) avec SHIFT+Entrée.
#Définition de la liste des nucléotides de l'ADN
#(A COMPLETER)
Nucleotide_ADN=['A','T','C','G']
1.2. La fonction ADN_Aleatoire ci-dessous permet de générer une chaîne ADN de 3n nucléotides. Effectuer la saisie permettant de créer une chaîne nommée ADN, composée de 30 nucléotides, et afficher cette chaîne.
#import du module random pour la génération aléatoire de l'ADN
from random import*
def ADN_Aleatoire(n):
"Fonction qui crée un brin d'ADN de longueur 3*n"
#Création d'une chaîne vide
ADN=''
for k in range(3*n):
#Ajouts successifs de nucléotides choisis au hasard
ADN += choice(Nucleotide_ADN)
return ADN
#Effectuer la saisie
ADN=ADN_Aleatoire(10)
ADN
'GCGAGTTCTCGAGTCATCGGTCTAAGGCGC'
1.3. Compléter la structure suivante, qui définit la correspondance des nucléotides entre 2 brins d'ADN correspondants..
#Définition de la correspondance des nucléotides des brins d'ADN
#(A COMPLETER)
Brin_correspondant={ 'A':'T' , 'T':'A' , 'C':'G' , 'G':'C' }
1.4. La fonction Creer_deuxieme_brin ci-dessous permet de générer le brin correspondant d'un brin d'ADN donné. Effectuer la saisie permettant de créer le brin ADN2, correspondant au brin ADN précédemment généré, et afficher le résultat.
def Creer_deuxieme_brin(Brin_ADN):
"Fonction qui reçoit un brin d'ADN et renvoie le 2e brin correspondant"
Deuxieme_brin=''
for nucleotide in Brin_ADN:
Deuxieme_brin += Brin_correspondant[nucleotide]
return Deuxieme_brin
#Effectuer la saisie
ADN2=Creer_deuxieme_brin(ADN)
ADN2
'CGCTCAAGAGCTCAGTAGCCAGATTCCGCG'
2.1. Compléter la structure suivante, qui définit la correspondance des nucléotides de l'ADN et des nucléotides de l'ARN.
#Définition de la correspondance des nucléotides de l'ADN vers ARN
#(A COMPLETER)
ARN_correspondant={ 'A':'U' , 'T':'A' , 'C':'G' , 'G':'C' }
2.2. La fonction Transcription ci-dessous permet de transcrire en ARN un brin d'ADN donné. Effectuer la saisie permettant de créer le brin ARN, correspondant au brin ADN précédemment généré, et afficher le résultat.
def Transcription(Brin_ADN):
"Fonction qui réalise la transcription d'un brin d'ADN en chaîne ARN"
ARN=''
for nucleotide in Brin_ADN:
ARN += ARN_correspondant[nucleotide]
return ARN
#Effectuer la saisie
ARN=Transcription(ADN)
ARN
'CGCUCAAGAGCUCAGUAGCCAGAUUCCGCG'
3.1. Compléter la structure suivante, qui définit la correspondance des nucléotides de l'ADN et des nucléotides de l'ARN.
On pourra s'aider du schéma ci-dessous et on codera 'STP' pour l'arrêt..
#Définition de la correspondance des acides aminés et des triplets de nucléotides:
#(A COMPLETER)
Acides_amines={ 'His': ['CAU','CAC'] , 'Gln': ['CAA','CAG'] , 'Pro': ['CCU','CCC','CCA','CCG'] , 'Arg': ['CGU','CGC','CGA','CGG','AGA','AGG'] , 'Leu': ['CUU','CUC','CUA','CUG','UUA','UUG'] , 'Asp': ['GAU','GAC'] , 'Glu': ['GAA','GAG'] , 'Ala': ['GCU','GCC','GCA','GCG'] , 'Gly': ['GGU','GGC','GGA','GGG'] , 'Val': ['GUU','GUC','GUA','GUG'] , 'Tyr': ['UAU','UAC'] , 'Ser': ['UCU','UCC','UCA','UCG','AGU','AGC'] , 'Cys': ['UGU','UGC'] , 'Trp': ['UGG'] , 'Phe': ['UUU','UUC'] , 'Asn': ['AAU','AAC'] , 'Lys': ['AAA','AAG'] , 'Thr': ['ACU','ACC','ACA','ACG'] , 'Ile':
['AUU','AUC','AUA'] , 'Met': ['AUG'] , 'STP': ['UAA','UAG','UGA'] }
3.2. La fonction Acide_amine_correspondant ci-dessous réalise la traduction d'un triplet de nucléotides en acide aminé, et la fonction Traduction réalise la traduction d'une chaîne ARN en protéine.
Effectuer la saisie nécessaire pour créer la protéine, nommée Proteine, obtenue avec le brin ARN précédemment généré.
def Acide_amine_correspondant(Triplet):
"Fonction qui réalise la traduction d'un triplet de nucléotide en acide aminé"
for Ac_am in Acides_amines:
for Triplet_correspondant in Acides_amines[Ac_am]:
if Triplet==Triplet_correspondant:
return Ac_am
return False
def Traduction(ARN):
"Fonction qui réalise la traduction d'une chaîne ARN en Proteine"
Proteine=[]
for k in range(0,len(ARN)-2,3):
Ac_am=Acide_amine_correspondant(ARN[k:k+3])
if Ac_am=='STP': break
else:
Proteine.append(Ac_am)
return Proteine
#Effectuer la saisie
Proteine=Traduction(ARN)
Proteine
['Arg', 'Ser', 'Arg', 'Ala', 'Gln']
3.3. Compléter la structure suivante, qui définit la correspondance des acides aminés et de leurs nomenclatures simplifiées..
Ces nomenclatures sont précisées sur le schéma précédent..
Code_Ac_am={ 'His': 'H' , 'Gln': 'Q' , 'Pro': 'P' , 'Arg': 'R' , 'Leu': 'L' , 'Asp': 'D' , 'Glu': 'E' , 'Ala': 'A' , 'Gly': 'G' , 'Val': 'V' , 'Tyr': 'Y' , 'Ser': 'S' , 'Cys': 'C' , 'Trp': 'W' , 'Phe': 'F' , 'Asn': 'N' , 'Lys': 'K' , 'Thr': 'T' , 'Ile': 'I' , 'Met': 'M' , 'STP': '*' }
3.4. La fonction Simplification ci-dessous permet la simplification d'une liste d'acides aminés. Effectuer la saisie nécessaire pour simplifier Proteine précédemment généré.
def Simplification(Proteine):
"fonction qui renvoie une protéine sous sa forme simplifiée"
Proteine_simp=''
for Ac_am in Proteine:
Proteine_simp += Code_Ac_am[Ac_am]
return Proteine_simp
#Effectuer la saisie
Prot_simp=Simplification(Proteine)
Prot_simp
'RSRAQ'
Exécuter le programme ci-dessous, pour obtenir une vérification de la cohérence de votre saisie de la correspondance des acides aminés avec les triplets de nucléotides.
Nucleotide_ARN=[ARN_correspondant[nucleotide] for nucleotide in Nucleotide_ADN]
def Verif_correspondance_acides_amines():
"""
Complément:
fonction de vérification de la correspondance
entre Acides aminés et triplets
"""
print("\nRECAPITULATIF DES SAISIES:")
compteur_triplets=0
for ac_am in Acides_amines:
print(ac_am, [Triplet for Triplet in Acides_amines[ac_am]])
compteur_triplets += len(Acides_amines[ac_am])
print(" Nombres d'acides aminés écrits",len(Acides_amines))
print(" Nombres de triplets écrits (y compris STP):",compteur_triplets)
print("\nVERIFICATION DES SAISIES:")
Liste_oublis=[]
for n1 in Nucleotide_ARN:
for n2 in Nucleotide_ARN:
for n3 in Nucleotide_ARN:
Triplet=n1+n2+n3
if not Acide_amine_correspondant(Triplet):
Liste_oublis.append(Triplet)
nbre_oublis=len(Liste_oublis)
print("Il y a",nbre_oublis,"triplet"+("s" if nbre_oublis>1 else ""),"non attribué"+("s" if nbre_oublis>1 else ""),"" if nbre_oublis==0 else "qui est:" if nbre_oublis==1 else "qui sont:")
for oubli in Liste_oublis: print(oubli)
return None
Verif_correspondance_acides_amines()
RECAPITULATIF DES SAISIES: His ['CAU', 'CAC'] Gln ['CAA', 'CAG'] Pro ['CCU', 'CCC', 'CCA', 'CCG'] Arg ['CGU', 'CGC', 'CGA', 'CGG', 'AGA', 'AGG'] Leu ['CUU', 'CUC', 'CUA', 'CUG', 'UUA', 'UUG'] Asp ['GAU', 'GAC'] Glu ['GAA', 'GAG'] Ala ['GCU', 'GCC', 'GCA', 'GCG'] Gly ['GGU', 'GGC', 'GGA', 'GGG'] Val ['GUU', 'GUC', 'GUA', 'GUG'] Tyr ['UAU', 'UAC'] Ser ['UCU', 'UCC', 'UCA', 'UCG', 'AGU', 'AGC'] Cys ['UGU', 'UGC'] Trp ['UGG'] Phe ['UUU', 'UUC'] Asn ['AAU', 'AAC'] Lys ['AAA', 'AAG'] Thr ['ACU', 'ACC', 'ACA', 'ACG'] Ile ['AUU', 'AUC', 'AUA'] Met ['AUG'] STP ['UAA', 'UAG', 'UGA'] Nombres d'acides aminés écrits 21 Nombres de triplets écrits (y compris STP): 64 VERIFICATION DES SAISIES: Il y a 0 triplet non attribué
(C) Copyright Franck CHEVRIER 2019-2020 http://www.python-lycee.com/
Remerciements particuliers à Christine DEUTSCHMANN pour son aide précieuse.