2014-11-03 39 views
0

我不太瞭解編程,但我正在學習Linux和Python。 我有一個序列文件,其中有13500個序列。和序列的名字是一種形式更改文件中fasta序列名稱的格式,包括序列中的核苷酸數字

>MP_scaffold_001_1 

我要計算每個序列中核苷酸的數量,並希望其名稱更改爲

>MP_scaffold_001_1 <TAB> <Number_of_nucleotides> 
+0

該文件如何指定每個序列中有多少個核苷酸? – inspectorG4dget 2014-11-03 05:16:43

+0

@ inspectorG4dget通常一個FASTA文件包含一個或多個以'>開頭的行,提供有關序列的元數據,然後序列本身在下一行,而不是以'>開始。這個序列只是一串字母,在這種情況下,DNA-A,T,C和G. – MattDMo 2014-11-03 05:19:41

+0

如果你提供一個輸入數據的例子(不是一個完整的文件,試圖用幾個塊去格式化) – user3159253 2014-11-03 05:20:22

回答

0

如果你在生物序列工作Python,你不會出錯BiopythonSeqIO類包含用於處理序列的工具,包括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()方法重複遍歷input中的每個序列(seq)。序列的長度由Python內置的len()函數確定,格式化字符串使用製表符\tlen()返回的數字構建。然後,每個seqdescription字符串通過在其末尾添加length變量的內容進行修改。最後,新修改的記錄以FASTA格式寫入輸出文件。

我強烈建議您閱讀Biopython的Tutorial and Cookbook以熟悉模塊提供的所有內容。

相關問題