[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