Phylophlan(三)将新物种插入进化树

导读

Prodigal是原核生物基因预测软件,常被用于原核生物de novo组装分析中。Prodigal能预测由de novo组装得到的新物种的基因组草图(bin)或contigs或scaffold中有哪些基因序列,并同时将这些序列翻译成蛋白。Phylophlan能通过将由基因组草图预测和翻译得到的基因蛋白序列数据与Phylophlan自带的3000+种微生物的蛋白数据做比对分析新物种与3000+微生物的进化关系。利用ggtree可视化结果可观察新物种在已知物种在进化树中的位置。我这里采用的输入数据是宏基因组分箱得到的基因组草图,获取方法请在:宏基因组分箱(二)Metabat2分箱实战。接下来是将新物种插入进化树的具体方法:(1)Prodigal蛋白预测;(2)Phyloplan进化分析;(3)ggtree可视化1、2、3、4。

1. Prodigal蛋白预测

for I in bin/all/*; do
    BASE=${I##*/}
    SAMPLE=${BASE%.*}
    prodigal -a bin_function/all/$SAMPLE.faa -d bin_function/all/$SAMPLE.fna -f gff -g 11 -o bin_function/all/$SAMPLE.out -p single -s bin_function/all/$SAMPLE.pot -i $I &
done
# 将bin/all文件夹里的完成度大于90%的bin(基因组草图)进行基因预测,获得蛋白序列信息。
# 其实我这里只有两个bin:all.1.fasta和all.5.fasta

    # prodigal部分参数:
    -a: 输出的蛋白序列文件名
    -d: 输出的核酸序列文件名
    -f: 输出文件格式(gbk, gff, or sco),默认gbk
    -g: 指定密码子,原核为第11套,默认是11
    -o: 输出文件,默认为屏幕输出,标准输出
    -p: 选择方式,是单菌还是meta样品
    -s: 将所有带有得分的潜在基因写入到指定文件中
    -i: 指定FASTA/Genbank输入文件(默认标准输入)

二、phylophlan进化分析

将包含基因预测得到的faa(FASTA Amino Acid file)文件的整个“all”文件夹拷贝到phylophlan软件的input文件夹中,然后进行系统发生分析。这一步会将3000+种已知微生物与我的两个基因组草图放在一起进行进化分析,因此速度非常慢。

ll input/all/
# 查看输入文件,如下:

      总用量 1608
      drwxrwxr-x 2 cheng WST   4096 9月  30 18:01 ./
      drwxrwxr-x 8 cheng WST   4096 10月 24 14:26 ../
      -rw-rw-r-- 1 cheng WST 885979 9月  30 18:01 all.1.faa
      -rw-rw-r-- 1 cheng WST 748679 9月  30 18:01 all.5.faa

phylophlan.py -i -t all --nproc 16
# 进化分析

ll output/all/
# 查看结果文件,如下:

    总用量 7552
    drwxrwxr-x 2 cheng WST    4096 10月 17 10:14 ./
    drwxrwxr-x 9 cheng WST    4096 10月 24 14:28 ../
    -rw-rw-r-- 1 cheng WST  107348 10月  8 11:26 all.tree.int.nwk
    -rw-rw-r-- 1 cheng WST     219 10月  8 11:30 imputed_conf_high-conf.txt

三、配色和标签

利用nsegata-phylophlan/data/ppafull.tax.txt制作个性化画图所需的配色和标签文件。ppafull.tax.txt内含Phylophlan自带的3000+物种的分类注释信息。该文件内容如下:

less -S ppafull.tax.txt
# 查看文件:

    t643692001      d__Bacteria.p__Acidobacteria.c__Acidobacteria.o__Acidobacteriales.f__Acidobacteriaceae.g__Acidobacterium.s__capsulatum.t__ATCC
    t648276601      d__Bacteria.p__Acidobacteria.c__Acidobacteria.o__Acidobacteriales.f__Acidobacteriaceae.g__Granulicella.s__sp_.t__MP5ACTX8
    t649633002      d__Bacteria.p__Acidobacteria.c__Acidobacteria.o__Acidobacteriales.f__Acidobacteriaceae.g__Granulicella.s__sp_.t__MP5ACTX9
    t649633100      d__Bacteria.p__Acidobacteria.c__Acidobacteria.o__Acidobacteriales.f__Acidobacteriaceae.g__Terriglobus.s__saanensis.t__SP1PR4
    t637000001      d__Bacteria.p__Acidobacteria.c__Acidobacteria.o__Acidobacteriales.f__Korebacteraceae.g__Korebacter.s__versatilis.t__Ellin345
    t639633060      d__Bacteria.p__Acidobacteria.c__Solibacteres.o__Solibacterales.f__Solibacteraceae.g__Solibacter.s__usitatus.t__Ellin6076
    ...

提取ppafull.tax.txt的第一列全部内容和第二列的门注释信息,接着添加Bin信息,可得如下文件:

id      Phylum
all.1   Bin
all.5   Bin
t643692001      Acidobacteria
t648276601      Acidobacteria
t649633002      Acidobacteria
t649633100      Acidobacteria
t637000001      Acidobacteria
t639633060      Acidobacteria
t644736322      Actinobacteria
t639633001      Actinobacteria
t643886017      Actinobacteria
...

四、ggtree画树状图:长方型、加对齐线

关键参数:
%<+% map # 引入注释文件
layout="rectangular" # 长方型树状图
align=TRUE # 添加对齐虚线
col=Phylum # 以Phylum给虚线着色
legend.position="bottom" # legend至于底部
legend.box="horizontal" # legend水平放置

library(ggplot2)
library(ggtree)
tree=read.tree("all.tree.int.nwk")
data=fortify(tree)
map=read.table("mapping.txt", header=T, sep="\t")

# 长方形(线型)
gra=ggtree(tree, layout="rectangular", size=0.1) %<+% map +
# 树型、线粗细、末端颜色 + 注释信息
geom_tiplab(aes(label=NA, col=Phylum), hjust=-0.5, align=TRUE, linesize=0.1)+
# 注释、颜色、高度、对其、虚点大小
theme(legend.title=element_text(face="bold"), legend.position="bottom", legend.box="horizontal", legend.text=element_text(size=rel(0.5)))+
# 图例位置、文字大小
xlim(NA, max(data$x)*1.3)

pdf("tree_rectangular_line.pdf")
gra
dev.off()

打开绘图结果tree_rectangular_line.pdf,如下:

图片.png

五、ggtree画树状图:长方型、末端着色

关键参数:
ggtree(aes(col=Phylum)) # 末端“枝”颜色
geom_tippoint(aes(color=Phylum)) # 末端“点”颜色

gra=ggtree(tree, aes(col=Phylum), layout="rectangular", size=0.1) %<+% map +
# 树型、线粗细、末端颜色 + 注释信息
geom_tippoint(aes(color=Phylum), size=0.1)+
# 端点颜色、大小
geom_tiplab(aes(label=NA), size=0.8)+
# 注释
theme(legend.title=element_text(face="bold"), legend.position="bottom", legend.box="horizontal", legend.text=element_text(size=rel(0.5)))+
# 图例位置、文字大小
xlim(NA, max(data$x)*1.3)

pdf("tree_rectangular_point.pdf")
gra
dev.off()


打开绘图结果tree_rectangular_point.pdf,如下:

图片.png

六、ggtree画树状图:圆型、加对齐线

关键参数:
layout="circular" # 画圆型树状图

# 圆形(线型)
gra=ggtree(tree, layout="circular", size=0.1) %<+% map +
# 树型、线粗细、末端颜色 + 注释信息
geom_tiplab(aes(label=NA, col=Phylum), hjust=2, align=TRUE, linesize=0.1)+
# 注释、颜色、高度、对其、虚点大小
theme(legend.title=element_text(face="bold"), legend.position="bottom", legend.box="horizontal", legend.text=element_text(size=rel(0.5)))+
# 图例位置、文字大小
xlim(NA, max(data$x)*1.3)

pdf("tree_circular_line.pdf")
gra
dev.off()

打开绘图结果tree_circular_line.pdf,如下:

图片.png

七、ggtree画树状图:圆型、末端着色

关键参数;
ggtree(aes(col=Phylum)) # 末端“枝”颜色
geom_tippoint(aes(color=Phylum)) # 末端“点”颜色

gra=ggtree(tree, aes(col=Phylum), layout="circular", size=0.1) %<+% map +
# 树型、线粗细、末端颜色 + 注释信息
geom_tippoint(aes(color=Phylum), size=0.1)+
# 端点颜色、大小
geom_tiplab(aes(label=NA, col=NA), size=0.8)+
# 注释、注释的颜色
theme(legend.title=element_text(face="bold"), legend.position="bottom", legend.box="horizontal", legend.text=element_text(size=rel(0.5)))+
# 图例位置、文字大小
xlim(NA, max(data$x)*1.3)

pdf("tree_circular_point.pdf")
gra
dev.off()

打开绘图结果tree_circular_point.pdf,如下:

图片.png

八、ggtree画树状图:长方型、加对齐线、加注释

1 准备注释文件

# 制作注释文件
cd /home/cheng/huty/softwares/phylophlan/data
cat ppafull.tax.txt | sed 's/.p__/\t/g' | sed 's/.c__/\t/g' | sed 's/.g__/\t/g' | awk 'BEGIN{OFS="\t"}{print $1, $3, $5}' > tax.txt

# 绘图准备
touch tax_bin.txt
echo -e 'id\tPhylum\tSpecies' > tax_bin.txt

cat bin_taxonomy.txt | sed '1d' | sed 's/.p__/\t/' | sed 's/.c__/\t/' | awk '{printf("%s\t%s\tBin\n", $1, $3)}' >> tax_bin.txt
cat /home/cheng/huty/softwares/phylophlan/data/tax.txt >> tax_bin.txt 

2 绘图

# 绘制insert tree
library(ggplot2)
library(ggtree)
tree=read.tree("wm.insert.tree.int.nwk")
data=fortify(tree)
map=read.table("tax_bin.txt", header=T, sep="\t")

gra=ggtree(tree, layout="rectangular", size=0.1) %<+% map +
# 树型、线粗细、末端颜色 + 注释信息
geom_tiplab(aes(label=Species, col=Phylum), align=TRUE, size=0.18, linesize=0.05)+
# 注释、颜色、高度、对其、虚点大小
theme(legend.title=element_text(face="bold"), legend.position="bottom", legend.box="horizontal", legend.text=element_text(size=rel(0.5))) +
# 图例位置、文字大小
xlim(NA, max(data$x)*1.3)

ggsave(gra, filename="tree_rectangular.pdf", height=48, width=10)

九、ggtree + gheatmap组合图

library(ggplot2) # 加载ggplot2
library(ggtree) # 加载ggtree

tree=read.tree(list.files()[grepl("denovo.tree.nwk", list.files())]) # 读取nwk文件
map=read.table("map.txt", header=T, sep="\t", comment.char="")
data=fortify(tree)

abun = read.table("/home/cheng/client2/wangmeng/X101SC19061144-Z01-J041/Bin_all/Bin_quant/bin_abundance_table.txt", header=T, sep="\t", row.names=1)
abun = abun[, order(colnames(abun), decreasing=F)]

p = ggtree(tree, layout="rectangular", ladderize=FALSE, branch.length="none", size=0.8, aes(color = Phylum)) %<+% map +
# 树型、线粗细、末端颜色 + 注释信息
geom_tiplab(aes(col=Phylum), align=TRUE, size=2.5) +
# 注释、颜色、高度、对其、虚点大小
theme(legend.position = 'none')
ggsave(p, file="bin_pheatmap.pdf", width=8, height=8)
p2 = gheatmap(p, abun, offset = 0.6, width = 0.5, 
             font.size=3, low = "green", high = "red", color = "white", 
             colnames_level = colnames(abun), 
             colnames_angle=90, hjust=.90)

ggsave(p2, file="bin_pheatmap2.pdf", width=14)

参考:
使用Y叔神包ggtree进行基因家族基因进化树构建
用ggtree来绘制进化树
在R中绘制进化树:ggtree学习笔记

\color{green}{😀😀原创文章,码字不易,转载请注明出处😀😀}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容