Outils pour utilisateurs

Outils du site


nsi:tds:adn

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 précisant toutes les associations codon ⇒ acide aminé. Voici les premières lignes du fichier.

codonSymboleAcide aminé
UUUFPhenylalanine
UUCFPhenylalanine
UUALLeucine
UUGLLeucine
CUULLeucine

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.

nsi/tds/adn.txt · Dernière modification : de yadam