синтаксический анализ файла fasta с помощью генератора (python)

Я пытаюсь разобрать большой файл 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 строк являются данными. Нет определенного конца данных, кроме следующей строки, имеющей ">" в начале.

10
задан brandizzi 5 October 2011 в 01:21
поделиться