python - 如何使用特定步长的窗口提取短序列?

标签 python extract biopython fasta

下面的代码在窗口大小为 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/

相关文章:

python - 如何将 Wikipedia wikitable 转换为 Python Pandas DataFrame?

python - 使用正则表达式查看最近 12 小时的文件

python - (Python 2.7) 获取 UI 标题栏大小

python - ppmap/parallel python 中是否存在隐藏的可能死锁?

python - 将 pd.DataFrame Styler 对象的背景渐变色图居中

r - 无法通过 $teststat 从 R 中的列表中提取测试统计信息

R:使用 ID/名称提取前 n 个值

r - 如何从 R 中的统一列表中提取值?

python - 通过Python进行密码子比对?

biopython - 如何连接由 Bio.SeqIO.index 创建的两个或多个字典?