Using Biopython to concatenate (aligned) sequences with the same name (yueyvettehao.netlify.app)
建物種樹有很多方法,一是推斷祖先序列,二是把所有基因串聯(lián)起來建樹。推斷祖先序列可以用PAML,這里想用第二種建物種樹的方法做真屯,所以第一步是把所有基因串聯(lián)起來。
其實有很多軟件可以做到串聯(lián)序列(包括R),但我想用python莫矗,因為必應(yīng)中文搜索不到這篇文章所以就搬運過來了,簡單說就是把多個序列文件先cat到一個文件中砂缩,然后用biopython里的seq索引找到相同序列名字的序列作谚,再串聯(lián)起來。其實聽起來挺簡單的庵芭,實現(xiàn)也不難妹懒,但是我自己沒想到。双吆。眨唬。
原文應(yīng)該用的是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)