Я пытаюсь разобрать большой файл fasta, и у меня возникают ошибки нехватки памяти. Будем признательны за некоторые предложения по улучшению обработки данных. В настоящее время программа правильно распечатывает имена, однако частично через файл я получаю ошибку MemoryError
Вот генератор
def readFastaEntry( fp ):
name = ""
seq = ""
for line in fp:
if line.startswith( ">" ):
tmp = []
tmp.append( name )
tmp.append( seq )
name = line
seq = ""
yield tmp
else:
seq = seq.join( line )
, а вот заглушка вызывающего абонента, которая будет добавлена после того, как эта часть заработает
fp = open( sys.argv[1], 'r' )
for seq in readFastaEntry( fp ) :
print seq[0]
Для тех, кто не похож на формат fasta здесь является примером
>1 (PB2)
AATATATTCAATATGGAGAGAATAAAAGAACTAAGAGATCTAATGTCACAGTCTCGCACTCGCGAGATAC
TCACCAAAACCACTGTGGACCACATGGCCATAATCAAAAAGTACACATCAGGAAGGCAAGAGAAGAACCC
TGCACTCAGGATGAAGTGGATGATG
>2 (PB1)
AACCATTTGAATGGATGTCAATCCGACTTTACTTTTCTTGAAAGTTCCAGCGCAAAATGCCATAAGCACC
ACATTTCCCTATACTGGAGACCCTCC
каждая запись начинается с ">", указывающего имя и т. д., затем следующие N строк являются данными. Нет определенного конца данных, кроме следующей строки, имеющей ">" в начале.