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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
liste1=['a','g','a','a','t','t','c','g','t','c','t','t','g',....]
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
['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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?