Scillus——提高scRNA-seq数据的处理和可视化(二)

数据处理

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")
每个样本中的 UMI 数量

plot_qc()有3个可选参数:plot_typegroup_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()
每个样本中的 UMI 数量(密度图,log10 转换

group_by的默认值是"sample",其对应于sample在原始数据列表m。由于加载过程中包含metadata数据,QC 质控结果也可以通过这些因素绘制,例如"group"group对应于metadata数据中的列m)。

plot_qc(scRNA, metrics = "percent.mt", group_by = "group")
每组UMI数量

该参数pal_setup支持三种类型的输入:

  • RColorBrewer调色板名称
  • 调色板设置数据框(查看上一节的最后一部分)
  • 手动指定的颜色向量。默认值是调色板"Set2"
plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = "Accent")
每组线粒体read百分比(RColorBrewer 调色板名称作为调色板输入)
plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = pal)
每组中的线粒体read百分比(配置数据框作为调色板输入)
plot_qc(scRNA, metrics = "percent.mt", group_by = "group", pal_setup = c("purple","yellow"))
每组线粒体read百分比(手动指定颜色作为调色板输入)

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

你可能感兴趣的:(Scillus——提高scRNA-seq数据的处理和可视化(二))