[PIPython] python vs gawk
Dall'Olio Giovanni
dalloliogm
Mar 5 Lug 2005 11:04:29 CEST
Salve a tutti,
ho un file enorme in formato (gtf2 http://genes.cs.wustl.edu/GTF2.html).
Devo ottenere un dizionario in cui le chiavi siano i singoli geni e gli argomenti
una lista contenente le posizioni dei singoli esoni.
Sembra semplice ma... non faccio infinitamente prima ad usare GAWK per questo?
come posso fare per lanciare un certo numero di gawk senza dover utilizzare
sempre os.popen (aprirlo, leggerlo e chiuderlo) ? E' piu' lento il programma
se faccio in questo modo?
A parte questo, mi date qualche consiglio sul gestire un dict cos¡ grande?
grazie!!
p.s. ok, mi avete convinto, uso Vim!
Programma in Python + gawk:
1 import os
2 import sys
3 import re
4
5
6
7 query_list_g="gawk '{print $10}' 1.gtf | sort -u"
8 q=os.popen(query_list_g)
9 list_g=q.readlines()
10 q.close()
11 list_seq={}
12
13 for i in list_g:
14 query_see="gawk '$10 ~/"+i.strip()+"/ && $3 ~/exon/ {print
$4, $5, $14} ' 1.gtf|sort -u"
15 # print query_see
16 q=os.popen(query_see)
17 print q.readlines()
18 q.close()
19 print list_seq
Programma in Python:
1 import re
2 import os
3
4 f=open('1.gtf')
5 cont=f.readlines()
6 f.close()
11
12 list_genes={}
13 old_gene=''
14 for i in range(len(cont)):
15 l=cont[i].split()
16 if old_gene!=l[9] and re.search('exon',l[2]):
17 old_gene=l[9]
18 # print l[9]
19 c=list_genes.get(l[9],[])
20 c.append(l[3])
21 list_genes[l[9]]=c
22
23 for i in list_genes:
24 print i, list_genes[i]
25 print list_genes
33 ## Example of gtf format:
34 #0 1 2 3 4 5 6
7 8 9 0
35 #0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
36
37 # 0 1 2 3 4 5 6 7
8 9 10 11 12
13
38 #1 EnsEMBL exon 218155 218517 . - .
gene_id "ENSG00000196573.1"; transcript_id "ENST00000355027.1"; exon_id "ENSE00001408881.1";
39 #1 EnsEMBL CDS 218158 218517 . - 0
gene_id "ENSG00000196573.1"; transcript_id "ENST00000355027.1"; exon_id "ENSE00001408881.1";
40 #1 EnsEMBL start_codon 218515 218517 . -
. gene_id "ENSG00000196573.1"; transcript_id "ENST00000355027.1"; exon_id
"ENSE00001408881.1";
41 #1 EnsEMBL stop_codon 218155 218157 . -
. gene_id "ENSG00000196573.1"; transcript_id "ENST00000355027.1"; exon_id
"ENSE00001408881.1";
42 #1 EnsEMBL exon 407522 408460 . + .
gene_id "ENSG00000177799.1"; transcript_id "ENST00000327169.1"; exon_id "ENSE00001250084.1";
---------------------------------------------
Dall'Olio Giovanni Marco,
studente di Biotecnologie all'Università di Bologna.
puoi trovarmi anche all'indirizzo dalloliogm a email.it
p.s. visita il mio sito!! www.dalloliogm.tk
More information about the Python
mailing list