上一部分总结了Seurat object的结构, 这一部分总结Seurat中包含的函数。
Seurat 提供了非常丰富的函数来协助单细胞数据分析,我想先把这些函数主要分为下面几种:
其一是用于提取数据的函数
包括subset, WhichCell, VariableFeatures, Cells
其二是用于处理数据的函数
包括NormalizeData, RunPCA, RunUMAP
其三是用来展示数据的函数
包括DotPlot, DoHeatmap, DimPlot, UMAPPlot, DimPlot, FeaturePlot
1 用于提取数据的函数
对Seurat对象结构有所了解之后,我们其实可以直接在Seurat对象中提取数据。可能为了方便,Seurat也提供了一些函数来帮助我们提取一些我们想要的数据。
这里用一些例子来做实际说明
1.1 提取细胞ID
获取整个object的细胞ID:Cells(object),colnames(object)
按照idents获取部分细胞ID:WhichCells(object, idents = c(1, 2))
按照基因表达获取部分细胞ID:WhichCells(object, expression = gene1 > 1), WhichCells(object, expression = gene1 > 1, slot = "counts")
1.2 提取包含部分细胞的对象
按照细胞ID提取:subset(x = object, cells = cells)
按照idents提取:subset(x = object, idents = c(1, 2))
按照meta.data中设置过的stim信息提取:subset(x = object, stim == "Ctrl")
按照某一个resolution下的分群提取:subset(x = object, RNA_snn_res.2 == 2)
当然还可以根据某个基因的表达量来提取:subset(x = object, gene1 > 1),subset(x = object, gene1 > 1, slot = "counts")
1.3 提取降维之后的坐标信息
Embeddings(object = object[["pca"]])
Embeddings(object = object[["umap"]])
2 用于处理数据的函数
Seurat作为单细胞数据处理的R包,用于处理数据的函数非常的丰富。这里做一些简单的介绍和总结。
2.1 标准化
一般用的是:NormalizeData()
可以选择的另一种:SCTransform(),SCTransform也不是简单的标准化数据,这个函数会生成data, scale.data, VariableFeature, 然后存在一个叫SCT的assay里
2.2 降维
提供了包括RunPCA, RunUMAP, RunTSNE,在每种降维算法里还可以选择不同的方法
2.3 聚类
FindClusters()
2.4 差异分析
分析特定某些idents的差异:FindMarkers(object = object, ident.1 = 1, ident.2 = 2), FindMarkers(object = object, ident.1 = c(1, 2), ident.2 = c(3, 4))
分析每个ident和其他idents的差异:FindAllMarkers(object = object)
2.5 细胞周期
CellCycleScoring(object = object, s.features = s.genes, g2m.features = g2m.genes)
2.6 基因集和的表达
Seurat给了两种选择去考虑一个基因集的整体表达情况。
计算基因模块分值(Calculate module scores for feature expression programs in single cells):AddModuleScore(object = object, features = genes, name = "Module_Score")
合计基因集表达(Aggregate expression of multiple features into a single feature):MetaFeature(object = , features = genes, meta.name = "Aggregate_Feature")
3. 用来展示数据的函数
数据的展示对于数据分析来说尤为重要,Seurat提供了多种类型的展示方式,在结果展示方面给我们提供了很多选择。而且由于Seurat很多展示方法的基础是ggplot,所以除了Seurat函数固定的那些参数以外,我们还可以有很多个性化的操作。
3.1 展示降维信息
DimPlot(object = object, reduction = reduction.name, group.by = groups, label = T)
其中,展示特定降维方法:UMAPPlot, TSNEPlot
3.2 基于降维结果展示数据表达
FeaturePlot(object = object, features = c("gene1", "gene2", "gene3", "gene4")),也可以是meta.data里的值
3.3 Violin Plot
VlnPlot(object = merged, features = c("nFeature_RNA", "nCount_RNA", "gene1", "gene2"), ncol = 2, pt.size = 0.1)
VlnPlot(object = merged, features = c("gene1", "gene2", "gene3", "gene4"), ncol = 2, pt.size = 0.1, slot = "counts")
3.4 DotPlot
DotPlot(object = object, features = genes)
3.5 DoHeatmap
DoHeatmap(object = object, features = genes)
由于不同cluster细胞数目不同,建议抽样之后再画
DoHeatmap(object = object, features = genes, cells = downsampledCells)
3.6 Scatter Plot
两个feature的Scatter: FeatureScatter(object = object, feature1 = feature1, feature2 = feature2)
两个细胞所有feature的Scatter:CellScatter(object = object, cell1 = cell1, cell2 = cell2)