Bonjour,
je suis perdu dans mom algorithme.
Je suis parti d'un fichier
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 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 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
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
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.
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
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])
Partager