====== Lecture de fichier ADN ======
Un brin d'ADN est une succession de bases nucléiques symbolisées par A, T, G, C pour adénine, thymine, guanine, cytosine. Une fonction de l'ADN est de coder les protéines que la cellule sera chargée de synthétiser. Pour se faire, un brin d'ADN complémentaire est créé :
A => U (uracile), T => A, G => C, C => G
puis chaque triplet -- **codon** -- de bases code une **acide aminé**.
Par exemple, UAU code pour Y : tyrosine
On vous fournit un fichier {{ .:codons.csv |codons.csv}} précisant toutes les associations codon => acide aminé. Voici les premières lignes du fichier.
Complétez le fichier ''%%adn.py%%'' ci-dessous :
# adn.py
import csv
file = open('codons.csv', 'r', encoding='utf8')
reader = csv.DictReader(file, delimiter=';')
CODONS= []
for row in reader:
CODONS.append(dict(row))
file.close()
def longueur_valide(brin_adn:str) -> bool:
"""
brin_adn: chaîne de caractères représentant un brin d'adn
Renvoie True si le brin_adn contient un nombre de lettres multiple de 3
"""
# tests :
assert longueur_valide('') == True
assert longueur_valide('AGTCCCACT') == True
assert longueur_valide('AGTCCCAC') == False
def contenu_valide(brinADN:str) -> bool:
"""
brin_adn: chaîne de caractères représentant un brin d'adn
Renvoie True si le brin_adn ne contient que les lettres ATGC
"""
# tests :
assert contenu_valide('') == True
assert contenu_valide('AGTCCCACT') == True
assert contenu_valide('AGTCCXCAC') == False
def brin_complementaire(brin_adn:str) -> str:
"""
brin_adn: chaîne de caractères représentant un brin d'adn
précondition : brin_adn ne contient que les lettres ATGC
Renvoie la chaîne correspondant au brin complémentaire.
exemple:
>>> brin_complementaire('AATCACGGG')
'UUAGUGCCC'
"""
# tests
assert brin_complementaire('') = ''
assert brin_complementaire('AATCACGGG') = 'UUAGUGCCC'
def recherche_symbole(codon:str) -> str:
"""
codon: triplet complémentaire.
Renvoie le symbole de l'acide aminée correspondante
exemple :
>>> recherche_symbole('UUA')
'L'
précondition: codon existe
"""
# test
assert recherche_symbole('UUA') == 'L'
def adn_to_acides(brin_adn:str) -> str:
"""
brin_adn: chaîne de caractères représentant un brin d'adn
Renvoie la chaîne correspondant à la suite d'acides aminés.
exemple:
>>> adn_to_acides('AATCACGGG')
'LVP'
"""
# tests
assert adn_to_acides('') == ''
assert adn_to_acides('AATCACGGG') == 'LVP'
J'ai choisi d'écrire ''CODONS'' en majuscules pour souligner son statut particulier : ''CODONS'' une fois défini ne change pas et est utilisé en variable globale.
On évite d'utiliser des variables globales, mais ici c'est justifié : Le contenu de ''CODONS'' est fixé une fois pour toutes, il n'est pas susceptible de changer en cours de programme, on n'envisage pas d'utiliser les fonctions avec des contenus ''CODONS'' différents.