Bonjour à tous,

J'ai fait un petit script qui déconne un peu et je pense savoir d'ou vient l'erreur mais je n'arrive pas à la corriger....

Voici le script :

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
def cherchefreq(file1,file2,file3):
	f1=open(file1,'r')
	f2=open(file2,'r')
	f3=open(file3,'r')

		
	lines1=f1.readlines()
	linee=f2.readline()
	lines2=f2.readlines()
	lineee=f3.readline()
	lines3=f3.readlines()
	genes={}
	lib={}
	tag={}	 
	
	for line1 in lines1:
		l1=line1.split()
		tags=l1[1].split(',')
		genes[l1[0]]=tags
	print genes
	for line2 in lines2:
		l2=line2.split()
		tag[l2[0]]=[l2[1],l2[2]]
	print tag
	for line3 in lines3:
		l3=line3.split()
		lib[l3[0]]=[l3[5],l3[6],l3[2]]

	print lib
			
	genesval={}
	dict1={}
	for j in lib.keys():
		dict1.__setitem__(j,0)
	
		
	for i in genes:
		genesval[i]=dict1

	print genesval
	print genesval.keys()
	print genesval['GENE1']
	for i in genes.keys():
		for l in range(len(genes[i])):
			thetag=genes[i][l]
			if thetag in tag.keys():
				print thetag
				library=tag[thetag][0]
				print library
				freq=tag[thetag][1]
				if library in lib.keys():
					genesval[i][library]+=int(freq)

				else:
					continue
		
			else:
				continue

	print genesval
	f1.close()
	f2.close()
	f3.close()
	return
##########################
J'ai mis en gras là ou ca coince !
en fait le dict que j'obtiens à la fin ressemble à ca :
{'GENE1': {'1': 3, '3': 0, '2': 0, '5': 2, '4': 0}, 'GENE2': {'1': 0, '3': 0, '2': 0, '5': 0, '4': 6}, 'GENE3': {'1': 0, '3': 0, '2': 0, '5': 0, '4': 0}, 'GENE4': {'1': 0, '3': 0, '2': 0, '5': 0, '4': 0}, 'GENE5': {'1': 0, '3': 0, '2': 0, '5': 0, '4': 0}}

et quand par exemple la boucle doit ajouter 3 à la bibliothèque 2 du gène 3, elle le rajoute également à la bibliothèque 2 de tous les gènes! je pense que ca vient du fait que tous les valeurs des clès du dictionnaire genesval sont égales à la même valeur à savoir dict1(cf en gras)....

Merci de votre aide