Bonjour,
Alors voilà comme dit dans le titre mon objectif est de couper une séquence nucléotidique (chaîne de caractères avec que des A,T,G ou C). Le problème c'est qu'il faudrait couper en deux la séquence mais par un multiple de 3 afin de ne pas couper un codon (représenté par 3 de ces 4 lettres). De plus, j'aimerais ne pas couper des suites de 'AAA' ou 'AAG' ou les deux en même temps, s'ils se retrouvent au milieu de la séquence. En revanche, s'il n'y a pas ces lettres au milieu de la séquence, il faudrait la couper en deux.
Voici une partie de mon code qui sert à regarder si un AAA, AAG ou les 2 en même temps sont au milieu de la séquence :
Input :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 if 'AAA' in seq[i-2:i+3] or 'AAG' in seq[i-2:i+3]: l = 0 for i in range(i-2, i+1): j = i while True: if seq[i:j+3] in s: j += 3 else: if j > l: l = j break print(str(seq[:l])) else: if len(seq) % 2 == 0: print(seq[:len(seq) // 2]) else: print(seq[:(len(seq) + 4) // 2])
ATGTGAGTCAAAAAATGCCTATGA
Output :
ATGTGAGTC AAAAAATGCCTATGA ou ATGTGAGTCAAAAAA TGCCTATGA
La longueur des suites successives de AAA ou AAG varie en fonction des séquences, on peut trouver des AAAAAA, des AAGAAG ou des AAAAAG (ou AAGAAA).
Partager