生信基因功能分析工具:Orthofinder使用教程


最近Orthofinder2开始陆续更新,文章已经投发到biorkix上,在网上搜了一圈,关于Orthofinder的使用的中文教程几乎是空白的,这周就借此机会和大家一起来学习一下这款软件。

Orthofinder介绍

OrthoFinder是比较基因组学中的实用的,运行快速,准确的全面的工具。它的主要功能是,找到了正交群和直系同源物,推断出所有正交群的根基因树,并识别那些基因树中的所有基因重复事件。它还为所分析的物种推断出有根的物种树,并将基因重复事件从基因树比对到物种树的分支中。

另外,OrthoFinder还为比较基因组分析提供全面的统计数据。相比OrthoMCL, OrthoFinder使用简单安装都很简单,安装只需要用过conda就行,运行只需一组FASTA格式的蛋白质序列文件(每个物种一个)。

基础知识介绍

为了让大家更好的理解使用Orthofinder,在正式介绍其使用的流程前,先来回顾一下与之相关的生物学知识。

直系同源物和旁系同源物

Orthologs(直系同源物)是在两个物种的最后共同祖先(LCA)中来自单个基因的一对基因。直系同源物是同源性基因,是物种形成事件的结果。Paralogs(旁系同源物)是同源基因,是重复事件的结果。下图就可以看到,不同物种间的alpha-chain gene互为Orthologs(直系同源物)。这时候可以引用一个新名词orthogroup (正交群)就用来形容自一组物种的LCA中的单个基因的基因组(在图中就是alpha chain gene)。然后同一物种间alpha 和beta chain gene互为Paralogs(旁系同源物)。最后所有这些关系都可以由OrthoFinder来识别。

为什么要研究正交群?

  1. 正交群中的所有基因都来自单个祖先基因。因此,正交群中的所有基因都有类似的序列和功能。由于基因重复和丢失在进化中经常发生,一对一的直系同源物很少见,通过分析orhtogroup所有直系同源的情况(一对一,多对一,多对多),我们可以分析数据的所有情况。
  2. 直系同源物是由系统发育定义的。它不能通过氨基酸含量,密码子偏好,GC含量或其他序列相似性测量定义。在没有系统发育的情况下使用这些分数来定义,直向同源物的方法只能提供猜测。从序列相似性提供粗略的类比猜测直系同源,类似于从气味中猜测颜色。因此,真正识别直向同源物的唯一方法是通过分析系统发育树。确保直系分配正确的唯一方法是对所考虑的物种的最后共同祖先的单个基因下降的所有基因进行系统发育重建。这组基因是正交群。因此,定义直系同源的唯一方法是分析正交群。

安装

废话说了一大篇,是时候开始安装软件了。在这里推荐大家使用conda来安装,简单明了,不用担心其他Dependencies的安装

conda install orthofinder

接着准备好测试数据,为了展示的方便,我将原始测试数据重新命名:

##重命名
cd /work1/ExampleData
mv Mycoplasma_agalactiae.faa Maga.faa
mv Mycoplasma_gallisepticum.faa Mgal.faa
mv Mycoplasma_genitalium.faa Mgen.faa
mv Mycoplasma_hyopneumoniae.faa Mhyo.faa

##创建新的数据目录
mkdir Mycoplasma/
cp *faa Mycoplasma/

正式运行Orthofinder,相当简单的操作,-f输入目录,里面包含你需要运行的蛋白质fasta文件, -t 所用到的CPU数目。基本的用法就如下,更多的可以去manual中查看。

orthofinder -f Mycoplasma/ -t 2

生成的结果会存储于Results_XXX文件中,现在简单看看里面有啥。
正交群以两种不同的格式返回,一种是制表符分隔的表格格式(* .csv),另一种格式与orthoMCL(* .txt)的输出格式相同。还应该有一个名为WorkingDirectory的目录,其中包含运算过程的中间文件,例如blast结果。

cd Mycoplasma/Results_Nov10/
ll -thrl
-rw-r----- 1 hhu hhu  12K Nov 10 16:50 Orthogroups.GeneCount.csv
-rw-r----- 1 hhu hhu  59K Nov 10 16:50 Orthogroups.csv
-rw-r----- 1 hhu hhu  89K Nov 10 16:50 Orthogroups.txt
-rw-r----- 1 hhu hhu  110 Nov 10 16:50 Orthogroups_SpeciesOverlaps.csv
-rw-r----- 1 hhu hhu  33K Nov 10 16:50 Orthogroups_UnassignedGenes.csv
drwxr-x--- 6 hhu hhu 4.0K Nov 10 16:50 Orthologues_Nov10
-rw-r----- 1 hhu hhu 2.5K Nov 10 16:50 SingleCopyOrthogroups.txt
-rw-r----- 1 hhu hhu 1.5K Nov 10 16:50 Statistics_Overall.csv
-rw-r----- 1 hhu hhu 2.5K Nov 10 16:50 Statistics_PerSpecies.csv
drwxr-x--- 2 hhu hhu 4.0K Nov 10 16:50 WorkingDirectory

使用R简单分析Orthofinder的结果

安装加载以下R包

install.packages("micropan")
install.packages("phangorn")

library(micropan) 
library(phangorn)

读取Orthofinder中正交群的文件。结果文件将正交群存储为制表符分隔表,其中每一行是正交群,其名为OG,后跟7位数字(例如OG0000123)。表中的每列对应一个物种,并且与fasta文件具有相同的名称。表中的单元格包含序列ID。由于正交组可以包含来自单个物种的几个基因(即,旁系同源物),因此表中的单个cell可以包含由逗号分隔的几个序列ID。下面是读取结果文件的例子:

# Define orthofinder results directory (may vary)
resultsDir <- "orthofinder/Mycoplasma/Results_Oct22"

grpsTbl <- read.table( file.path(resultsDir,"OrthologousGroups.csv"),
                       header=T, sep = "\t", row.names = 1, stringsAsFactors=F)

# Split the comma-separated paralogs
grps <- strsplit( as.matrix(grpsTbl),", ")
# grps is now a list of character vectors..
# Add dimensions to grps:
dim(grps) <- dim(grpsTbl)
# Add row and column names:
dimnames(grps) <- dimnames(grpsTbl)

获取特定正交群的信息:

grps["OG0000018", ]```

可以清晰的看到,在对应的fa文件中,在该特定的正交群OG000018下所包含的fasta序列,其结果如下:

## $Maga.faa
## character(0)
## 
## $Mgal.faa
## [1] "Mgal_AAP56913.2" "Mgal_AAP56907.2" "Mgal_AAP56908.2"
## 
## $Mgen.faa
## [1] "Mgen_AAC71531.2" "Mgen_AAC71529.1" "Mgen_AAC71563.2"
## 
## $Mhyo.faa
## character(0)

接着让我们来看开正交群的数目,为了获得特定正交群的序列,需要在每个正交群中构建每个物种的基因数量的矩阵:

grpSize <- apply(grps,2,sapply,length)

我们可以在正交群OG0000018中检查每个物种中的旁系同源物的数量:

grpSize["OG0000018", ]

## Maga.faa Mgal.faa Mgen.faa Mhyo.faa 
##        0        3        3        0

我们还可以绘制每个正交群中存在的基因数量:

plot(table(apply(grpSize>0,1,sum)),ylab="no. orthogroups",xlab="no. genomes represented")

另外一写有趣的事我们可以查看,每个物种中只有一个直系同源的正交群(1:1:1:1正交群):

sum(apply(grpSize==1,1,all)) # number of 1:1:1:1 groups
## [1] 254

正好只存在于两个物种(1:1:0:0正交群)的正交群:

sum(apply(grpSize==1,1,sum)==2 & apply(grpSize > 1,1,sum)==0)
## [1] 155

让我们找出这个数字背后所对应的物种:

# get the 1:1:0:0 groups
is1100 <- apply(grpSize==1,1,sum)==2 & apply(grpSize > 1,1,sum)==0

spcs <- sub("\\.faa","",colnames(grps)) # get species names

# Count the combination of species-pairs in the 1:1:0:0 groups
table(apply(grpSize[is1100, ], 1, function(grpSizeRow){
  paste(spcs[ grpSizeRow==1 ], collapse="&")
}))
## 
## Maga&Mgal Maga&Mgen Maga&Mhyo Mgal&Mgen Mgal&Mhyo Mgen&Mhyo 
##        15         2        57        70         8         3

基本的用法和分析就讲解到这里,当然这只是最基本的东西。其结果涉及到的下游分析还有很多很多,例如构建直系同源基因树等等的知识,大家可以自行进行探讨。

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

推荐阅读更多精彩内容