统计学

一起来爬聚类树!

2018-11-21  本文已影响9人  刘小泽

刘小泽写于18.11.21

聚类树是个有意思的东西,可以十分直观地看到每个物种的亲缘关系
之前没有涉及到相关的分析,相关的工具只是听说过大家都在用的MEGA,另外还有Y叔的ggtree。很好奇但是一直没时间学,但是昨天被问到一个关于Bayes建树的问题,于是我想试试。这次先简单介绍下贝叶斯方法,从难入易循序渐进

聚类树什么用?

我们经常听到:系统发育树、系统进化树、系统发生树,其实都是为了推测物种进化机制、预测机制背后的关键作用位置

概率名称

建树方法

基于距离的方法包括:UPGMA(现在很少用了)、ME(Minimum Evolution 最小进化法)、NJ(Neighbor-Joining 邻接法)

基于特征:MP(Maximum parsimony 最大简约法)、ML(Maximum likelihood 最大似然法)、BI(Bayesian Inference贝叶斯法)

建树完成,一般需要用bootstrap(自展率)或者Posterior probability(后验概率)来评估

贝叶斯建树

这种方法是最准确,但同时也最慢【貌似这是软件的通病,比如比对软件STAR也是如此】

软件安装

软件的官网在:https://nbisweden.github.io/MrBayes/download.html

提供了pdf的官方教程【后台回复“mb”获取】

软件安装可以选择三大系统平台,但是我还是比较推荐linux,能用服务器就用服务器运行,一是节省时间,二是减少自己电脑消耗。

安装也很简单,直接用conda安装就好,为了避免软件安装过程中出现一些潜在的冲突问题,可以新建一个conda 环境

conda create -n mrbayes
source activate mrbayes
conda install -y mrbayes

快速开始

快速教程分为四部分:读取Nexus文件、设置进化模型、运行程序、归纳样本

MrBayes读取数据

详细点的解读

第一步 读取数据

数据格式需要是Nexus,包含比对好的核苷酸或氨基酸序列、形态学数据、限制性位点数据或者这四种数据的混合。【关于Nexus格式的介绍:http://wiki.christophchamp.com/index.php?title=NEXUS_file_format

Nexus数据中,不同的数据支持的字符是规定好的,例如

A, C, G, T, R, Y, M, K, S, W, H, B, V, D, N

如果出现某些模糊的位点,可以用圆括号或者花括号注释,例如

# 不例如清楚氨基酸是A还是F
(AF), (A,F), {AF}, {A,F}

如果使用自己的真实数据,在导入数据后,需要将自己的数据调成和示例一样的格式,就是类似这种。自己需要修改ntax(总共要聚类的sample数), nchar(每个sample的序列字符数),datatype(DNA/RNA/protein等)。如果有missing或者gap,需要说明他们用什么字符表示(比如:missing=* gap=-

使用execute或者exe + 文件名(有路径的需要写路径) 来加载.nex文件

第二步 指定模型【重要的部分】

在加载数据以后,我们可以使用showmodel来看看针对自己的数据类型,有哪些模型可选,然后需要用到的命令:lset定义模型结构,prset定义模型参数的先验概率分布

lset:使用help lset 看一下怎么设置lsetlset <parameter>=<option> ... <parameter>=<option>

还有一个表格,表示了参数及当前设置

参数及当前设置

行首:Model setting for partition 1,表示的是你要比较的序列都是同一类型,如果不同类型就会分成不同的partition;

第一个参数 Nucmodel: 设置核苷酸替换类型。默认是4by4(意思是核苷酸的四种形式ACGT/U);Doublet是核糖体DNA(即编码rRNA的序列)的成对茎区 [paired stem regions of ribosomal DNA]; Codon是利用密码子分析DNA序列;Protein也就是DNA转变的氨基酸序列;

第二个参数Nst:用数字设置替换的种类。1表示所有替换率都一样(比如JC69 or F81 model);2表示所有转换和颠换的比率由一些差别(比如K80 or HKY85 model);6允许所有的替换率存在差别(如GTR model);mixed表示在所有可能的可逆替换模型中进行“马尔科夫链”抽样,并组合出不同的模型;

第三个参数Code:只有当Nocmodel设置为Codon时才有效,默认就是全部密码子;

第四个参数Ploidy:设置染色体倍数,"Haploid", "Diploid" or "Zlinked";

第五个参数Rates: 设置模型的位点变异率。默认是equal(即所有位点没有变异);gamma表示位点变异符合gamma分布;lnorm表示正态分布的对数;propinv表示变异位点的分布是常数;invgamma表示变异位点的分布是常数,但是其他位点分布是gamma分布;

第六、七个参数Ngammacat 、Nbetacat一般用默认值4、5就好(大多数情况下,Ngammacat取4个rate categories就够了,增加rate categories数量可以增加准确度,但同时速度会变慢,4可以理解为一个折中的值);

第三步 设置模型先验值及检查模型

有六种参数类型:拓扑(the topology), 分枝长度(the branch lengths), 4个stationary frequencies of the nucleotides, 6个different nucleotide substitution rates, the proportion of invariable sites 以及 the shape parameter of the gamma distribution of rate variation

默认值可以应对绝大多数分析,使用help prset可以看到设置

使用shomodel会看到目前模型的参数设置

目前模型的参数设置
第四步 准备分析

在运行mcmc 之前,可以用help mcmc看下

help mcmc
第五步 开始分析

输入mcmc ,首先看到这样一个表格,包括了需要用到的方法及占比

方法及占比

然后就开始运行,就像这样

什么时候停止呢?

当程序运行到设置的Ngen时,会问你要不要继续,并给出目前已经计算的结果Average standard deviation of split frequencies。一般来讲这个数小于0.01就可以退出了。但是在数据集比较大时,并不是很理想,下降的很慢,而且开始还有时会上升,如果到了Ngen还离0.01很远,比如最后还是1点几,那么还需要增加generation。如果达到了0.01到0.05之间,那么基本可以结束。

第六步 总结

首先看下samplefreq生成的.p文件,不同的模型结果信息不同【这里以测试数据为例】

然后使用sump 得到一个图一个表。生成的表格中,主要看PSRF这一列数值是否接近1.0【1.00-1.02是最理想的情况,但很难做到】

tree和branch数据存储在.t 的文件中,也是Nexus格式

使用sumt relburnin =yes burninfrac = 0.25 ,直接返回的结果包括:两个统计表两个图

另外,sumt还会返回5个额外的文件

.parts文件包含了二分法分类的key值;

.tstat.vstat 包含了partition statistics和branch length statistics

.con 包含了consensus trees,这个文件可以在FigTree中打开,展示一下后验概率以及每个枝的标准差【这个应该是比较有用的】

.trprobs包含了在mcmc搜索中找到的树,并用后验概率排序


欢迎关注我们的公众号~_~  
我们是两个农转生信的小硕,打造生信星球,想让它成为一个不拽术语、通俗易懂的生信知识平台。需要帮助或提出意见请后台留言或发送邮件到Bioplanet520@outlook.com

Welcome to our bioinfoplanet!
上一篇 下一篇

猜你喜欢

热点阅读