至于fasta格式和phylip格式具體的格式要求,網(wǎng)絡(luò)上很容易查找得到相關(guān)的資料,這里就不過多贅述。其實(shí)網(wǎng)上也有很多關(guān)于序列文件格式的轉(zhuǎn)換器,但是根據(jù)我個(gè)人的使用經(jīng)驗(yàn),大多數(shù)的轉(zhuǎn)換結(jié)果都是經(jīng)典的Phylip格式(序列名稱只允許10個(gè)字符),而目前支持Phylip格式運(yùn)算的的軟件如PHYML,RAxML早已經(jīng)對序列名稱的長度不做要求。這就使得在使用一些長名稱序列時(shí),由于轉(zhuǎn)換器的原因,導(dǎo)致部分序列出現(xiàn)重名,進(jìn)而出現(xiàn)報(bào)錯(cuò)。前幾日偶然在網(wǎng)上發(fā)現(xiàn)一個(gè)好用的Python腳本,雖然簡單,但非常實(shí)用,這里粘貼出來,以備后續(xù)使用: 代碼具體內(nèi)容: import rewith open('input.fas', 'r') as fin: sequences = [(m.group(1), ''.join(m.group(2).split())) for m in re.finditer(r'(?m)^>([^ n]+)[^n]*([^>]*)', fin.read())] with open('output.phy', 'w') as fout: fout.write('%d %dn' % (len(sequences), len(sequences[0][1]))) for item in sequences: fout.write('%-20s %sn' % item) 在具體使用中,可以將input.fas更改為你自己fasta序列的名字,將output.phy更改為你希望輸出的文件名。 使用方法: $ python fasta2phylip.py 聲明:本腳本下載自網(wǎng)絡(luò),但由于時(shí)間過久,已經(jīng)忘記了具體的獲取地址,因?yàn)檫@里不予引用。若作者認(rèn)為違反了您的利益,您可以在博客下留言,我將立刻刪除。 http://blog.sciencenet.cn/blog-1334016-935912.html |
|