如果大家没有自己的数据或者没有选到合适的数据集的话,可以直接拿示例数据(10X官网演示数据)就行了。
10X官网里多个演示数据:https://support.10xgenomics.com/single-cell-gene-expression/datasets。这里拿10k PBMC数据来演示。这里注意一下,10X数据格式与用Cellranger生成的格式一致。
具体步骤:
(一)一些必要包的读取,当然如果发现没有此包,安装便可。
library(Seurat)
library(dplyr)
library(cowplot)
(二)导入 PBMC dataset
pbmc.data <- Read10X(data.dir = "filtered_gene_bc_matrices/")
metadata <- read.table("cell_cycle.txt", header=T, row.names=1, sep="\t") ##如果有就加载,没有就注释掉
(三)创建seurat的对象
pbmc <- CreateSeuratObject(counts = pbmc.data, min.cells = 3, min.features = 200,
project = "10X_PBMC", meta.data = metadata)
pbmc
简单查看一下Seurat对象存储的信息
str(pbmc)
colnames(pbmc@meta.data)
##这里给大家再分享一种比较花里胡哨的查看方法 (感兴趣的同学可以一试,其实就是通过一个分支树来查看,就比较美观和节省空间而已)
(out <- capture.output(str(pbmc)))
out2 <- paste(out, collapse="\n")
mm(gsub("\\.\\.@","# ",gsub("\\.\\. ","#",out2)),type ="text",root= "Seurat")
(四)数据预处理--质控和细胞过滤
mito.features <- grep(pattern = "^MT-", x = rownames(x = pbmc), value = TRUE)
percent.mito <- Matrix::colSums(x = GetAssayData(object = pbmc, slot = 'counts')[mito.features, ]) / Matrix::colSums(x = GetAssayData(object = pbmc, slot = 'counts'))
pbmc[['percent.mito']] <- percent.mito
#方式二,直接利用PercentageFeatureSet函数一步搞定。
pbmc[["percent.mito"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")
VlnPlot(object = pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mito"), ncol = 3)
(五)过滤细胞
#保留线粒体基因比例在`0.05`以内(一般在15%之内均可以),检测到的基因数在`200-3000`之间的细胞。
#(这个标准根据上面那个小提琴图可以知道,标准的制定并非一成不变,得看具体得数据集情况)
pbmc <- subset(x = pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 3000 & percent.mito < 0.05)
(六)归一化数据(不同人不同得理解,有的人说是标准化,有的说是归一化,我的理解倾向于后者,因为后续还有一步ScaleData,这一步我才认为是标准化,如果我理解有误,欢迎大家指出)
pbmc <- NormalizeData(object = pbmc, normalization.method = "LogNormalize", scale.factor = 1e4)
至此,单细胞的数据质控与归一化已经完成,这里提醒一下各位,如果大家的电脑配置不高,而细胞量又比较大,我推荐大家及时把pbmc保存起来,不然可能会因为内存不足而报错,另外的一个好处就是不用重新运行这些程序了,节省时间。当然,如果你有服务器,那直接在服务器上运行就好了。