Scenic转录因子调控实操示例

Scenic转录因子调控实操示例

激活环境

#不同环境安装不同的分析软件,适用于不同的分析
conda activate SCENIC

创建分析目录并打开R

mkdir SCENIC
cd SCENIC
R
#Install dependencies
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
BiocManager::install(c("GENIE3", "AUCell", "RcisTarget"), version = "3.8")
install.packages("foreach")
if (!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")
devtools::install_github("aertslab/SCopeLoomR", build_vignettes = TRUE)

## Optional (but highly recommended):
# To score the network on cells (i.e. run AUCell):
BiocManager::install(c("zoo", "mixtools", "rbokeh"),ask = F,update = F) 
# For various visualizations and perform t-SNEs:
BiocManager::install(c("DT", "NMF", "ComplexHeatmap", "R2HTML", "Rtsne"),ask = F,update = F)


##Install SCENIC
if (!requireNamespace("devtools", quietly = TRUE)) {install.packages("devtools")}
devtools::install_github("aertslab/SCENIC") 
packageVersion("SCENIC")

开始分析

一 输入数据loom文件

1 加载分析软件包

#SCENIC分析
library(SCENIC)

#对loom文件操作
library(SCopeLoomR)

#SCENIC依赖的软件包
library(foreach)

2 下载分析所属物种数据库:(人、小鼠、果蝇,数据大小通常超过 1GB,哺乳动物区域数据库为 100GB)

#人
#dbFiles <- c("https://resources.aertslab.org/cistarget/databases/homo_sapiens/hg19/refseq_r45/mc9nr/gene_based/hg19-500bp-upstream-7species.mc9nr.feather","https://resources.aertslab.org/cistarget/databases/homo_sapiens/hg19/refseq_r45/mc9nr/gene_based/hg19-tss-centered-10kb-7species.mc9nr.feather")  

#小鼠
#dbFiles <- c("https://resources.aertslab.org/cistarget/databases/mus_musculus/mm9/refseq_r45/mc9nr/gene_based/mm9-500bp-upstream-7species.mc9nr.feather","https://resources.aertslab.org/cistarget/databases/mus_musculus/mm9/refseq_r45/mc9nr/gene_based/mm9-tss-centered-10kb-7species.mc9nr.feather")  

#果蝇
#dbFiles <- c("https://resources.aertslab.org/cistarget/databases/drosophila_melanogaster/dm6/flybase_r6.02/mc8nr/gene_based/dm6-5kb-upstream-full-tx-11species.mc8nr.feather")

##创建一个文件夹保存数据库
#dir.create("/mnt/sdd/singleron_training_class/resources/SCENIC/scenic")

#设置工作目录
#setwd("/mnt/sdd/singleron_training_class/resources/SCENIC/scenic")

#下载数据库到当前工作目录
#for (featherURL in dbFiles) { download.file(featherURL, destfile=basename(featherURL))}

3 准备输入数据—表达矩阵/细胞信息表

#加载loom文件(loom文件详细介绍:https://www.jianshu.com/p/9eb324ca5ff9)
loomPath <- system.file(package="SCENIC","examples/mouseBrain_toy.loom") 
#打开loom文件
loom <- open_loom(loomPath) 
#获取表达矩阵
exprMat <- get_dgem(loom)
#表达矩阵展示
exprMat[1:4,1:4]
#获取细胞信息表(可忽略)
#cellInfo <- get_cell_annotation(loom)
#head(cellInfo)
#关闭loom文件——loom对象是文件的链接,写入操作完成之后,必需关闭文件,此次只是从中提取数据可不用关闭(考虑到loom使用的严谨性,仍将其关闭)
close_loom(loom)

4 准备数据库文件

#Initialize settings 初始设置,导入评分数据库
scenicOptions <- initializeScenic(org="mgi",dbDir="/mnt/sdd/singleron_training_class/resources/SCENIC/scenic/cisTarget_databases/",nCores=1)
  #org指定物种,mgi——mouse, hgnc——human, dmel——fly
  #dbDir指定数据库位置
  #nCores指定开启几个线程(本课程loom文件测试数据比较小,将nCores设置为1)

#向scenicOptions中添加细胞信息表(可忽略)
# scenicOptions@inputDatasetInfo$cellInfo <- "int/cellInfo.Rds"

#保存数据
saveRDS(scenicOptions,file="/mnt/sdd/singleron_training_class/resources/SCENIC/int/scenicOptions.Rds")

5 运行Scenic流程

step1 根据表达数据推断潜在的转录因子靶标

#此步会对表达矩阵进行过滤:filter旨在去除最可能是噪音的基因,只保留RcisTarget数据库中可用的基因
genesKept <- geneFiltering(exprMat, scenicOptions)   
  #使用默认参数
  #minCountsPerGene=3*.01*ncol(exprMat):保留所有样品中至少带有6个UMI reads的基因
  #minSamples=ncol(exprMat)*.01:保留下来的基因能在至少1%的细胞中检测得到
head(genesKept)
length(genesKept)
#保留数据库中有的基因用于分析
exprMat_filtered <- exprMat[genesKept, ]
#exprMat_filtered[1:4,1:4]
#计算相关性矩阵——共表达分析中既有正调控也有负调控,GENIE3无法区分,所以需要相关性矩阵辅助筛选共表达模块中与TF正相关的基因
runCorrelation(exprMat_filtered, scenicOptions)

#无论是否log转换,或使用TPM值,结果相差不大(作者亲自测试)
exprMat_filtered_log <- log2(exprMat_filtered+1)
exprMat_log <- log2(exprMat+1)
#运行GENIE3得到潜在转录因子TF——参考表达矩阵找出输入基因中有哪些TF,并计算TF与每个基因的相关性权重
runGenie3(exprMat_filtered_log, scenicOptions)

#Settings
scenicOptions@settings$dbs <- scenicOptions@settings$dbs["10kb"]
scenicOptions@settings$nCores <- 1
scenicOptions@inputDatasetInfo$org <- "mgi"

# Toy run settings
scenicOptions <- runSCENIC_1_coexNetwork2modules(scenicOptions)

step2 基于motif鉴定每个TF的潜在靶点

#使用RcisTarget对TF-motif进行富集分析
scenicOptions <- runSCENIC_2_createRegulons(scenicOptions,coexMethod=c("top5perTarget"))

step3 AUC打分

#Regulon活性评分与可视化
scenicOptions <- runSCENIC_3_scoreCells(scenicOptions, exprMat_log,skipHeatmap = TRUE,skipTsne = TRUE)
#regulonAUC矩阵转换为二进制矩阵后,重新降维聚类
scenicOptions <- runSCENIC_4_aucell_binarize(scenicOptions,skipBoxplot = TRUE,skipHeatmaps = TRUE,skipTsne = TRUE,exprMat = NULL)

#降维图中展示
#tsneAUC(scenicOptions, aucType="AUC") 
  #在哪个目录下运行,output文件夹会放在哪个目录

6 scenicOptions

6.1 regulons信息
regulons <- loadInt(scenicOptions, "aucell_regulons")
regulons <- cbind(onlyNonDuplicatedExtended(names(regulons)))
6.2 获取每个转录因子在细胞中的得分
regulonAUC <- loadInt(scenicOptions, "aucell_regulonAUC")
regulonAUC <- regulonAUC[onlyNonDuplicatedExtended(rownames(regulonAUC)),]
regulonAUC <- getAUC(regulonAUC)
6.3 TF与靶基因权重信息
regulonTargetsInfo <- loadInt(scenicOptions, "regulonTargetsInfo")
regulonTargetsInfo <- as.data.frame(regulonTargetsInfo)
regulonTargetsInfo <- regulonTargetsInfo[c("TF","gene","nMotifs","bestMotif","NES","highConfAnnot","CoexWeight")]

[图片上传失败...(image-eb6067-1651393764678)]

二 输入文件为rds(Seurat对象)

1 读取rds

data <- readRDS("")

2 准备输入数据—表达矩阵/细胞信息表

exprMat  <-  as.matrix(pbmc3k@assays$RNA@data)

cellInfo <-  pbmc3k@meta.data[,c(4,2,3)]
colnames(cellInfo)=c('CellType', 'nGene' ,'nUMI')

#查看表达矩阵/细胞信息表(下面四行代码仅用于查看数据,可以不执行)
#dim(exprMat)
#exprMat[1:4,1:4]
#head(cellInfo)
#table(cellInfo$CellType)

3 运行Scenic流程(此步与 使用loom文件作为输入一样 参考上面代码 此步运行较慢)

scenicOptions <- initializeScenic(org="hgnc",dbDir="/home/yys/data/scenic", nCores=1)
saveRDS(scenicOptions, file="int/scenicOptions.Rds")

#Co-expression network
genesKept <- geneFiltering(exprMat, scenicOptions)
exprMat_filtered <- exprMat[genesKept, ]

#下面两行代码,查看数据,可有可无
#exprMat_filtered[1:4,1:4]
#dim(exprMat_filtered)

runCorrelation(exprMat_filtered, scenicOptions)
exprMat_filtered_log <- log2(exprMat_filtered+1)
runGenie3(exprMat_filtered_log, scenicOptions)

### Build and score the GRN
exprMat_log <- log2(exprMat+1)
scenicOptions@settings$dbs <- scenicOptions@settings$dbs["10kb"]
scenicOptions <- runSCENIC_1_coexNetwork2modules(scenicOptions)
scenicOptions <- runSCENIC_2_createRegulons(scenicOptions,coexMethod=c("top5perTarget"))

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

推荐阅读更多精彩内容