У меня есть файл fasta с несколькими последовательностями, и я хотел бы выполнять скользящие окна с размером окна 5 и извлекать последовательности всякий раз, когда они проходят через последовательность.
Например ( test1.fasta ):
>human1
ATCGCGTC
>human2
ATTTTCGCGA
Ожидаемый результат ( test1_out.txt ):
>human1
ATCGC
>human1
TCGCG
>human1
CGCGT
>человек1
GCGTC
>человек2
ATTTT
>человек2
TTTCC
>человек2
TTTCG
>человек2
TTTCG< br>>human2
TCGCG
>human2
CGCGA
Мой следующий код смог извлечь только первые пять пар оснований. Как я могу сдвинуть окно, чтобы извлечь 5 б.п. для каждого размера шага 1 с размером окна 5?
from Bio import SeqIO
with open("test1_out.txt","w") as f:
for seq_record in SeqIO.parse("test1.fasta", "fasta"):
f.write(str(seq_record.id) + "\n")
f.write(str(seq_record.seq[:5]) + "\n") #first 5 base positions
Код выше я получил из другого примера в stackoverflow*