figtree需要在JAVA下运行吗_Phylogenomic_Tutorial || ML_Tree inference
Github/mmatschiner的phylogenetic & phylogenomic学习教程记录【一】多序列比对;核算替换模型的选择;最大似然法建树的学习
[TOC]
软件准备Preparation
Basics
Bash
Ruby 2; 版本> 2
Python 3
R
安装包Libraries
Python3的安装包:包括有numpy, scipy msprime
R安装包:包括有ape, coda,用于introgression分析。
软件Programs
MAFFT: 多序列比对软件;MAFFT
AliView: 多序列比对的可视化软件;AliView
BMGE: 多序列比对后保守序列区段鉴别软件,polish软件;类似熟悉的Gblocks。BMGE
PAUP: 系统发育分析软件MP法;PAUP*
FigTree系统树的可视化软件;FigTree
BEAST2分子进化;分子时间计算经典软件;https://www.beast2.org
TracerBayesian贝叶斯树的后验计算;Tracer
Blast+ 经典序列比对blast软件;Blast
ASTRAL 根据基因树来推断物种树的软件;ASTRAL
Abyss 同组装相关软件;Abyss
BWA 短序列比对软件;BWA
bcftools vcf文件操作软件;bcftools
Dsuite 计算Introgression的D-statistics数值软件;Dsuite
Relate 大规模样本数据计算谱系历史的软件;较新的软件;Relate
多序列比对
Outline
多序列比对是系统发育分析的基础;其目的是为了确定序列之间同源的区段(homologous nucleotides可比较的序列);本节为了解决以下问题:
利用MAFFT软件做多序列比对;
鉴定并排除可能错误比对的序列区段;
利用公共数据库NCBI GeneBank补全已有的数据集合;
Datasets
数据来源于Matschiner et al. 2017。此为研究cichlid(慈鲷科鱼种)在各大洋的历史演化及分布。物种包括41species,分为不同地理的groups(Non-cichlid, Neotropical cichlids, African; Indian; Malagasy)。此处利用到两个基因:线粒体mitocondrial 16S, 核基因RAG1
Softwares
利用到的软件包括:
MAFFT: 多序列比对软件;MAFFT
AliView: 多序列比对的可视化软件;AliView
BMGE: 多序列比对后保守序列区段鉴别软件,polish软件;类似熟悉的Gblocks。BMGE
利用MAFFT比对,AliView可视化
利用MAFFT网络版或本地版做序列比对;其中比对策略包括有不同全局比对和局部比对(Global and Local alignment)的算法策略,对于大多数人来说采用默认的--auto 软件即会自动匹配最适算法。
## 1
mafft --auto 16s.fasta >16s_aln.fasta
## 2 Gap penalty
mafft --auto --op 2 16s.fasta >16s_op2_aln.fasta
利用AliView直接做序列比对的可视化
利用BMGE去除低质量比对区域
多序列比对软件对于一些区域比对质量较差,可能会出现比对错误的情况,对后续系统发育分析会产生影响,因此需要将其剔除。我们利用BMGE软件去除这些低质量比对的区域。BMGE(block mapping and gathering with entropy)由JAVA所写。
## 查看帮助
java -jar BMGE.jar -?
## 运行
java -jar BMGE.jar -i 16s_aln.fasta -t DNA -of 16s_filtered.fasta -oh 16s_filtered.html
程序before和after会告诉排除了多少问题比对的序列。后续同样的对核基因rag1也可以做相同的操作;
image
核酸替换模型的选择Substitution Model Selection
当完成多序列比对之后,进行似然法likelihood的系统发育分析之前,随后要进行的就是核酸替换模型的选择,包括有Jukes-Cantor(JC)模型,HKY模型,GTR模型等等。通常是根据核酸替换模型软件计算得出最佳的AIC值(Akaike Information Criterion)的模型,再根据此模型进行后续的系统发育分析。
Preparation
此篇教程是利用PAUP软件进行的模型筛选。http://phylosolutions.com/paup-test/。开发于1980s,是系统发育分析最古老软件之一。虽然目前很多功能已被其它更快更新的软件所替代,但里面目前仍包括较为全面的likelihood-based系统发育分析的功能;目前在用的为版本4.0;
PAUP接受的格式为nex格式文件;
利用PAUP模型筛选
下载GUI图形化版本的PAUP软件,打开文件16s_filtered.nex
PAUP计算核酸替换模型需要首先利用NJ法快速建树;
根据"Automated Model Selection"选项进行模型筛选;其中模型中包含有较多的术语:通常筛选标准包括有AIC(Akaike information criterion); AICc(Akaike information criterion corrected for small sample sizes); BIC(Bayesian information criterion); DT(decision-theoretic criterion)。通常是根据AIC值最小的Model选为最佳Model。
Model for among-site rate variation中G(GAMMA)分布; I(Invariable sites)
PAUP结果中-lnL(-log likelihood); K(the number of free parameters in the model), 代表branch length
结果显示最佳AIC模型是GTR模型;GTR模型是系统发育分析中最常用的model。
pic
已有的核酸替换模型的筛选都是认为一个模型适用于所有位点,所有的位点进化速率都是相同的。但实际上一些位点的进化速率是不同的,例如cds序列中的third-codon位点是相较于第一第二位点速率是更快的。根据"Automated Partioning"结果显示
最大似然法建树ML phylogenetic Inference
Preparation
利用热门的软件IQTREE做系统发育分析,Figtree做基本的可视化展示。Datasets利用16s_filtered.nex and rag1_filtered.nex
利用IQTREE做ML系统发育分析
IQTREE软件可以直接快捷进行系统发育分析:程序会自动计算使用的threads线程数;每条序列内的gap数目;选择的最佳模型(根据BIC模型所选择);以及最大似然树ML treefile(Newick格式文件)
iqtree --help
## iqtree 默认最简参数;
iqtree -s 16s_filtered.nex
结果会生成Newick格式的treefile;((Ambassispcxxxx:0.04,Synbranmarmora:0.24):0.02,Mugilxxcephalu:0.13);其中
根据figtree显示:
pic
数字代表枝长branch(表示一定的遗传距离),括号内的两个species为姊妹支。
选择我们预设已知的某一支系作为外类群,reroot进行设置。随后即可展示各个类群之间的系统发育关系。
利用bootstrap法获取ML的各个node支持率
根据默认参数的-s所得到的系统发育树,我们尚无法确定各个支系的支持率程度,可靠度(reliability),因此我们需要借用bootstrap法获取ml树的支持率;
根据--help 我们利用"ULTRAFAST BOOTSTRAP/JACKKNIFE"的参数-B最少以1000次bootstrap做计算
## -B 为ultrafast的bootstrap值,--prefix为预设输出名字
iqtree -s 16s_filtered.nex -B 1000 --prefix 16s_filtered.bs.nex
结果利用figtree做展示,根据Note label下的diasplay Label即会展示每个节点的bootstrap值;
pic1
对于小数据而言,不同次的bootstrap运算,以及设置不同的model都会对支持率有一定的影响(slight difference)。而一般对于iqtree的ultra bootstrap值来说,>90才被认为是可靠的节点。一些节点的支持率较低,多是因为序列数不多,信息位点数不多,不能很好的区分开序列之间的差别。
对cds核基因分段(Partitioned)的ML系统推断
由于前面做模型选择时我们发现,对于cds的codon(1,2,3)序列来说,不同位置会用不同的替换模型,在IQTREE中也可以同样根据此进行Partitioned inference;
#
#NEXUS
BEGIN SETS;
CHARSET codon1 = 1-1368\3;
CHARSET codon2 = 2-1368\3;
CHARSET codon3 = 3-1368\3;
END;
### 将以上输出到partitions.txt文件中
## run iqtree
iqtree -s rag1_filtered.nex -p partitions.txt -B 1000 --prefix rag1_filtered.bs.nex
比较不同ML树之间的差异
通过不同的基因我们会获得不同的系统发育树。而为检查两个树之间的差异以及评估整体的差别,我们可以利用Robinson-Foulds distance来鉴定树之间拓扑结构差异。在IQTREE中的-t和--tree-dist2
iqtree -t 16s_filtered.bs.nex.treefile --tree-dist2 rag1_filtered.bs.nex.treefile
同样也可以计算不同树文件中的平均bootstrap值判断支持率。
串联比对(concatenated alignments)下的系统推断
一个基本前提是,序列位点越多,最后获得各个支系的支持率也就越大,所以我们可以将多个基因串联起来统一进行系统发育推断。当然另一个前提是不同的基因会随着物种进行同样的进化历程,这个前提在对一些近缘物种推断时是会存在问题的。
#NEXUS
BEGIN SETS;
CHARSET 16S = 16s_filtered.nex: *;
CHARSET rag1_codon1 = rag1_filtered.nex: 1-1368\3;
CHARSET rag1_codon2 = rag1_filtered.nex: 2-1368\3;
CHARSET rag1_codon3 = rag1_filtered.nex: 3-1368\3;
END;
## 根据组合方式进行统一iqtree计算 -p
iqtree -p partitions.txt -B 1000 --prefix concatenated.bs.nex
结果确实会比单基因建树的支持率效果更好。多基因串联建树也是后期由基因树推断物种树的一个重要的方法。
参考资料
figtree需要在JAVA下运行吗_Phylogenomic_Tutorial || ML_Tree inference相关推荐
- Windows/Linux下引用jar包,并用javac/java编译运行
Windows/Linux下引用jar包,并用javac/java编译运行,有需要的朋友可以参考下. 1> Windows 假设要引用的jar放在D:/test目录下,名字为t1.jar, ja ...
- 命令行下运行 java someClass.class出现 “错误:找不到或无法加载主类someClass ” 的解决方案
命令行下运行 java someClass.class出现 "错误:找不到或无法加载主类someClass " 的解决方案 参考文章: (1)命令行下运行 java someCla ...
- Linux下运行java DES解密失败,报javax.crypto.BadPaddingException:Given final block not properly padded
参考:http://blog.csdn.net/rj042/article/details/8196125 单点登录:https://github.com/ebnew/ki4so redis客户端操作 ...
- 启动非java虚拟机方式下运行matlab
在非java虚拟机下运行matlab据说可以扩大内存,启动非java虚拟机下运行 matlab的方法有: 一. 1.右建点matlab快捷方式,选属性 2.在"目标"中添加-noj ...
- java运行class文件_java命令行下运行class文件
今天碰到了一个很变态的问题,写了一个很简单的HelloWord.java,内容如下: package com.yanjiuyanjiu; public class HelloWorld { publi ...
- ubuntu下面的java一键运行脚本
java的运行分为编译+执行两部分. 怪麻烦的,所以写个脚本一键运行.如下: ------------------------------------------------------------- ...
- java异常了还会往下走吗_异常一个问题,请帮下忙:处理异常后,程序会继续往下运行吗...
import java.util.*; public class PrintBig{ public static void main(String[] args){ Scanner in = new ...
- linux下执行java_Linux下运行java项目
最近初步接触了linux,感觉很有新鲜感.之前在windows下干过的事情也便想到在linux环境下实现一下.正好手头在编java,就想既然java可以在windows的DOS操作下运行,是不是也可以 ...
- linux java执行_linux下运行java
3. 编译运行命令 编译 javac [-d] [-o] [-verbose] [-classpath][-sourcepath] -d, 指定生成的.class文件存放目录,一般省略则默认放在jav ...
最新文章
- Leangoo大讲堂—北京站精彩回顾
- 初识OR Mapping
- 文巾解题1588. 所有奇数长度子数组的和
- [云炬创业管理笔记]第二章成为创业者讨论3
- Java设计模式(8)组合模式(Composite模式)
- cmd oracle 连接实例_C#连接Oracle数据库的实例方法
- centos7 卸载安装失败的mysql7
- 043、JVM实战总结:动手实验,自己动手模拟出频繁Young GC的场景
- Waymo乘客交互系统亮相,还带西方记者试乘了没司机的真·无人车
- 数字图像处理第三次试验:图像复原、图像分割
- QtDesigner配置
- python安装time模块_Python之路-Python常用模块-time模块
- 重新认识caniuse
- Windows Server 2012 R2 更改系统语言
- Windows命令行WINRAR压缩和解压缩
- 华为ensp的路由器怎么和本地电脑通信
- Adobe After Effect (AE) cc2020 安装教程【64位】
- Eclipse SVN 冲突的 介绍 及 四种解决方式
- 每日一句:day06——From Zero To Hero
- web html常用标签含义,WEB前端开发之HTML:常用标签知多少
热门文章
- How to trouble shoot if there is no entityset available when creating a tile
- text type dropdown list - INIT_DATA
- IBASE timestamp conversion exit
- new Grammar in 740 - internal table filter
- SAP C4C里如何实现Sales Unit和Seller的自动determination
- dw java 编码_dW 编辑推荐:Java 8 习惯用语,第 4 部分:提倡使用有帮助的编码方式...
- 动态规划简单应用:斐波那契数列
- 周三多管理学第七版pdf_为什么说管理学原理是企业领导的必修课?
- 苏宁大数据怎么运营_运营商大数据精准获客
- unity3d 700种 材质球_温度与耐磨钢球的关系