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