Bonjour,
J'ai plusieurs fichiers que je dois comparé pour en faire une sorte de catalogue. J'ai un fichier transformé en dictionnaire et je souhaite ajouter une nouvelle valeur quand la clef est identique.
exemple :
Fichier1
4 AGCAGGG
5 TGCAGGT
26 TGCAGGG
30 TGCAGGC
44 TGCACGT
47 TGCAGGA
Fichier 2
14 AGCAGGG
15 AGCAGGT
126 TGCAGGG
130 TGCAGGC
144 TGCACGT
147 TGCAGGA
148 AGCAGGA
Je souhaite avoir un dictionnaire avec comme clef la seq et comme valeurs l’identifiant du fichier1 et/ou identifiant di fichier 2
AGCAGGG 4_F1 14_F2
TGCAGGT 5_F1
TGCAGGG 26_F1 126_F2
TGCAGGC 30_F1 130_F2
TGCACGT 44_F1 144_F2
TGCAGGA 47_F1 147_F2
AGCAGGT 15_F2
AGCAGGA 148_F2
Certaines clefs auront 2 valeurs tandis que d’autres n'auront qu'une seule valeur (celle du fichier 1 ou du fichier2).
Voici ce que j'ai essayé comme script :J'ai ensuite testé 2 méthodes : une sur dictionnaire qui ne fonctionne pas et une sur des listes que je transformerai en dictionnaire et qui fonctionne presque
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 #!/usr/bin/env python #-*- coding: latin-1 -*- F1 = open("fichier1" ,"r") F2 = open("fichier2" ,"r") catalog=open("catalog","w") liste_F1=[] liste_F2=[] dico_F1 = {} dico_F2 = {} for f1 in F1.readlines(): liste_F1 = f1.strip().split('\t') num = liste_F1[0]+"_F1" seq = liste_F1[1] dico_F1 [liste_F1[1]]= liste_F1[0]+"_F1" lib_seq_F1 = sorted(dico_F1.keys()) for f2 in lines: liste_F2 = f2.strip().split('\t') dico_F2 [liste_F2[1]]= liste_F2[0]+"_F2"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #Test sur dictionnaire : if dico_F2 [liste_F2[1]]== dico_F1 [liste_F1[1]]: #dico_F2 [liste_F2[1]].append( dico_F1 [liste_F1[0]]) ne fonctionne pas catalog.write(dico_F2 [liste_F2[1]]+ "\t" + dico_F2 [liste_F2[0]]+ "\t" + seq + "\n" ) else : catalog.write(dico_sexy [liste_F2[1]]+ "\t" + dico_F2 [liste_F2[0]]+ "\t" + "\n" ) #il ne doit pas reconnaitre la condition car soit le fichier catalog est vide (quand je fais la condition if toute seule), soit jai une erreur : error key14 (if +else)Désolé pour le message un peu long et merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #Test sur liste pour la transformer en dictionnaire : if liste_F2[1]== liste_F1[1]: catalog.write(liste_F2[1] + "\t" + liste_F2[0]+"_F2" + "\t" + num + "\n" ) #cette condition fonctionne elif liste_F2[1]!= liste_F1[1]: catalog.write(liste_F2[1] + "\t" + liste_F2[0]+"_F2" + "\t" +"\n") catalog.write(liste_F1[1] + "\t" + "\t"+ liste_F1[0]+"_F1" + "\n") #cette condition ne fonctionne pas, la suivante non plus else : catalog.write(liste_F2[1] + "\t" + liste_F2[0]+"_F2" + "\t" +"\n")
Partager