# 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:
# 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:
#! /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])
voila le code que j'ai pu reduire
#! /usr/bin/python
#coding=utf-8
coco=[]
aster=[]
d1={}
def rev(l):
if len(l) == 0: return []
return [l[-1]] + rev(l[:-1])
def brin(line):
T=line.split('\t')[3:4]
if '+' in T:
r = brin_plus(line)
else:
r = brin_moins(line)
c = []
for i in range(len(r)):
if ( i%2 != 0): c.append(r[i])
return c
#def nom(fic):
# with open(fic) as fichier:
# for line in fichier:
# name = line.split('\t')[1:2]
# return name
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)
with open('coco_cds.txt') as fichier:
for line in fichier:
ch= line.split('\t')[1:2]
#print ch
if ch in coco or ch in aster:
r = brin(line)
for i in range(len(r)):
b2.append(r[i])
mais jai un souci avec brin plus et ;oins car je narrive pas a les definir
perdu dans les donnees
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.