Archive

Exercice 5

trx337

j’ai un peu compris mais pas tout à fait car je devrais obtenir 3 et je n’obtiens que 1 donc quelque chose ne va pas :

glou = "CCTTTTCATTCTGACTGCAACGGGCAAT"

glou1 = "TTCTGAACTGGTTACCTGCCGTGAGTAA"


import re
re_stop = re.compile("TAA|TAG|TGA")

# votre code
def count_stop(dna):
    """
    localise le prochain STOP en commençant à 
    l'indice start, et sur la même phase 

    renvoie None s'il n'y en a plus
    """
    # on commence à l'indice en question
    index =0
    # tant qu'on trouve un STOP
    while True:
        # on cherche un STOP 
        # à partir de la position courante
        match = re_stop.search(dna, index)
        # il n'y a plus rien à chercher
        if match is None:
            return None
            print(index)
        # si on n'est pas sur la même phase que `start`
        # on ignore cet endroit
            #index = match.start()
        else:
            index += 1
            #continue
        # sinon, il y a un match sur la bonne phase
        return index
        continue

    # si on est ici c'est qu'il n'y a plus rien à trouver
    return None

glu =count_stop(glou1)
print("glu =" ,glu)
IsabellePoirier

Bonjour trx337,

Le but ici n’est pas de trouver localiser le prochain codon STOP mais de compter tous les codons STOP présents dans la chaînes (sans se préoccuper de la phase).

Je ne pense pas d’ailleurs que la méthode search fasse ce que tu souhaitais faire ici. En effet, elle ne retourne pas un indice mais un objet du module re si elle trouve le motif dans la chaîne.
Essaie peut-être plutôt avec la méthode findall.

Une remarque concernant ton code, si le programme rencontre l’instruction return, il quitte la fonction et retourne à l’exécution du programme appelant.
Les instructions qui suivent ce return dans le code de ta fonction ne seront donc pas exécutées, comme ton print(index) après return None, ou continue après return index.

trx337

je crois que j’ai trouvé :

glou = "CCTTTTCATTCTGACTGCAACGGGCAAT"

glou1 = "TTCTGAACTGGTTACCTGCCGTGAGTAA"

glou2 = "TTC"




import re
re_stop = re.compile("TAA|TAG|TGA")

# votre code
def count_stop(dna):


        match = re_stop.findall(dna)

        if match :
        
            print(" match : " ,match)
            return len(match)

        else:

            return 0

glu =count_stop(glou1)

print("glu =" ,glu)
IsabellePoirier

Pourquoi la boucle while ? findall va trouver toutes les occurrences.

trx337

ok , je l’ai retiré
et si on remplace les codons stop par les codons serines , est ce qu’on obtiens l’exercice no 6 ?

IsabellePoirier

Pourquoi est-ce que tu n’essaies pas ?
Cela dit, dans l’exercice 6, on demande la liste des codons, et non seulement leur nombre.

trx337

tu réponds vraiment vite

trx337

comme ça ?

glou = "CCTTTTCATTCTGACTGCAACGGGCAAT"

glou1 = "TTCTGAACTGGTTACCTGCCGTGAGTAA"

glou2 = "TTC"

motif_serine = "TCA|TCG|TCT|TCC|AGT|AGC"


import re
re_motif_serine = re.compile("TCA|TCG|TCT|TCC|AGT|AGC")

# votre code
def count_stop(dna):

        match = re_motif_serine.findall(dna)

        if match :
        
            print(" liste des serines : " ,match)
            return len(match)

        else:

            return 0

glu =count_stop(glou1)

print("nombre des serines =" ,glu)
IsabellePoirier

Je pense que tu peux aussi te passer du if.
S’il n’y a pas match, len(match) sera nulle.

trx337

merci