Python: как распечатать последовательности длиной n из скользящего окна в файле FASTA?

У меня есть файл 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*


person Allyson    schedule 19.05.2015    source источник
comment
.FASTA вариант №   -  person tommy.carstensen    schedule 19.05.2015
comment
Файл fasta содержит одну или несколько строк последовательности со знаком ›, за которыми следует идентификационный код последовательности.   -  person Allyson    schedule 20.05.2015


Ответы (1)


Итак, я предполагаю, что «seq_record.seq» — это целая последовательность ДНК, как у человека1 «ATCGCGTC». Вы можете написать так:

from Bio import SeqIO

with open("test1_out.txt","w") as f:
        for seq_record in SeqIO.parse("test1.fasta", "fasta"):
            for i in range(len(seq_record.seq) - 4) :
               f.write(str(seq_record.id) + "\n")
               f.write(str(seq_record.seq[i:i+5]) + "\n")  #first 5 base positions
person chishui    schedule 19.05.2015