前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fasta转phylip格式

fasta转phylip格式

原创
作者头像
大发明家
发布2021-12-06 14:00:41
2K0
发布2021-12-06 14:00:41
举报
文章被收录于专栏:技术博客文章

先安装依赖的包(要先装BioConductor):

代码语言:txt
复制
install.packages("BiocManager")
代码语言:txt
复制
BiocManager::install('devtools')
代码语言:txt
复制
BiocManager::install('phylotools')

假设fasta文件名为: aligned_fasta.fasta 读取fasta文件,转化:

代码语言:txt
复制
library(devtools)
代码语言:txt
复制
library(phylotools)
代码语言:txt
复制
dat <- read.fasta("aligned_fasta.fasta")
代码语言:txt
复制
dat2phylip(dat, outfile = "out.phy")

结果文件为out.phy

注意:生成out.phy里,第一列序列名和第二列序列只有一个空格,而mcmctree要求两个以上,所以需要人工加多一个空格.

也可以用shell命令生成:

代码语言:txt
复制
cat SpeciesTreeAlignment.fa |tr '\n' '\t'|sed 's/>/\n/g' |sed 's/\t/      /'|sed 's/\t//g'| awk 'NF > 0' > supergene.phy.tmp
代码语言:txt
复制
awk '{print "  "NR"  "length($2)}'  supergene.phy.tmp|tail -n 1 | cat -  supergene.phy.tmp >  supergene.phy
代码语言:txt
复制
在括号内说明每一步的作用:
代码语言:txt
复制
cat SpeciesTreeAlignment.fa |tr '\n' '\t' (将换行符替换为制表符) | sed 's/>/\n/g' (将每个序列名前面的>符号替换为换行符) |sed 's/\t/      /' (将每行第一个的制表符替换为多个空格) |sed 's/\t//g' (删除剩余的制表符,使序列连成一条线) | awk 'NF > 0' (删除空行)> supergene.phy.tmp (临时保存)
代码语言:txt
复制
awk '{print "  "NR"  "length($2)}'  supergene.phy.tmp (计算序列长度)| tail -n 1 (返回最后一行,包括了行数与序列长度) | cat -  supergene.phy.tmp (-为上一管道数据) >  supergene.phy(最终文件)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档