#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 Так что нет никакого способа, я не могу работать с базой данных, потому что мои данные слишком велики, поэтому для выполнения этой работы потребуется вечность, спасибо за вашу помощь