今天我们来讨论下Seurat这个包的用法
QC
首先我们先介绍下UMI这个概念,UMI其实就是区分每个测序分子片段的barcode,这么做可以区分每个分子是哪一个cell表达的
我们还是采用deng这个数据做例子
首先我们构造Seurat的单细胞对象:
library(SingleCellExperiment)
library(Seurat)
library(mclust)
library(dplyr)
seuset <- CreateSeuratObject( raw.data = counts(deng), min.cells = 3, min.genes = 200 )
接着我们看一下基因的总数目与捕获到的read count的关系
VlnPlot( object = seuset,
features.plot = c("nGene", "nUMI"), nCol = 2 )
图中的UMI表示捕获到的测序分子数
GenePlot( object = seuset, gene1 = "nUMI", gene2 = "nGene" )
每个点代表一个cell,其中每个细胞检测到的基因数,以及捕获到的片段的关系(文库大小)就可以详细的表示出来了,接下来就把一些outlier去掉即可
seuset <- FilterCells( object = seuset, subset.names = c("nUMI"), high.thresholds = c(2e7) )
Normalization
采用包内的函数NormalizeData()函数即可
seuset <- NormalizeData( object = seuset, normalization.method = "LogNormalize", scale.factor = 10000 )
寻找变化大的基因
我们寻找这个的目的是,在比较基因组分析中,我们只关注差异变化的的基因,把这些基因挑出来,从而减少运算量,可采用 FindVariableGenes()即可
seuset <- FindVariableGenes( object = seuset, mean.function = ExpMean, dispersion.function = LogVMR, x.low.cutoff = 0.0125, x.high.cutoff = 3, y.cutoff = 0.5 )
降维
1.PCA
接下来,我们就着重于高变化的基因来分析即可
#去除文库带来的影响
seuset <- ScaleData( object = seuset, vars.to.regress = c("nUMI") )
#PCA
seuset <- RunPCA( object = seuset, pc.genes = [email protected], do.print = TRUE, pcs.print = 1:5, genes.print = 5 )
做这个PCA是为了看每个基因的PC贡献
由此挑出一些特征基因
接下来就是对细胞类型进行聚类
2.t-SNE
seuset <- RunTSNE( object = seuset, dims.use = 1:8, do.fast = TRUE ) TSNEPlot(object = seuset)
Marker基因
#在cluster2中寻找marker基因
markers2 <- FindMarkers(seuset, 2)
##其中2代表cluster2
VlnPlot(object = seuset, features.plot = rownames(markers2)[1:2])
接着,我们看一下marker基因在cell里面的分布情况(基于t-SNE)
FeaturePlot( seuset, head(rownames(markers2)), cols.use = c("lightgrey", "blue"), nCol = 3 )