【搬運】python按名字串聯多個序列

Using Biopython to concatenate (aligned) sequences with the same name (yueyvettehao.netlify.app)

建物種樹有很多方法,一是推斷祖先序列,二是把所有基因串聯起來建樹。推斷祖先序列可以用PAML,這里想用第二種建物種樹的方法做,所以第一步是把所有基因串聯起來。

其實有很多軟件可以做到串聯序列(包括R),但我想用python,因為必應中文搜索不到這篇文章所以就搬運過來了,簡單說就是把多個序列文件先cat到一個文件中,然后用biopython里的seq索引找到相同序列名字的序列,再串聯起來。其實聽起來挺簡單的,實現也不難,但是我自己沒想到。。。

原文應該用的是python2,如果用python3會報錯,所以我改了一下:

from Bio import SeqIO
from collections import defaultdict

sequence_map = defaultdict(str)
for sequence in SeqIO.parse('all.fasta', "fasta"):
    sequence_map[sequence.name] += str(sequence.seq)
with open('all_concat.fasta','w') as f:
    for key in sorted(sequence_map.keys()):
        print ('>' + key, file=f)
        print (sequence_map[key], file=f)
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容