setwd("D:/R/project/project1")#设置路径
rm(list = ls()) #释放Enviroment中的空间(删除数据)
library(SCENIC)
## Load data 使用SCENIC中自带的mouseBrian_toy数据
loomPath <- system.file(package="SCENIC", "examples/mouseBrain_toy.loom")
library(SCopeLoomR)
loom <- open_loom(loomPath)
exprMat <- get_dgem(loom)#共表达矩阵
cellInfo <- get_cell_annotation(loom)
close_loom(loom)
dim(exprMat)#矩阵的大小
exprMat[1:4,1:4]#展示矩阵前4*4
class(cellInfo)
dim(cellInfo)
head(cellInfo)#展示cellInfo数据的前6行
table(cellInfo$CellType)#统计cellInfo数据中CellType的种类和每一类各自的数量
### Initialize settings数据库文件的使用
#解决报错:object 'motifAnnotations_mgi' not found
data(list="motifAnnotations_mgi_v9", package="RcisTarget")
motifAnnotations_mgi <- motifAnnotations_mgi_v9
# 保证 cisTarget_databases_mc9 文件夹下面有下载好2个大约1G的小鼠mc9(或者人类hg19/hg38文件)
#nCore的数值可能与硬件设备相关,一般推荐设置为1
# scenicOptions@inputDatasetInfo$cellInfo <- "int/cellInfo.Rds"
#会在路径中生成output文件夹
scenicOptions <- initializeScenic(org="mgi", dbDir="cisTarget_databases_mc9", nCores=1)
#将生成的scenicOptions.Rds放在D:/R/project/project1/路径中的新文件夹int
saveRDS(scenicOptions, file="D:/R/project/project1/int/scenicOptions.Rds")
### Co-expression network构建共表达网络
genesKept <- geneFiltering(exprMat, scenicOptions)
exprMat_filtered <- exprMat[genesKept, ]
exprMat_filtered[1:4,1:4]
runCorrelation(exprMat_filtered, scenicOptions)
exprMat_filtered_log <- log2(exprMat_filtered+1)
runGenie3(exprMat_filtered_log, scenicOptions)
runSCENIC_1_coexNetwork2modules(scenicOptions)
runSCENIC_2_createRegulons(scenicOptions, coexMethod=c("top5perTarget")) # Toy run settings
#报错:could not find function "%dopar%"使用下面的代码(可能不好用),但是重启RStudio有时候也能解决,建议重启
#install.packages("doSNOW")
#install.packages("doParallel")
#install.packages("doMPI")
#library(foreach)
#library(iterators)
#library(snow)
#library(doSNOW)
#library(parallel)
#library(doParallel)
#install.packages("Rmpi")
#library(Rmpi)
#library(doMPI)
runSCENIC_3_scoreCells(scenicOptions, exprMat_filtered_log)
runSCENIC_4_aucell_binarize(scenicOptions)
#结果会放在output文件夹中
##构建网络的另一种方式,替换上面的四行代码(展示如下),可以调整一些参数
##runSCENIC_3_scoreCells(scenicOptions, exprMat_filtered_log)
##runSCENIC_4_aucell_binarize(scenicOptions)
##runSCENIC_1_coexNetwork2modules(scenicOptions)
##runSCENIC_2_createRegulons(scenicOptions, coexMethod=c("top5perTarget")) # Toy run
#library(foreach)
#library(iterators)
#library(parallel)
#library(doParallel)
#exprMat_log <- log2(exprMat+1)
#scenicOptions@settings$dbs <- scenicOptions@settings$dbs["10kb"] # Toy run settings
#scenicOptions <- runSCENIC_1_coexNetwork2modules(scenicOptions)
#scenicOptions <- runSCENIC_2_createRegulons(scenicOptions,coexMethod=c("top5perTarget"))
#scenicOptions <- runSCENIC_3_scoreCells(scenicOptions, exprMat_log )
#scenicOptions <- runSCENIC_4_aucell_binarize(scenicOptions)
#tsneAUC(scenicOptions, aucType="AUC")
以上为初步实现SCENIC示例(小鼠)的完整代码 。
参考文章: