更改文件中fasta序列名称的格式,包括序列中的核苷酸编号

时间:2014-11-03 05:14:40

标签: python

我不太了解编程,但我正在学习Linux和Python。 我有一个序列文件,里面有13500个序列。并且序列的名称是一种形式

>MP_scaffold_001_1

我想计算每个序列中核苷酸的数量,并希望将其名称更改为

>MP_scaffold_001_1 <TAB> <Number_of_nucleotides>

1 个答案:

答案 0 :(得分:0)

如果您正在使用Python中的生物序列,那么Biopython就不会出错。 SeqIO类包含用于处理序列的工具,包括FASTA格式的工具。以下代码可以帮助您入门:

from Bio import SeqIO
with open("input.fasta", "r") as input, open("output.fasta", "w") as output:
    for seq in SeqIO.parse(input, "fasta"):
        length = "\t%d" % len(seq)
        seq.description += length
        SeqIO.write(seq, output, "fasta")

此代码首先打开两个文件处理程序inputoutput,它们将在处理完成后自动关闭。接下来,使用SeqIO.parse()方法迭代seq中的每个序列(input)。序列的长度是使用Python的内置len()函数确定的,格式化字符串是使用制表符\tlen()返回的数字构建的。然后,通过将description变量的内容添加到其末尾来修改每个seq的{​​{1}}字符串。最后,新修改的记录以FASTA格式写入输出文件。

我强烈建议您阅读Biopython的Tutorial and Cookbook,以熟悉该模块提供的所有内容。