GENIE3构建GRN
主要记录如何使用 GENIE3 构建基因调控网络(GRN)。
1.安装
GENIE3 支持从 Bioconductor 上安装,运行如下代码安装。
BiocManager::install("GENIE3")
2.使用说明
主要分为数据准备、计算权重矩阵和提取对应关系三部分,其中核心部分是使用GENIE3
函数计算出权重举证。
2.1 数据准备
表达数据有下面几点要求:
- 数据类型为 matrix
- 行为基因列为细胞
- 无需标准化
rm(list = ls())
library(GENIE3)
exprMatr <- matrix(sample(1:10, 100, replace=TRUE), nrow=20)
rownames(exprMatr) <- paste("Gene", 1:20, sep="")
colnames(exprMatr) <- paste("Sample", 1:5, sep="")
head(exprMatr)
2.2 运行 GENIE3
2.2.1 使用默认参数
set.seed(123) # 设置随机种子,确保结果的可重复性
weightMat <- GENIE3(exprMatr)
weightMat[1:5,1:5]
weightMat 是一个包含所有基因间调控关系权重的矩阵,数值越大越越可靠。weightMat[i,j] 表示从第 i 个基因到第 j 个基因的调控权重,注意这里是有顺序,比如从 A 基因到 B 基因和从 B 基因到 A 基因的权重一般是不一样的。
2.2.2 使用子集
人的基因有 2 w 左右,若全部进行分析,不仅会增加计算时间,而且获得的矩阵会包含许多噪音,从而掩盖所需的调控网络,这种情况下就可以使用 regulators
参数挑选一些感兴趣的基因集(根据实际需求选择,如差异基因集、通路基因集等)再进行计算。
# 可以输入基因在exprMatr中的位置
regulators <- c(2, 4, 7)
# 也可以直接输入基因名
regulators <- c("Gene2", "Gene4", "Gene7")
weightMat <- GENIE3(exprMatr, regulators=regulators)
上面结果就会得到一个 3 行 10 列的基因调控权重矩阵。
2.2.3 修改 tree-based method 的相关参数
GENIE3 是基于 regression trees 构建的,内置了 Random Forest method (RF, default) 和 Extra-Trees method (ET) 两种方法,通过 treeMethod
参数来选择方法,具体两种方法适用的数据特点可自行查阅相关资料。两个方法中还包含下面两个参数:
K
: Number of candidate regulators randomly selected at each tree node (for the determination of the best split)ntrees
: Number of trees in an ensemble for each target gene. Default: 1000
weightMat <- GENIE3(exprMatr, treeMethod="ET", K=7, nTrees=50)
2.2.4 并行计算
在基因/样本数目比较多的情况下可以使用 nCores
参数增加线程数目来缩短计算时间。需要注意的是当线程数大于 1 时,设置随机种子便不能确保结果的可重复性。
weightMat <- GENIE3(exprMatr, nCores=4, verbose=TRUE)
2.3 获取调控关系
本质上就是把上面获得的矩阵变换成关系对,使用 melt
函数和数据框的基本操作同样可以获得如下结果,不过作者已经包装好了,能够一行代码获得结果还是比较方便的。
# 获取所有的调控关系
linkList <- getLinkList(weightMat)
# 获取top的调控关系
linkList <- getLinkList(weightMat, reportMax=5)
# 获取权重阈值以上的调控关系
linkList <- getLinkList(weightMat, threshold=0.1)
最后,同样可以构建 GRN 的软件还有GRNBoost。其速度较GENIE3 快,所以在数据量较大的情况下可以使用GRNBoost,链接地址如下:
GRNBoost:https://github.com/aertslab/GRNBoost
参考资料:
1.aertslab/GENIE3
2.GENIE3 vignette
3.GENIE3—一款预测基因调控网络的R包
4.基因调控网络 (Gene Regulatory Network) 01