Bonjour,
J'ai un projet à faire en python, et je suis bloquée à 2 endroits dans mon code.
1ère partie :
Je dois, grâce à des expressions régulières, rechercher dans un fichier cette sequence :
1 2 3 4 5 6
| 1 agaattcgtc ttgctctatt cacccttact tttcttcttg cccgttctct ttcttagtat
61 gaatccagta tgcctgcctg taattgttgc gccctacctc ttttggctgg cggctattgc
121 cgcctcgtgt ttcacggcct cagttagtac cgttgtgacc gccaccggct tggccctctc
181 acttctactc ttggcagcag tggccagctc atatgccgct gcacaaagga aactgctgac
241 accggtgaca gtgcttactg cggttgtcac ttgtgagtac acacgcacca tttacaatgc
301 atgatgttcg tga |
Puis, une fois cette partie du fichier extraite, je ne dois récupérer que les bases que je veux mettre dans une liste pour avoir une liste telle que :
liste1=['a','g','a','a','t','t','c','g','t','c','t','t','g',....]
Voici mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| liste_seq=[]
seqADN=[]
for i in fichier:
#affiche toute la sequence
seq=re.search("^\s+[0-9]+\s([acgt\s]+)",i)
if seq:
#recuperer toutes les bases de la sequence
liste_seq += seq.group(1)
#et les stocker dans une liste
seqADN=list(liste_seq)
#supprimer les espaces et les retour à la ligne
seqADN=seqADN.replace(" ","")
seqADN=seqADN.replace("\n","")
print seqADN |
J'obtiens donc une liste de la forme :
['a', 't', 'a', 'g', 'a', 'a', 't', 't', 'c', 'g', 't', 'c', 't', 't', 'g', 'c', 't', 'c', 't', 'a', 't', 't', 'c', 'a', 'c', 'c', 'c', 't', 't', 'a', 'c', 't', 't', 't', 't', 'c', 't', 't', 'c', 't', 't', 'g', 'c', 'c', 'c', 'g', 't', 't', 'c', 't', 'c', 't', 't', 't', 'c', 't', 't', 'a', 'g', 't', 'a', 't', 'g']
comme dans liste1.
2ème partie :
En parralèle, j'ai extrait de ce meme fichier, des numéros de début et de fin de gène, comme ceci :
1 2 3 4 5 6 7 8
| liste2=[]
for j in fichier:
#affiche tous les genes
gene=re.search("^[ \t] +gene +([0-9]+)\..([0-9]+)",j)
if gene :
#faire une liste de listes avec le debut et la fin de chaque gene
liste2.append([gene.group(1),gene.group(2)])
print liste2 |
La liste obtenue réussie, est de la forme :
liste2 = [['58','272'],['59','304'],['360','458'],['503','805'],...]
Le problème est :
Je dois alors extraire, dans la liste contenant la séquence entière (seqADN ou liste1), les bases (la séquence) correspondantes à chacun des début et fin de gène ci-dessus (liste2).
C'est-à-dire obtenir un dictionnaire de la forme :
pour le gène 1 :
['58','272'] = {'a','a','t','t','c','g','g','t','t','c','a','a',...}
Voici mon code :
1 2 3 4
| for i in seqADN:
for j in liste2:
dico[j]=seqADN[i]
print seqADN[i] |
Cependant, ça ne marche pas.
Quelqu'un pourrait-il m'éclaircir ?
Partager