我不太了解编程,但我正在学习Linux和Python。 我有一个序列文件,里面有13500个序列。并且序列的名称是一种形式
>MP_scaffold_001_1
我想计算每个序列中核苷酸的数量,并希望将其名称更改为
>MP_scaffold_001_1 <TAB> <Number_of_nucleotides>
答案 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")
此代码首先打开两个文件处理程序input
和output
,它们将在处理完成后自动关闭。接下来,使用SeqIO.parse()
方法迭代seq
中的每个序列(input
)。序列的长度是使用Python的内置len()
函数确定的,格式化字符串是使用制表符\t
和len()
返回的数字构建的。然后,通过将description
变量的内容添加到其末尾来修改每个seq
的{{1}}字符串。最后,新修改的记录以FASTA格式写入输出文件。
我强烈建议您阅读Biopython的Tutorial and Cookbook,以熟悉该模块提供的所有内容。