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 :
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 Ensembl Gene ID ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000003 ENSG00000000005 ENSG00000000005 ENSG00000000005 ENSG00000000005 ENSG00000000005 ENSG00000000005 ENSG00000000419
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 :
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.
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
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.
Le problème vient donc de mon
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]])qui ne me retourne rien, et je ne vois pas comment faire pour récupérer les différentes clés du dictionnaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part dico[cols[0]]
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![]()
Partager