Bonjour,
je suis perdu dans mom algorithme.
Je suis parti d'un fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
C169v2-00002	Aster-06787	187	262	561	636       
C169v2-04487	Aster-06725	92	235	216	357
C169v2-04480	Aster-06724	371	431	4	64
C169v2-04481	Aster-06792	2	447	41	488	
C169v2-03069	Aster-04749	21	283	2	265
C169v2-03068	Aster-01309	8	222	41	248
C169v2-03061	Aster-06908	100	396	399	708
et d' un fichier qu'on va nommer coco_cds:
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
 
# Colonne 1: scaffold
#         2: gene id
#         3: start
#         4: dir
#         5: origine gene model
#         6: proteinId
#         7: ex-nom
#         8: coordonnees genomiques
#         9: structure intron/exon
#        10: segments du CDS couvert par EST
C169-scaffold_1	C169v2-00001	3777	-	ORIGINAL JGI	55057	Genemark1.1_g	3777..3857,4046..4192,4443..4561,4940..5234,5406..5540,5734..5847,6009..6098,6421..6492
C169-scaffold_1	C169v2-00002	12682	-	ORIGINAL JGI	55058	Genemark1.2_g	12682..12691,13195..13445,13694..13711,18280..18410
C169-scaffold_1	C169v2-00003	18095	+	ORIGINAL JGI	31905	fgenesh1_kg.1_#_1_#_4092_1_CBOZ_CBPA	18095..18097,18280..18410,18690..18972
C169-scaffold_1	C169v2-00004	20452	+	ORIGINAL JGI	6968	gw1.1.615.1	20452..20496,20636..20726,20881..21046,21194..21382,21567..21735
C169-scaffold_1	C169v2-00005	21893	-	ORIGINAL JGI	34662	fgenesh1_pm.1_#_3	21893..22051,22201..22293,22590..22747,22864..23102,23192..23364
C169-scaffold_8	C169v2-04488	528365	+	ORIGINAL JGI	63423	Genemark1.4206_g	528365..528435,528774..528938,529294..529389,529779..530001,530348..530487,530870..530990
C169-scaffold_8	C169v2-04487	523752	+	ORIGINAL JGI	42018	fgenesh1_pg.8_#_66	523752..523949,524383..524517,524819..524948,525371..525456,525763..525830,526605..526740,527270..527305
C169-scaffold_5	C169v2-03069	1412897	+	ORIGINAL JGI	41001	fgenesh1_pg.5_#_204	1412897..1412909,1413103..1413155,1413409..1413531,1413634..1413748,1414228..1414427,1414721..1414891,1415181..1415381,1415548..1415679
et d'un autre ayant la meme forme nommer atser_cds:

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
 
# Colonne 1: scaffold
#         2: gene id
#         3: start
#         4: dir
#         5: origine gene model
#         6: proteinId
#         7: ex-nom
#         8: coordonnees genomiques
#         9: structure intron/exon
#        10: segments du CDS couvert par EST
scaffold_00001	Aster-00001	17594	-	ORIGINAL JGI	14863	gw1.00001.44.1	17594..17852,17997..18023,18357..18572,18689..18759,18842..18967
scaffold_00001	Aster-00002	19928	-	ORIGINAL JGI	21312	e_gw1.00001.25.1	19928..20186,20453..20616,20744..20792,20913..21081,21507..21714
scaffold_00001	Aster-00003	31765	+	ORIGINAL JGI	14113	gw1.00001.37.1	31765..31855,32261..32514,32748..32831,32917..32998,33154..33362,33646..33753
scaffold_00001	Aster-00004	44240	-	ORIGINAL JGI	36055	fgenesh1_pg.00001_#_3	44240..44511,44793..44943,45050..45133,45256..45318,45686..45721,45782..45904,46025..46342,46459..46642,46822..46871
scaffold_00001	Aster-00005	48441	+	ORIGINAL JGI	21325	e_gw1.00001.70.1	48441..48583,48791..48920
scaffold_00101	Aster-04749	530046	+	ORIGINAL JGI	29654	e_gw1.00101.62.1	530046..530292,530743..530942,531299..531488,531763..532046
scaffold_00145	Aster-06787	986197	-	ORIGINAL JGI	41618	fgenesh1_pg.00145_#_90	986197..986425,986528..986722,986990..987130,988711..988816,990091..990181,990354..990470,990778..990805,991167..991259,991536..991663,991869..991991,992198..992278,992360..992594,993369..993481,993632..993868
Mon but du programme est de partir du premier fichier recuperer le couple de chaque ligne C169v2-00002 Aster-06787 ainsi de suite, et ensuite d'aller dans les fichiers respectifs pour C169v2-00002 dans coco_cds et pour Aster-06787 dans atser_cds.
Ensuite regarder si il existe bien dans ces fcihiers et puis regarder si cest brin + ou - car si cest - je fais un reverse mais je vous expliquerai par la suite.
je recupere les coordonnes par un split je fais un calcul de la distance puis je recupere a chaue fois lindice impair pour recuperer sa valeur.


Le but final etant de repartir decrir dans un fichier C169v2-00002 "ici le nombre de valeur recuperer pour ce coco " Aster-06787 "ici les nombres de valeur recuperer pour ce aster"

voici mon code il est tres gros car comme je suis nouveau en python je ne sais pas comment faire plus simple car je voualais mettre dans des dictionnaiere comme ca cetait plus simple pour chaque aster ou coco je pouvais remplir le fichier rapidement 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
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
 
#! /usr/bin/python
 
 
#coding=utf-8
 
coco=[]
aster=[]
b2=[]
d1={}
 
with open('essai1.txt') as fic:
	for ligne in fic:
		chaine1 = ligne.split('\t')[:1]
		chaine2= ligne.split('\t')[1:2]
		coco.append(chaine1)
		aster.append(chaine2)
 
 
def rev(l): 
    if len(l) == 0: return [] 
    return [l[-1]] + rev(l[:-1]) 
 
with open('coco_cds.txt') as fichier:
	for line in fichier:
		ch= line.split('\t')[1:2]
		#print ch
		if ch in coco:
			brin=line.split('\t')[3:4]
			if '+'in brin:	
				cv=line.split('\t')[1:2]
				#print cv
				coord1=line.split('\t')[7:8]
				#print coord1
				#print sum([i.split('..')+[','] for i in coord[0].split(',')],[])
				d=[(int(j)-int(i))/3 for i, j in [i.split("..") for i in coord1[0].split(",")]]#calcul de la distance
 
				#print d
				b = [1]
				for i in d:
    					 b.append(b[-1]+i)
   					 b.append(b[-1]+1)
				b.remove(b[-1])
 
			        #print b
				b2=[]
				for i in range(len(b)):
 
					 if (i%2!=0):
 
 
						b2.append(b[i])
						#print b2
 
			else:
				cv2=line.split('\t')[1:2]
				coord2=line.split('\t')[7:8]
				#print coord2
				a= [(int(j)-int(i))/3 for i, j in [i.split("..") for i in coord2[0].split(",")]]#calcul de la distance
			 	rev(a)
				c=[1]
				for i in a:
    					 c.append(c[-1]+i)
   					 c.append(c[-1]+1)
				c.remove(c[-1])
 
				for i in range(len(c)):
 
					 if (i%2!=0):#impair
						b2.append(c[i])
 
 
with open('coco_cds.txt') as fichier:	        
				for line in fichier:
					ch= line.split('\t')[1:2]
						if ch in aster:
							brin=line.split('\t')[3:4]
							if '+'in brin:	
				cv=line.split('\t')[1:2]
				#print cv
				coord1=line.split('\t')[7:8]
				#print coord1
				#print sum([i.split('..')+[','] for i in coord[0].split(',')],[])
				d=[(int(j)-int(i))/3 for i, j in [i.split("..") for i in coord1[0].split(",")]]#calcul de la distance
 
				#print d
				b = [1]
				for i in d:
    					 b.append(b[-1]+i)
   					 b.append(b[-1]+1)
				b.remove(b[-1])
 
			        #print b
				b2=[]
				for i in range(len(b)):
 
					 if (i%2!=0):#impair
 
 
						b2.append(b[i])
						#print b2
 
			else:
				cv2=line.split('\t')[1:2]
				coord2=line.split('\t')[7:8]
				#print coord2
				a= [(int(j)-int(i))/3 for i, j in [i.split("..") for i in coord2[0].split(",")]]#calcul de la distance
			 	rev(a)
				c=[1]
				for i in a:
    					 c.append(c[-1]+i)
   					 c.append(c[-1]+1)
				c.remove(c[-1])
 
				for i in range(len(c)):
 
					 if (i%2!=0):#impair
						b2.append(c[i])