OSCA单细胞数据分析笔记-4 Overview pipeline

对应原版教程第5章http://bioconductor.org/books/release/OSCA/overview.html
本小节概述了从测序到数据分析的基本流程,让我们对scRNA-seq先有一个整体的印象。

a typical scRNA-seq analysis workflow
  • 1、上游实验简介
    • 1.1 测序技术
    • 1.2 从测序结果到表达矩阵
  • 2、下游基础流程
    • 2.1 构建SingleCellExperiment对象
    • 2.2 基础流程
    • 2.3 基础流程code quick start

1、上游实验简介

1.1 测序技术

历经10年左右发展,单细胞测序技术目前有两大主流平台。分别是10X Genomics(Droplet-based)与Smart-seq2(Plate-based with reads),各有优劣。

  • 10X Genomics:通量高(10k~100k cells),相对来说测序成本低,因此适宜全面捕获取样组织的细胞种类信息,用的也多。但测序过程会存在一定的dropout/doublet rate problem(通量越高,越影响。)

  • Smart-seq2:通量相对较低,但测序深度高,因此适宜单细胞水平的转录本或可变剪切分析,突变检测等。从某种角度上,Smart-seq2的测序结果更类似传统的Bulk RNA-seq

  • 关于这两种技术的详细区别,可参考张泽民团队2020年发表的文章,从具体实验结果角度的比较结论。https://www.sciencedirect.com/science/article/pii/S1672022921000486

    From paper:实验步骤示意图

1.2 从测序结果到表达矩阵

类似传统RNA-seq,测序得到的fastq文件,需要比对基因组、计数得到最终的表达矩阵才可以进行真正的下游数据分析。

  • 对于10X的测序数据,官方提供了御用软件CellRanger,可以比较方便得到表达矩阵结果。(简单来说首先使用STAR比对,然后统计每个基因比对到多少个UMI,作为表达量)
  • 对于Smart-seq的测序数据,则可以参考传统的RNA-seq比对、计数pipeline。
  • 此外还有一些R包,专门用来处理单细胞的fastq文件。例如作者推荐的scPipe,介绍如下(我暂时没用过,用过的朋友可以来说说咋样)

A preprocessing pipeline for single cell RNA-seq data that starts from the fastq files and produces a gene count matrix with associated quality control information. It can process fastq data generated by CEL-seq, MARS-seq, Drop-seq, Chromium 10x and SMART-seq protocols.

  • 需要格外注意的一点是:如果实验设计中加入的spike-in transcripts(比如ERCC),在比对时一定要将这些参考序列加入到我们的参考基因组中,再进行比对。否则可以理解加了也是白加。

2、下游基础流程

2.1 构建SingleCellExperiment对象

2.2 基础流程

对于scRNA-seq数据分析,包含最基本的5个步骤

  • (1)质控:过滤出不合格、或者是低质量的细胞;
  • (2)标准化:类似Bulk RNA-seq,为了使不同细胞间细胞表达更具有可比性;
  • (3)挑选高变基因:为降维做准备,降低无表达变化基因的噪音信息干扰;
  • (4)降维:最大化保留细胞特征信息的同时,降低每个细胞信息的复杂度,从近万个维度,到几十个维度;
  • (5)聚类:根据细胞的特征表达与细胞间的相似性,将这一批细胞分为若干有潜在意义的组别。

2.3 基础流程code quick start

  • 相关R包,没有的话,需要安装BiocManager::install("package_name")
  • 用法,简介可参考Bioconda的该包介绍,一般很详细的。相关函数用法会在之后教程中使用到再做介绍。

#数据包,提供很多示例scRNA-seq表达矩阵信息
library(scRNAseq)
#scRNA-seq分析工具包
library(scater)
##scRNA-seq分析工具包
library(scran)

  • 基础五步骤的代码展示

library(scRNAseq)
sce <- MacoskoRetinaData() #直接为sce格式

# (1)Quality control.
library(scater)
is.mito <- grepl("^MT-", rownames(sce))
qcstats <- perCellQCMetrics(sce, subsets=list(Mito=is.mito))
filtered <- quickPerCellQC(qcstats, percent_subsets="subsets_Mito_percent")
sce <- sce[, !filtered$discard]

# (2)Normalization.
sce <- logNormCounts(sce)

# (3)Feature selection.
library(scran)
dec <- modelGeneVar(sce)
hvg <- getTopHVGs(dec, prop=0.1)

# (4)Dimensionality reduction.
set.seed(1234)
sce <- runPCA(sce, ncomponents=25, subset_row=hvg)
sce <- runUMAP(sce, dimred = 'PCA', external_neighbors=TRUE)

# (5)Clustering.
g <- buildSNNGraph(sce, use.dimred = 'PCA')
colLabels(sce) <- factor(igraph::cluster_louvain(g)$membership)

# (5)Visualization.分群可视化
plotUMAP(sce, colour_by="label")


下一节会学习下游分析的第一步,也就是质控过程中的若干问题。

(0)

相关推荐