как удалить повторяющиеся последовательности в файле FASTA?

#python #pandas #biopython #fasta

Вопрос:

У меня есть файл FASTA, который сортируется по датам, и я хочу удалить повторяющиеся последовательности, в которых каждая более старая последовательность остается, а другие последовательности, которые они датируются после первой, удаляются, я нашел этот код для удаления повторяющихся последовательностей, и я думаю, что, поскольку мои последовательности сортируются, это делает эту работу за меня, но поскольку мой файл слишком большой, мне нужен более эффективный способ

 from Bio import SeqIO
import time

start = time.time() 

seen = set()
records = []

for record in SeqIO.parse("b4r2.fasta", "fasta"):  
    if record.seq not in seen:
        seen.add(record.seq)
        records.append(record)


#writing to a FASTA file
SeqIO.write(records, "OUTPUT-FILE.fasta", "fasta")
end = time.time()

print(f"Run time is {(end- start)/60}")
 

что вы, ребята, предлагаете для этой задачи?

Комментарии:

1. Более эффективно с точки зрения памяти или процессора? Если последнее, вы можете попробовать распараллелить, но вам понадобится синхронизированная структура данных вместо простого набора

2. @Ян Виламовский Более эффективен с точки зрения памяти, я имею в виду

3. Это сложнее, так как повторяющаяся пара последовательностей может появиться во всем файле. Вы можете сохранить результаты в базе данных, если у вас недостаточно оперативной памяти, но это значительно замедлит процесс.

4. @Jan Wilamowski Так что нет никакого способа, я не могу работать с базой данных, потому что мои данные слишком велики, поэтому для выполнения этой работы потребуется вечность, спасибо за вашу помощь