Bonjour,

je vais expliquer brièvement ce que je cherche à faire avant de poser ma question, pour plus de clarté

je dispose d'un fichier texte tabulé contenant 2 colonnes d'intérêts :

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
19
20
Ensembl Gene ID                                              
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000003
ENSG00000000005
ENSG00000000005
ENSG00000000005
ENSG00000000005
ENSG00000000005
ENSG00000000005
ENSG00000000419
et
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
19
20
21
22
23
24
 
EntrezGene ID
7105
7105
7105
7105
7105
7105
7105
7105
7105
7105
7105
7105
64102
64102
64102
64102
64102
64102
8813
8813
8813
8813

Il y a une correspondance entre ces valeurs, à chaque IDEntrez correspond un ENSG.
(Ces 2 colonnes sont côte a côte).

Enfin je dipose d'un second fichier avec une colonne d'intérêt, il s'agit encore d'IDEntrez :

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
19
20
21
22
Entrez Gene Interactor A
6416
84665
90
2624
6118
375
377
377
10327
54464
351
333
10370
2033
338
409
1436
7916
27257
6521
602
Et voila ce que j'essaye de faire, je veux associer à ces IDEntrez (juste au dessus), les ENSG qui leurs sont associés (comme dans le premier fichier). L'ordre n'est bien evidemment pas le même, je ne peux pas faire de copier coller.

Pour résoudre ce problème j'ai donc fais un script python (merci à afranck64 et à PauseKawa) pour comparer les IDEntrez des 2 fichiers, et en cas d'égalité, j'aimerai "print" dans un fichier l'IDEntrez et son ENSG associé, comme dans le 1er fichier.

Le script est assez simple, j'ai crée un dictionnaire à partir du premier fichier, les clés du dictionnaire correspondent aux ENGS, et les valeurs aux IDEntrez associés.
Je compare donc les valeurs de mon dictionnaire (correspondants aux IDEntrez) à la colonne de mon second fichier contenant les autres IDEnrtez. En cas d'égalité, je voudrai associer l'ENSG (clé du dictionnaire) à l'IDEntrez de mon second fichier.

Le problème est que je n'arrive pas à récupérer la clé du dictionnaire pour l'associer à l'IDEntrez correspondant.







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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
 
File = open("mart_export-1.txt","r")    # r indique lecture
 
File2 = open("BIOGRID-ORGANISM-Homo_sapiens-3.1.81.tab2.txt","r")    # r indique lecture
 
sortie = open("test.txt", "wb")
 
 
 
dico={}
 
 
 
for ligne in File.readlines():
 
	ligne = ligne.rstrip('\n') # on retire le dernier caractere (retour chariot)
	cols = ligne.split(',')    # Decoupage de la ligne pour recuperer les differents elements
 
 
	if dico.has_key(cols[0])==False: #si la valeur lue n'est pas une cle du dico, alors on l'ajoute
		dico[cols[0]]= cols[3]   # on attribut a cette cle la valeur situee dans la colonne 3 (IDENTREZ)
	else:
		pass
 
 
for ligne2 in File2.readlines():
	ligne2 = ligne2.rstrip('\n') # on retire le dernier caractere (retour chariot)
	cols2 = ligne2.split('	')    # Decoupage de la ligne pour recuperer les differents elements
	if cols2[1] in dico.values():   # si la valeur de la colonne correspond a la valeur de mon dico : ok
 
		print >>sortie, "'%s','%s'" % (cols2[1], dico[cols[0]])
Le problème vient donc de mon qui ne me retourne rien, et je ne vois pas comment faire pour récupérer les différentes clés du dictionnaire.

Désolé pour le pavé, j'éspère ne pas avoir été trop confus dans mes explications.

Si jamais vous pensez à une autre stratégie pour faire le "pont" entre ces données je suis preneur, l'utilisation du dictionnaire m'avait paru être une bonne idée mais je commence à en douter