转录因子调控网络
SCENIC (Single-Cell rEgulatory Network Inference and Clustering) 是从单细胞RNA数据推断基因调控网络及其相关细胞状态的工具。
原作者将SCENIC应用于肿瘤和小鼠大脑单细胞图谱数据,证明了顺式调控网络分析能够有助于深入挖掘细胞异质性背后的生物学意义,并为疾病的诊断、治疗以及发育分化的研究提供有价值的线索。
SCENIC在2017年首先发表于nature methods,2020年又将流程整理后发表于nature protocls。有R版和python版本。
SCENIC 工作流程
官方手册
vignetteFile <- file.path(system.file('doc', package='SCENIC'), "SCENIC_Running.Rmd")
file.copy(vignetteFile, "SCENIC_myRun.Rmd")
# or:
vignetteFile <- "https://raw.githubusercontent.com/aertslab/SCENIC/master/vignettes/SCENIC_Running.Rmd"
download.file(vignetteFile, "SCENIC_myRun.Rmd")
构建基因调控网络(GRN):
- 根据共表达确定每个 TF 的潜在靶基因:
- 过滤表达式矩阵并运行 GENIE3/GRNBoosrt
- 将GENIE3/GRNBoost中的目标格式化为共表达模块。
- 基于DNA-motif分析选择潜在的直接结合靶标(调控子)(RcisTarget: TF motif analysis)
识别细胞状态及其调节因子:
- 分析每个单独单元(AUCell)中的网络活动
- 细胞中的评分规则(计算AUC)
- 将网络活动转换为二进制活动矩阵
- 基于基因调控网络活性(细胞聚类)鉴定稳定的细胞状态并探索结果
准备包和数据
装包
SCENIC的workflow主要依赖三个R包的支持:
-
GENIE3
:用于共表达网络的计算(也可以用GRNBoost2替代) -
RcisTarget
:转录因子结合motif的计算 -
AUCell
:识别单细胞测序数据中的激活基因集(gene-network)dir.create(“./SCENIC”) #构建SCENIC分析文件夹
setwd(“SCENIC”)
dir.create(“D:/R/seurat/SCENIC/cisTarget_databases”)#构建数据库文件夹
setwd(“D:/R/seurat/SCENIC/cisTarget_databases”)#导入相关R包
if(!require(SCENIC))
BiocManager::install(c(“AUCell”, “RcisTarget”),ask = F,update = F);
BiocManager::install(c(“GENIE3”),ask = F,update = F)#这三个包显然是必须安装的
if(!require(SCopeLoomR))
devtools::install_github(“aertslab/SCopeLoomR”, build_vignettes = TRUE)#SCopeLoomR用于获取测试数据if (!requireNamespace(“arrow”, quietly = TRUE))
BiocManager::install(‘arrow’)if(!require(SCENIC))
devtools::install_github(“aertslab/SCENIC”)if (!requireNamespace(“BiocManager”, quietly = TRUE))
install.packages(“BiocManager”)
options(“repos” = c(CRAN=“https://mirrors.tuna.tsinghua.edu.cn/CRAN/”))
options(BioC_mirror=“https://mirrors.tuna.tsinghua.edu.cn/bioconductor”)
install.packages(“feather”)
install.packages(“doRNG”)
install.packages(“KernSmooth”)
install.packages(“doMC”, repos=“http://R-Forge.R-project.org”)
install.packages(“DT”)install.packages(“shiny”)
BiocManager::install(‘shiny’)
#bioconductor版本小于4.0或你的R(3.6)的版本也比较老,你可能得试试下面的方法进行安装
devtools::install_github(“aertslab/SCENIC@v1.1.2”)
devtools::install_github(“aertslab/AUCell”)
devtools::install_github(“aertslab/RcisTarget”)
devtools::install_github(“aertslab/GENIE3”)
加载数据
输入数据的表达矩阵为gene-summarized counts,不同于其他进阶分析的是,输入的数据最好是raw counts或normalized counts。计算后的TPM或FPKM/RPKM之类也是允许的, 但是这些可能会导致人为的共变量引入,避免节外生枝,推荐用raw count。但总的来说,** raw (logged) UMI counts**, normalized UMI counts, 和TPM都能产生值得信赖的效果
### Load data
loomPath <- system.file(package="SCENIC", "examples/mouseBrain_toy.loom")
library(SCopeLoomR)
loom <- open_loom(loomPath)#获取loom文件
exprMat <- get_dgem(loom)#取出表达信息
cellInfo <- get_cell_annotation(loom)#获取注释信息
close_loom(loom)
而Python版的SCENIC是推荐使用loom作为输入数据的,在参考文章SCENIC单细胞转录因子预测|3.软件安装与数据准备中会教大家如何利用表达矩阵和注释信息创建loom文件(to loom)
SCENIC工作流的主要命令的概述
在后面会有更详细的步骤
###初始化 SCENIC 设置,设置分析环境
library(SCENIC)
#options(max.connections = 256)#增加最大连接数
data(list="motifAnnotations_mgi_v9", package="RcisTarget")
motifAnnotations_mgi <- motifAnnotations_mgi_v9
scenicOptions <- initializeScenic(org="mgi", dbDir="D:/R/seurat/SCENIC/cisTarget_databases", nCores=10)
# scenicOptions@inputDatasetInfo$cellInfo <- "int/cellInfo.Rds"
saveRDS(scenicOptions, file="int/scenicOptions.Rds")
##### 构建Co-expression network
#基因过滤/选择,去除最有可能是噪音的基因
genesKept <- geneFiltering(exprMat, scenicOptions,minCountsPerGene=3*.01*ncol(exprMat),minSamples=ncol(exprMat)*.01)
exprMat_filtered <- exprMat[genesKept, ]
runCorrelation(exprMat_filtered, scenicOptio