谈论到直系同源基因分析的时候,大部分教程都是介绍OrthoMCL,这是2003年发表的一个工具,目前的引用次数已经达到了3000多,但这个软件似乎在2013年之后就不在更新,而且安装时还需要用到MySQL(GitHub上有人尝试从MySQL转到sqlite)。

而OrthoFinder则是2015年出现的软件,目前已有400多引用。该软件持续更新,安装更加友好,因此我决定使用它来做直系同源基因的相关分析。

OrthoFinder能做什么?

OrthoFinder: solving fundamental biases in whole genome comparisons dramatically improves orthogroup inference accuracy提到,它的优点就是比其他的直系同源基因组的推断软件准确,并且速度还快。

此外他还能分析所提供物种的系统发育树,将基因树中的基因重复事件映射到物种树的分支上,还提供了一些比较基因组学中的统计结果。

OrthoFinder的分析过程

OrthoFinder的分析过程分为如下几步:

  1. BLAST all-vs-all搜索。使用BLASTP以evalue=10e-3进行搜索,寻找潜在的同源基因。(除了BLAST, 还可以选择DIAMOND和MMSeq2)
  2. 基于基因长度和系统发育距离对BLAST bit得分进行标准化。
  3. 使用RBNHs确定同源组序列性相似度的阈值
  4. 构建直系同源组图(orthogroup graph),用作MCL的输入
  5. 使用MCL对基因进行聚类,划分直系同源组
OrthoFinder2在OrthoFinder的基础上增加了物种系统发育树的构建,流程如下
  1. 为每个直系同源组构建基因系统发育树
  2. 使用STAG算法从无根基因树上构建无根物种树
  3. 使用STRIDE算法构建有根物种树
  4. 有根物种树进一步辅助构建有根基因树

基于Duplication-Loss-Coalescent 模型,有根基因树可以用来推断物种形成和基因复制事件,最后记录在统计信息中。

软件使用

在解压缩的OrthoFinder文件目录下(安装见最后)有一个 ExampleData, 里面就是用于测试的数据集。

orthofinder -f ExampleData -S mmseqs
# -f 指定文件夹
# -S 指定序列搜索程序,有blast, mmseqs, blast_gz, diamond可用

OrthoFinder的基本使用就是如此简单,而且最终效果也基本符合需求。

如果你想根据多序列联配(MSA)结果按照极大似然法构建系统发育树,那么你需要加上-M msa。这样结果会更加准确,但是代价就是运行时间会更久,这是因为OrthoFinder要做10,000 - 20,000个基因树的推断。

OrthoFinder默认用mafft进行多序列联配,用fasttree进行进化树推断。多序列联配软件还支持muscle, 进化树推断软件还支持iqtree, raxml-ng, raxml。例如参数可以设置为-M msa -A mafft -T raxml.

并行化参数: -t参数指定序列搜索时的线程数,-a指的是序列搜索后分析的CPU数。

软件细节

OrthoFinder提供了config.json可以调整不同软件的参数,如下是BLASTP。

OrthoFinder默认使用DendroBLAST发育树,也就是根据序列相似度推断进化关系。这是作者推荐的方法,在损失部分准确性的前提下提高了运算效率。当然你可以用-M msa从多序列比对的基础上进行基因树构建。如果你先用了默认的DendroBLAST,想测试下传统的MSA方法,那么也不需要重头运行,因为有一个-b参数可以在复用之前的比对结果。

在物种发育树的推断上,OrthoFinder使用STAG算法,利用所有进行构建系统发育树,而非单拷贝基因。此外当使用MSA方法进行系统发育树推断时,OrthoFinder为了保证有足够多的基因(大于100)用于分析,除了使用单拷贝基因外,还会挑选大部分是单拷贝基因的直系同源组。这些直系同源组的基因前后相连,用空缺字符表示缺失的基因,如果某一列存在多余50%的空缺字符,那么该列被剔除。最后基于用户指定的建树软件进行系统发育树构建。结果在"WorkingDirectory/SpeciesTree_unrooted.txt"

使用STRIDE算法从无根树中推断出有根树, 结果就是"SpeciesTree_rooted.txt".

结果文件

运行结束后,会在ExampleData里多出一个文件夹,Results_Feb14, 其中Feb14是我运行的日期

直系同源组相关结果文件,将不同的直系同源基因进行分组

  • Orthogroups.csv:用制表符分隔的文件,每一行是直系同源基因组对应的基因。
  • Orthogroups.txt: 类似于Orthogroups.csv,只不过是OrhtoMCL的输出格式
  • Orthogroups_UnassignedGenes.csv: 格式同Orthogroups.csv,只不过是物种特异性的基因
  • Orthogroups.GeneCount.csv:格式同Orthogroups.csv, 只不过不再是基因名信息,而是以基因数。

直系同源相关文件,分析每个直系同源基因组里的直系同源基因之间关系,结果会在Orthologues_Feb14文件夹下,其中Feb14是日期

  • Gene_Trees: 每个直系同源基因基因组里的基因树
  • Recon_Gene_Trees:使用OrthoFinder duplication-loss coalescent 模型进行发育树推断
  • Potential_Rooted_Species_Trees: 可能的有根物种树
  • SpeciesTree_rooted.txt: 从所有包含STAG支持的直系同源组推断的STAG物种树
  • SpeciesTree_rooted_node_labels.txt: 同上,只不过多了一个标签信息,用于解释基因重复数据。

比较基因组学的相关结果文件:

  • Orthogroups_SpeciesOverlaps.csv: 不同物种间的同源基因的交集
  • SingleCopyOrthogroups.txt: 单基因拷贝组的编号
  • Statistics_Overall.csv:总体统计信息
  • Statistics_PerSpecies.csv:分物种统计信息

STAG是一种从所有基因推测物种树的算法,不同于使用单拷贝的直系同源基因进行进化树构建。

一些重要概念:

  • Species-specific orthogroup: 一个仅来源于一个物种的直系同源组
  • Single-copy orthogroup: 在直系同源组中,每个物种里面只有一个基因。我们会用单拷贝直系同源组里的基因推断物种树以及其他数据分析。
  • Unassigned gene: 无法和其他基因进行聚类的基因。
  • G50和O50,指的是当你直系同源组按照基因数从大到小进行排列,然后累加,当加入某个组后,累计基因数大于50%的总基因数,那么所需要的直系同源组的数目就是O50,该组的基因树就是G50.

Orthogroups, Orthologs 和 Paralogs 这三个概念推荐看图理解。

如何安装?

最快的方法

OrthoFinder可以通过conda安装,建议为它新建一个虚拟环境

conda create -n orthofinder orthofinder=2.2.7

如果你愿意折腾

你先得安装它的三个依赖工具: MCL, FastME, DIAMOND/MMseqs2/BLAST+

MCL有两种安装方式,最简单的就是用sudo apt-get install mcl, 但是对于大部分人可能没有root权限,因此这里用源代码编译。http://micans.org/mcl/

wget https://www.micans.org/mcl/src/mcl-latest.tar.gz
tar xf mcl-latest.tar.gz
cd mcl-14.137./configure --prefix=~/opt/biosoft/mcl-14.137
make -j 20 && make install

之后是MMseqs2, 一个蛋白搜索和聚类工具集,相关文章发表在NBT, NC上。GitHub地址为https://github.com/soedinglab/MMseqs2

wget https://github.com/soedinglab/MMseqs2/releases/download/3-be8f6/MMseqs2-Linux-AVX2.tar.gz
tar xzf MMseqs2-Linux-AVX2.tar.gz
mv mmseqs2 ~/opt/biosoft/

最后安装FastME, 这是一个基于距离的系统发育树推断软件。在http://www.atgc-montpellier.fr/fastme/binaries.php下载,上传到服务器

tar xf fastme-2.1.5.tar.gz
cd fastme-2.1.5
./configure --prefix=/opt/biosoft/fastme-2.1.5
make && make install

BLAST+可装可不装,推荐阅读这或许是我写的最全的BLAST教程

以上软件安装之后,都需要将其添加到环境变量中,才能被OrthoFinder调用。

之后在https://github.com/davidemms/OrthoFinder/releases 寻找最近的稳定版本下载到本地,例如OrthoFinder v2.2.7

tar xzf OrthoFinder-2.2.7.tar.gz
OrthoFinder-2.2.7/orthofinder -h

使用OrthoFinder进行基因家族分析相关推荐

  1. 基于TBtools做基因家族分析教程 (全)

    基因家族分析笔记-全部开始记录 一. 写在前面 2023年4月中旬自己开始做基因家族的分析,对于这块自己没有接触过,因此也是一个挑战,没事!!!(安慰自己),对于基因家族的分析网上的教程很多,跟着步骤 ...

  2. linux统计单拷贝基因家族,为什么要进行基因家族分析?

    原标题:为什么要进行基因家族分析? 某物种基因组被测序后,大部分课题组都会发表一些基因家族分析的文章,此举常常被误解为"灌水",其实不然,理清基因组内基因家族成员分类组成,是挖掘和 ...

  3. seqkit根据基因id_基因家族分析保姆级教程(分子进化)-生信小白自学之路

    开始前先熟悉一下我自己 简单介绍一下,我是20级研究生,普通本科和中科院海洋所联培的学生,什么是联培呢,简单来说就是理论课程在学校上,根据学校安排,一般是一年,我们半年就上完了,后面就去海洋所工作了. ...

  4. 基因家族分析及SCI写作技巧

    随着高通量测序以及生物信息学的发展,各物种基因组序列快速释放,为基因家族分析和论文写作带来了契机.基因家族的生物信息学分析也为后续基因功能研究提供了强有力的理论支撑,在数据挖掘中发挥着越来越重要的作用 ...

  5. [基因课学习笔记]一个简单的基因家族分析

    工作背景 探究在芝麻.大豆以及拟南芥中FAD4-like基因家族进化关系,并使其可视化(进化树) 操作环境及软件的准备 虚拟机应用:VMware Workstation pro 17 虚拟机操作系统: ...

  6. 基因家族分析⑤:进化树构建

    在④中,我们已经得到了甘蓝中的几丁质酶基因家族序列,用任意一个序列在NCBI上对拟南芥数据库进行BlastP,在EnsemblPlants数据库中对白菜数据库进行BlastP(Brassica_rap ...

  7. 基因家族分析(3)进化树构建及美化

    基因家族树构建最常用的方法是 NJ 法和 ML 方法,构建进化树之前,需要进行多序列比对. 欢迎关注Bioinfor 生信云微信公众号! 多序列比对 多序列比对的作用是将核酸或者氨基酸序列对齐,使得相 ...

  8. 41、OrthoMCL和mcl软件进行基因家族分析

    转载:http://www.realbio.cn/news/124.html https://blog.csdn.net/seallama/article/details/43820763 http: ...

  9. 基于全基因组的基因家族分析的初尝试

    参考:简书https://www.jianshu.com/p/9f96fc7438aa 以搜索ZEB的人类的基因家族成员为例 一. 搜索已知数据库 1.在NCBI Gene上搜索ZEB1 点击summ ...

最新文章

  1. 自己动手写C语言编译器(1)
  2. python 跳出多重循环
  3. Windows自动关闭程序
  4. oracle自治事务的写法_Oracle的自治事务
  5. LeetCode 面试题55 二叉树的深度
  6. Python应用实战-Pandas 计算连续行为天数的几种思路
  7. LeetCode 1713. 得到子序列的最少操作次数(最长上升子序DP nlogn)
  8. java中日历类:Calendar
  9. 中国IT行业盛行,互联网行业早已饱和!程序员“过多”是主要原因?
  10. python电子病历交接班系统_专科电子病历
  11. jq+ajax前端上传多张图片_史上最轻量的前端框架-VanillaJS
  12. mysql中文显示问号,不能识别中文的解决方案
  13. 每日算法系列【LeetCode 309】最佳买卖股票时机含冷冻期
  14. 46.网络安全与主机基本防护:限制端口、网络升级与 SELinux
  15. python ImportError: cannot import name Template解决方法
  16. LoadRunner教程06:录制测试脚本
  17. 解决Nvidia 显卡驱动安装失败的方法
  18. MLY -- 8.Establish a single-number evaluation metric for your team to optimize
  19. C语言——循环语句(详解)
  20. 在c语言中pwm的作用,PWM调速的C语言程序编写(非常简单);

热门文章

  1. 电子电气架构车载网关系列——常见网关芯片特点
  2. FPGA移植软核的原理
  3. idea右边依赖爆红的解决方案
  4. windows10企业版安装西门子博途V15---03安装仿真软件
  5. 计算机硬盘的容量的最小,这些游戏的大小竟然有100G以上,硬盘小的电脑就不要考虑了...
  6. (1)三相同步电机基础参数测量
  7. 快速学习-机器学习(线性代数[概率统计])
  8. javascript性能优化
  9. 房贷利率有没有套路?这是我见过最透彻的Python版解读!
  10. 【挖坑待填】今天的劣势 + 明天的解决方式 = 后天的优势