试读基因组学单细胞测序

OSCA教程2 | Overview

2021-04-18  本文已影响0人  信你个鬼

本教程提供了单细胞数据分析的一个基本框架,教程来源:http://bioconductor.org/books/release/OSCA/overview.html

主要分为六个部分:

一张图来表示:

Workflow.png

1.实验设计:Experimental Design

问题1:技术的选择

在正式开始数据分析之前,一些关于实验设计的评论可能是有帮助的。其中,最明显的问题就是:关于技术的选择,实验技术可以大致分为以下几类:

每一个实验都有他自己的优点和缺点,具体可参考:Mereu et al. 2019; Ziegenhain et al. 2017

在实践中,基于液滴的技术是目前比较主流的技术,因为它们的高通量和低成本。基于平板的方法可以捕获其他表型信息(如形态学),并且更易于定制。基于read的方法提供了完整的转录本覆盖,这在一些应用中是有用的(如剪接,外显子组突变)。另外,基于umi的方法更受欢迎,因为它们减轻了PCR扩增噪声的影响。方法的选择取决于读者的情况——我们将简单地指出,我们的分析流程的大多数方面与技术无关。

问题2:捕获细胞数量和测序深度

另外一个问题就是:应该捕获多少细胞,测多少数据量?简单的回答就是:尽你所能的多多益善。

长一点的回答就是:根据分析目的来选择。

在本文撰写之时,一项非正式的文献调查表明,典型的基于液滴的实验将捕获1万到10万个细胞,每个细胞的测序量从1000到10000个UMIs(通常与细胞数量成反比)。基于液滴的方法也有通量和doublet率之间的权衡,影响测序的真正效率。

问题3:多样本与生物学重复

对于包含多个样本和处理的研究,实验设计与bulk RNA-Seq实验类似。一个处理应该包含多个生物学重复,并且没有批次。注意:单个的细胞不是重复。相反,我们指的是来自复制供体或培养物的样本。

2.获取Count矩阵:Obtaining a count matrix

测序数据需要转换为一个表达矩阵用于统计分析。鉴于测序数据的离散性,这通常是一个计数矩阵,包含UMIs的数量或映射到每个细胞中每个基因的读取数。量化表达的精确过程往往依赖于技术:

定量之后,我们可以将count matrix导入R,然后创建一个SingleCellExperiment对象。这一步,可以使用基本的方法read.table。对于特殊的数据格式,我们可以使用DropletUtils (for 10X data) or tximport/tximeta(for pseudo-alignment methods)包。

基于数据的来源,需要注意以下几点:

3.数据处理和下游分析

在最简单的工作流中,包含以下几步:

其他步骤,如数据整合和细胞注释,将在各自的章节中讨论。

4.快速开始:Quick start

下面,我们将使用来着Macosko et al. (2015)的数据集,这个数据主要是基于droplet-based技术,分装在scRNAseq包中。下面简单示范如果从一个count 矩阵到细胞分群分析流程。

library(scRNAseq)
sce <- MacoskoRetinaData()

# 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]

# Normalization.
sce <- logNormCounts(sce)

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

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

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

# Visualization.
plotUMAP(sce, colour_by="label")
quick-start-umap-1.png

参考资料:

上一篇 下一篇

猜你喜欢

热点阅读