【SCENIC】安装测试1(R版本)

今天开始测试SCENIC的安装,先测试一下R版本的。

先安装一些必要的包。

## Required

BiocManager::install(c("AUCell", "RcisTarget"))

BiocManager::install(c("GENIE3")) # Optional. Can be replaced by GRNBoost


## Optional (but highly recommended):

BiocManager::install(c("zoo", "mixtools", "rbokeh"))

# For various visualizations and perform t-SNEs:

BiocManager::install(c("DT", "NMF", "ComplexHeatmap", "R2HTML", "Rtsne"))

# To support paralell execution (not available in Windows):

BiocManager::install(c("doMC", "doRNG"))


# To export/visualize in http://scope.aertslab.org

if (!requireNamespace("devtools", quietly = TRUE)) install.packages("devtools")

devtools::install_github("aertslab/SCopeLoomR", build_vignettes = TRUE)

#最后安装SCENIC

devtools::install_github("aertslab/SCENIC")


=========下载库文件======

官网给出的下载地址为:

#人类

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")

但是,我去根据链接找的时候,在最新版本里面是根本就找不到的,需要去old文件夹中去找,才能下载到需要的文件。

#人类

https://resources.aertslab.org/cistarget/databases/old/homo_sapiens/hg19/refseq_r45/mc9nr/gene_based/

#小鼠

https://resources.aertslab.org/cistarget/databases/old/mus_musculus/mm9/refseq_r45/mc9nr/gene_based/

#果蝇

https://resources.aertslab.org/cistarget/databases/old/drosophila_melanogaster/dm6/flybase_r6.02/mc8nr/gene_based/

#官网建议放在一个特定的目录中。

dir.create("cisTarget_databases");

setwd("cisTarget_databases") 

for(featherURL in dbFiles)

{

  download.file(featherURL, destfile=basename(featherURL)) 

}

===========例子测试===========

我们先用包里自带的例子做测试,自带的是一个loom文件。

#先加载数据

loomPath <- system.file(package="SCENIC", "examples/mouseBrain_toy.loom")

library(SCopeLoomR)

library(SCENIC)

loom <- open_loom(loomPath)

exprMat <- get_dgem(loom)

cellInfo <- get_cell_annotation(loom)

close_loom(loom)


### 初始化设置,相当于导入评分数据库

scenicOptions <- initializeScenic(org="mgi", dbDir="cisTarget_databases", nCores=10)

#但是运行这一步,我这里报错了,说是找不到motifAnnotations_mgi这个对象。

报错信息

网上查了一下,也有别人碰到了同样的错误。网上建议的解决办法是:

运行上面的那个命令之前,先运行下面的这2个命令。试了试,确实不报错了。

data(list="motifAnnotations_mgi_v9", package="RcisTarget")

motifAnnotations_mgi <- motifAnnotations_mgi_v9


# scenicOptions@inputDatasetInfo$cellInfo <- "int/cellInfo.Rds"

saveRDS(scenicOptions, file="int/scenicOptions.Rds")


### Co-expression network,共表达网络计算

genesKept <- geneFiltering(exprMat, scenicOptions)

exprMat_filtered <- exprMat[genesKept, ]

runCorrelation(exprMat_filtered, scenicOptions)

exprMat_filtered_log <- log2(exprMat_filtered+1)

runGenie3(exprMat_filtered_log, scenicOptions)

#有个警告,不确定是不是库里面用的ID,和这个数据集的ID不是很匹配。

共表达网络产生了一个结果很多都在int文件夹,比如1.2_corrMat.Rds,这里面存储的就是基因之间相关性矩阵。

基因相关性矩阵

1.3_GENIE3_weightMatrix_part_1.Rds GENIE3中间结果,矩阵格式,我这里例子产生了10个;

1.4_GENIE3_linkList.Rds  GENIE3的最终结果,是把1.3那一堆文件合并在一起了。文件有三列:TF为转录因子名称,Target为潜在靶基因的名称,weight时TF与Target之间的相关性权重。

1.5_weightPlot.pdf  是关于weight的,类似于密度分布图吧。

### Build and score the GRN,主要推断共表达模块

Step 1:

exprMat_log <- log2(exprMat+1)

scenicOptions@settings$dbs <- scenicOptions@settings$dbs["10kb"] 

scenicOptions <- runSCENIC_1_coexNetwork2modules(scenicOptions)

GENIE3计算了转录因子与每个基因的相关性,接下来需要过滤掉低相关性的组合,形成共表达基因集。作者一共推荐6种都用,这六种分别为:

· w001:以每个TF为核心保留weight>0.001的基因形成共表达模块;

· w005:以每个TF为核心保留weight>0.005的基因形成共表达模块;

· top50:以每个TF为核心保留weight值top50的基因形成共表达模块;

· top5perTarget:每个基因保留weight值top5的TF得到精简的TF-Target关联表,然后把基因分配给TF构建共表达模块;

· top10perTarget:每个基因保留weight值top10的TF得到精简的TF-Target关联表,然后把基因分配给TF构建共表达模块;

· top50perTarget:每个基因保留weight值top50的TF得到精简的TF-Target关联表,然后把基因分配给TF构建共表达模块;

结果文件为1.6_tfModules_asDF.Rds,一共四列:method为6种过滤方法;corr为runCorrelation(exprMat_filtered, scenicOptions)得到的结果,1代表激活,-1代表抑制,0代表中性。SCENIC只会采用值为1,即激活的数据用于后续分析。

1.6_tfModules_asDF.Rds 具体结果如下图所示:

Step 2:

#上一步找到了每个转录因子强相关的靶基因,这一步要修建共表达模块形成有生物学意义的调控单元(regulons,我自己倾向于叫module)。对每个共表达模块进行motif富集分析,保留显著富集的motif;这一步依赖gene-motif评分数据库,行为基因,列为motif,值为排名,也就是我们下载的cisTarget数据库。使用数据库对motif进行TF注释,得到高可信度、低可信度。数据库直接注释和同源基因推断的TF为高可信度,使用motif序列相似性注释的TF为低可信度结果。

用保留的motif对共表达模块里的基因进行打分(依据cisTarget数据库),识别显著高分的基因(理解为motif里这些基因的TSS很近)。删除共表达模块中与motif评分不高的基因,剩下的基因集被称为调控单元(regulon)。

scenicOptions <- runSCENIC_2_createRegulons(scenicOptions, coexMethod=c("top5perTarget")) 

输出结果在:output/Step2_MotifEnrichment.tsv,共有11列:motifDb geneSet motif NES AUC highlightedTFs TFinDB TF_highConf TF_lowConf nEnrGenes rankAtMax enrichedGenes。

output/Step2_regulonTargetsInfo.tsv 这里存储最终的regulon文件,将第一个文件的数据整合在了一起。

output/Step2_MotifEnrichment_preview.html  还有个html的页面可以浏览。但是不知道为啥,我的流浪器不显示motif的logo图片。

Step 3: Regulon活动评分与可视化

一个regulon=一个TF与其Target gene的基因集,regulon的名称有两种写法:

TF名称+extended+靶基因数目:转录因子与所有靶基因组成的基因调控网络

TF名称+靶基因数目:转录因子与高可信靶基因(即highConfAnnot=TRUE的基因)组成的基因调控网络。AUCell对每个regulon在各个细胞中的活性进行评分。评分的基础是基因表达值,分数越高代表基因集的激活程度越高。这一步要用所有细胞做计算。

scenicOptions <- runSCENIC_3_scoreCells(scenicOptions, exprMat_log)


Step 4:生成二进制的regulon活性矩阵

scenicOptions <- runSCENIC_4_aucell_binarize(scenicOptions)


===============几种结果可视化形式=============

1.  Regulon Activity heatmap

step3有所有regulon在细胞的AUCscore热图Step3_RegulonActivity_heatmap.pdf

2. Binary Regulon Activity Heatmap

step4则生成多个热图Step4_BinaryRegulonActivity_Heatmap*

3. Cell-type specific regulators (RSS)

当细胞种类比较多时可以用RSS来识别细胞类型特异性regulons。

regulonAUC <- loadInt(scenicOptions, "aucell_regulonAUC")

rss <- calcRSS(AUC=getAUC(regulonAUC), cellAnnotation=cellInfo[colnames(regulonAUC), "CellType"], )

rssPlot <- plotRSS(rss)

rssPlot$plot

得到热点图,颜色深浅代表z-score值,点的大小代表RSS评分。

然后就可以挑选各个细胞类型代表性regulon绘制热图等等啦。

注:帖子里面大家给出的建议是:根据regulon list提取到norm的AUCscore之后,再scale(计算z-score)比直接计算所有regulons的z-score再提取,绘制效果要好。

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

推荐阅读更多精彩内容