数据处理
1.加载原始数据
首先要加载 scRNA-seq 原始数据:
library(Scillus)
library(tidyverse)
library(Seurat)
library(magrittr)
scRNA <- load_scfile(m)
Scillus 将为每个样本创建Seurat
对象并自动调用PercentageFeatureSet()
函数来计算线粒体基因百分比。得到的scRNA
结果是多个 Seurat 对象的列表。它的长度等于原始数据的行数m
:
length(scRNA)
[1] 6
2.绘制质控图
QC 图可以由plot_qc()
绘制。可以使用 ggplot 的语法自定义生成相应的图(如axis.title、theme 等)。
plot_qc(scRNA, metrics = "percent.mt")
plot_qc(scRNA, metrics = "nFeature_RNA")
plot_qc(scRNA, metrics = "nCount_RNA")
plot_qc()
有3个可选参数:plot_type
,group_by
,和pal_setup
。
默认值plot_type
就是"combined"
,这意味着这两个箱形图和小提琴同时绘制。如果仅首选两个绘图中的一个,则可以将其设置为"box"
或"violin"
。
plot_qc(scRNA, metrics = "percent.mt", plot_type = "box")
"density"
用于绘制密度图。请注意,可以添加额外的 ggplot 语法(此处为log10转换)。
plot_qc(scRNA, metrics = "nCount_RNA", plot_type = "density") + scale_x_log10()
)
group_by
的默认值是"sample"
,其对应于sample
在原始数据列表m
。由于加载过程中包含metadata数据,QC 质控结果也可以通过这些因素绘制,例如"group"
(group
对应于metadata数据中的列m
)。
plot_qc(scRNA, metrics = "percent.mt", group_by = "group")
该参数pal_setup
支持三种类型的输入:
-
RColorBrewer
调色板名称 - 调色板设置数据框(查看上一节的最后一部分)
- 手动指定的颜色向量。默认值是调色板
"Set2"
plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = "Accent")
plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = pal)
plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = c("purple","yellow"))
3.过滤和整合
该filter_scdata()
函数用于 Seurat 对象子集化。subset
参数的语法与Seurat 对象的subset()
函数相同。将自动绘制条形图以显示过滤前后的细胞数量。
scRNA_f <- filter_scdata(scRNA, subset = nFeature_RNA > 500 & percent.mt < 10)
过滤后的 Seurat 对象列表scRNA_f
将由Seurat 标准流程进一步处理:
scRNA_f %<>%
purrr::map(.f = NormalizeData) %>%
purrr::map(.f = FindVariableFeatures) %>%
purrr::map(.f = CellCycleScoring,
s.features = cc.genes$s.genes,
g2m.features = cc.genes$g2m.genes)
Seurat 对象列表scRNA_f
可以合并为一个单独的 Seurat 对象scRNA_int
以进行整合分析:
scRNA_int <- IntegrateData(anchorset = FindIntegrationAnchors(object.list = scRNA_f, dims = 1:30, k.filter = 50), dims = 1:30)
scRNA_int %<>%
ScaleData(vars.to.regress = c("nCount_RNA", "percent.mt", "S.Score", "G2M.Score"))
scRNA_int %<>%
RunPCA(npcs = 50, verbose = TRUE)
scRNA_int %<>%
RunUMAP(reduction = "pca", dims = 1:20, n.neighbors = 30) %>%
FindNeighbors(reduction = "pca", dims = 1:20) %>%
FindClusters(resolution = 0.3)
4.Factoring
通过refactor_seurat()
分解Seurat对象元数据是一个可选步骤,主要是为了更好地绘图。该函数将元数据m
作为参数,并使Seurat对象元数据与m
中的元数据相同的因子级别。如果没有提供metadata
参数。Seurat 对象元数据中的所有字符向量都将被分解。
m %<>%
mutate(group = factor(group, levels = c("Normal", "CTCL")))
scRNA_int %<>%
refactor_seurat(metadata = m)
参考文献:
https://github.com/xmc811/Scillus