0
我不太瞭解編程,但我正在學習Linux和Python。 我有一個序列文件,其中有13500個序列。和序列的名字是一種形式更改文件中fasta序列名稱的格式,包括序列中的核苷酸數字
>MP_scaffold_001_1
我要計算每個序列中核苷酸的數量,並希望其名稱更改爲
>MP_scaffold_001_1 <TAB> <Number_of_nucleotides>
我不太瞭解編程,但我正在學習Linux和Python。 我有一個序列文件,其中有13500個序列。和序列的名字是一種形式更改文件中fasta序列名稱的格式,包括序列中的核苷酸數字
>MP_scaffold_001_1
我要計算每個序列中核苷酸的數量,並希望其名稱更改爲
>MP_scaffold_001_1 <TAB> <Number_of_nucleotides>
如果你在生物序列工作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()
方法重複遍歷input
中的每個序列(seq
)。序列的長度由Python內置的len()
函數確定,格式化字符串使用製表符\t
和len()
返回的數字構建。然後,每個seq
的description
字符串通過在其末尾添加length
變量的內容進行修改。最後,新修改的記錄以FASTA格式寫入輸出文件。
我強烈建議您閱讀Biopython的Tutorial and Cookbook以熟悉模塊提供的所有內容。
該文件如何指定每個序列中有多少個核苷酸? – inspectorG4dget 2014-11-03 05:16:43
@ inspectorG4dget通常一個FASTA文件包含一個或多個以'>開頭的行,提供有關序列的元數據,然後序列本身在下一行,而不是以'>開始。這個序列只是一串字母,在這種情況下,DNA-A,T,C和G. – MattDMo 2014-11-03 05:19:41
如果你提供一個輸入數據的例子(不是一個完整的文件,試圖用幾個塊去格式化) – user3159253 2014-11-03 05:20:22