python - 根据bp坐标提取fasta序列的一部分

标签 python bioinformatics biopython fasta

我有一个巨大的 fasta 文件,但如果我知道序列的起始和结束碱基对坐标,我只需要提取其中的一部分。另外,它应该是 fasta 格式,每行长度为 60 bp。这是我的尝试,如果看起来不错,请告诉我,欢迎提出任何改进建议。

from Bio import SeqIO

inFile = open('full_chr.fa','r')
fw=open("part.fa",'w')
line_width = 60
for record in SeqIO.parse(inFile,'fasta'):
    fw.write(">" + record.id + "\n")
    fww = (str(record.seq[600130000:602000000]) + '\n')
    for i in xrange(0,len(fww),line_width):
        fw.write(str(fww[i:i+line_width]) + '\n')
fw.close()

最佳答案

很简单:

from Bio import SeqIO


record = SeqIO.read("Chromosome.fas", "fasta")

with open("output.fas", "w") as out:
    SeqIO.write(record[100:500], out, "fasta")

SeqIO.write 已使用 60 个字符长度的换行。如果您想操作换行,请使用 FastaWriter 对象。这是 80 bp 线的示例:

from Bio import SeqIO
from Bio.SeqIO.FastaIO import FastaWriter


record = SeqIO.read("Chromosome.fas", "fasta")

with open("output.fas", "w") as out:
    writer = FastaWriter(out, wrap=80)
    writer.write_header()
    writer.write_record(record[100:500])
    writer.write_footer()

关于python - 根据bp坐标提取fasta序列的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39249121/

相关文章:

r - 从数据库检索数据的函数出错

python - 用 python/biopython 计算 DNA 序列

python - 如何使反斜杠 (\) 在 IDLE 中工作?

python - 在python中查找三列的最大值和最小值

python - Biopython 可以执行 Seq.find() 解释歧义代码吗

r - 使用 data.table 函数 foverlaps 查找两个表中重叠范围的交集

python - 仅对齐并保存结构段

python - 命名空间被覆盖的模块中的 Monkeypatch 函数

python - 如何将 AND 应用于列表的所有元素?

python - pandas:创建从 1 到每组长度的列