下面的代码在窗口大小为 4 的每个序列中提取短序列。如何将窗口移动步长 2 并提取 4 个碱基对?
示例代码
from Bio import SeqIO
with open("testA_out.fasta","w") as f:
for seq_record in SeqIO.parse("testA.fasta", "fasta"):
i = 0
while ((i+4) < len(seq_record.seq)) :
f.write(">" + str(seq_record.id) + "\n")
f.write(str(seq_record.seq[i:i+4]) + "\n")
i += 2
testA.fasta 输入示例
>human1
ACCCGATTT
testA_out 的示例输出
>human1
ACCC
>human1
CCGA
>human1
GATT
此输出的问题是遗漏了一个 T,因此在这种情况下我希望也包含它。我怎样才能得出这个输出?使用反向提取以及包括从头到尾提取时可能遗漏的碱基对。谁能帮帮我?
预期输出
>human1
ACCC
>human1
CCGA
>human1
GATT
>human1
ATTT
>human1
CGAT
>human1
CCCG
最佳答案
对于任何窗口大小和任何步长:
fasta='ACCCGATTT'
windowSize=4
step=1
i=0
while (i+windowSize)<=len(fasta):
currentWindow=fasta[i:i+windowSize]
print(currentWindow)
i+=step
windowSize=4,step=2 的输出:
ACCC
CCGA
GATT
windowSize=4,step=1 的输出:
ACCC
CCCG
CCGA
CGAT
GATT
ATTT
最后一个与“预期输出”完全相同,排序不同。
关于python - 如何使用特定步长的窗口提取短序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30797796/