一、数据前处理
#保持好习惯,先清空一下环境,设置保存路径
rm(list = ls())
setwd("")
1.数据读取
载入包
#载入程辑包
#multtest包安装tips,
#install.packages("BioManager")
#BiocManager::install("multtest"),
##如果出现显示R版本不符的error不要着急换R版本,直接打开R软件选择就近的镜像安装。
library(multtest)
library(Seurat)
library(dplyr)
library(patchwork)
library(R.utils)
导入数据
CreateSeuratObject用于创建Seurat对象
pbmc.data <- Read10X(data.dir = "hg19")
#Load the PBMC dataset,创建Seurat对象,counts为读取的源文件,project为Seurat对象想保存的文件名,
#可以加上限定条件:min.cells为组织中分离的最少细胞数,min.features为一个细胞中测出的最少的基因数量
pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k", min.cells = 3, min.features = 200)
#查看pbmc中细胞数量的3个方法
pbmc
## An object of class Seurat
## 13714 features across 2700 samples within 1 assay ,细胞数量是2700个
## Active assay: RNA (13714 features, 0 variable features)
ncol(pbmc)
## [1] 2700
ncol(pbmc.data)
2.进行质控
我们提到单细胞数据质控的时候,⼀般是指细胞的过滤,其实是从⼀个barcode X gene矩阵中过滤掉⼀部分不是细胞的barcode,如细胞碎⽚,双细胞,死细胞等。这三类barcode的特征可以通过其对应的基因表达情况来描述:nCount(总基因表达数)、nFeature(总基因数)、
percent.HB(红细胞基因表达⽐例)、percent.MT(线粒体基因表达⽐例)。nCount和nFeature过⾼可能是双细胞,过低可能是细胞碎⽚。percent.HB刻画红细胞⽐例,percent.MT刻画细胞状态,值过⾼可能是濒临死亡的细胞
PercentageFeatureSet 函数是根据counts总数相除算的打分:该基因集的counts总和/所有基因的counts总和。
基因集占的百分比 = 分子 / 分母 * 100;
分子: 指定基因的 counts种总和,在这次分析中是指细胞的线粒体基因转录本数
分母: 从 meta.data 获取 nCount_RNA 列,就是每个cell中所有基因的 counts总和
这个函数的意思是,每个细胞的线粒体的基因数/细胞总基因数的百分比,将作为一列数据加到pbmc的metadata中,这一列的列名为“percent.mt"
#进行质控,计算每个细胞的线粒体基因转录本数的百分比(%),使用[[ ]] 操作符存放到metadata中;
#分析的时候要确认好物种,如果是小鼠的,要用mt
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")
#在创建对象 CreateSeuratObject() 的过程中,会自动计算细胞中独特基因与总基因数目,可以在目标对象中找到
head(pbmc@meta.data,5)
orig.ident nCount_RNA nFeature_RNA percent.mt
AAACATACAACCAC-1 pbmc3k 2419 779 3.0177759
AAACATTGAGCTAC-1 pbmc3k 4903 1352 3.7935958
AAACATTGATCAGC-1 pbmc3k 3147 1129 0.8897363
AAACCGTGCTTCCG-1 pbmc3k 2639 960 1.7430845
AAACCGTGTATGCG-1 pbmc3k 980 521 1.2244898
3.质控结果的可视化
目的:通过可视化质控结果,进一步去掉低质量的数据
(1)小提琴图,将pbmc中的meta@data中的3个指标成图
#(1)将QC结果展示为小提琴图,features中的名称加引号,ncol=3表示图形分三列展示
VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)