큰 단백질 시퀀스 (fasta) 파일 (> 8GB)을 다루고 있으며 내 생각은 키와 값이 될 사전을 만드는 것입니다. 단백질 ID와 서열이어야한다. 큰 파일 (> 8GB)을 읽고 사전에 데이터를 덤프하고 다시로드하는 가장 빠른 방법
지금에 관해서는 나는 (내가pickle
데이터를 덤프 빠르며
cpickle
데이터를로드 할 빠른 읽기)하고
cpickle
로 열려고 다음
pickle
를 사용하여 사전에 데이터를 덤프하고 OK (확인)입니다. 그러나 여기에서 가장 중요한 문제는 시간이다. 사전을 작성하고 덤프하는 것은 너무 많은 시간과 메모리를 소비한다 (PC는 8GB 메모리가있다).
파이썬에서 대용량 파일을 처리 할 수있는 더 빠른 옵션이 있습니까?
from Bio import SeqIO
import pickle,sys
fastaSeq = {}
with open('uniref90.fasta') as fasta_file:
for seq_record in SeqIO.parse(fasta_file, 'fasta'):
header =seq_record.id
uniID = header.split('_')[1]
seqs = str(seq_record.seq)
fastaSeq[uniID] = seqs
f = open('uniref90.obj', 'wb')
pickle.dump(fastaSeq, f, pickle.HIGHEST_PROTOCOL)
f.close()
로드 사전에 별도의 파이썬 프로그램에서 일부 작업을 수행 :
import cPickle as pickle
seq_dict = pickle.load(open("uniref90.obj", "rb"))
for skey in seq_dict.keys():
#doing something
우선 : 파일이 메모리에 맞지 않습니다.그래서 스와핑은 정말 느립니다. 또한 8GB의 덤프 /로드는 처음에는 그다지 빠르지 않습니다. 파일별로 작업해야합니다. 그렇게하기 위해서는 데이터를 분할해야합니다. 그것은 사소한 일입니다. 나는 ** 적절한 데이터베이스 **를 사용하여 조언. 또한 : 당신에게 "느린"것이 무엇을 의미합니까? 무엇을 성취하려고합니까? – freakish