美文网首页单细胞学习
【SCENIC】安装测试1(R版本)

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

作者: jjjscuedu | 来源:发表于2023-09-23 14:55 被阅读0次

    今天开始测试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再提取,绘制效果要好。

    相关文章

      网友评论

        本文标题:【SCENIC】安装测试1(R版本)

        本文链接:https://www.haomeiwen.com/subject/orlavdtx.html