Wednesday, March 21, 2012

대용량 파일을 위한 shelve


출처: 파이썬마을


파이썬에 이런 모듈이..
참.. 대단한듯...
-파이썬에 감탄하면 지는거다..
난 자바를 공부하고 있어야돼... ㅠ.ㅠ

쉽게말해 대용량 사전
-사전이라는 자료형 은근히 편했는데..


실제 사용 예로 EMBL CDS fasta파일을 읽어서 E. coli에서 나온 것만 골라서
뽑아주는 소스는 이렇게 만들 수 있습니다.


from Bio import SeqIO
import shelve

seqs = SeqIO.parse(open('/data/embl/cds_nr.fasta'), format='fasta')
db = shelve.open('ecoli.db')


for rec in seqs:
    if ('Escherichia coli' in rec.description and
        'hypothetical' not in rec.description):
            name = rec.description.split()[0].split(':')[1]
            seq = rec.seq.tostring()
            db[name] = seq


나중에 EMBL ID로 검색할 때는 다음과 같이 open만 하면 검색할 수 있습니다.


import shelve

db = shelve.open('ecoli.db')
genes = ['100746833', '1008171518']
for gene in genes:
    print db[gene]


32G가 30여분 소요 됐다니.. 난 4.1G(nr, 한국시간 2009.3.5에 다운로드) 밖에 안돼네.. ㅋㅋ

5분이면 끝나야 하는거 아니야..;;
왜 안끝나..;;

No comments: