单细胞 RNA 测序(scRNA-Seq)分析一条龙(入门)
工具准备
- R语言:Linux下无root权限安装R语言(conda安装和普通安装)
- python:conda安装
- cellranger:后面用到会说
概述/扫盲
什么是单细胞 RNA 测序(scRNA-Seq)数据?
单细胞 RNA 测序(single-cell RNA seq,scRNA-Seq)是一种用于分析单个细胞中基因表达水平的技术。即可以在单个细胞的水平上检测 RNA 表达。
- 传统的 RNA 测序( Bulk RNA-Seq)方法只能测量样本整体的表达水平,而不能反映细胞间的异质性。
单细胞 RNA 测序(scRNA-Seq)数据的预处理流程:
- 原始测序结果 FASTQ文件:主要包含多对 核苷酸序列和 质量分数 的FASTQ文件。(核苷酸序列中包含区别不同细胞的信息)(质量分数表明核苷酸序列的可信程度)
- 细胞 × 基因表达矩阵 .h5ad/.h5/10x文件:将 FASTQ 文件中的序列与参考基因组进行比对,并计算每个基因在每个细胞中的表达量,生成一个 细胞 × 基因表达矩阵,以便于后续分析。
- 质量控制:通过对细胞 ×基因表达矩阵进行质量检查,筛除低质量的数据,例如表达基因量小于50的细胞,提高数据质量。
说明: 存储细胞 × 基因表达矩阵的文件有很多种,常用的有.h5ad/.h5/10x/tsv 等等。但是存储原始测序结果的99.99%是FASTQ文件。
从什么地方收集单细胞数据?
-
GEO数据库:存储细胞 × 基因表达矩阵h5ad 文件,
注意:提交到GEO的数据,大都是进行质量控制后的数据。 -
SRA数据库: 存储原始测序结果FASTQ 文件,
原始测序结果 FASTQ 文件
原始 RNA 测序数据大概率在 FASTQ 文件中。它是一种基于文本的格式,用于存储由单字母代码表示的读序列。 FASTQ 文件中的序列以@
符号开头的readID开始,然后是序列数据行,一个简单的加号+
分隔符和碱基质量分数。
它以以下格式表示:
@ReadID
READ SEQUENCE
+
SEQUENCING QUALITY SCORES
一般来说,fastq 文件是使用质量控制工具(如 FastQC)进行预处理的。这将输出一系列评估序列 reads 质量的指标。
⚠️但是fastq文件不一定是 单细胞 RNA-Seq
FASTQ 文件是一种通用的测序数据格式,广泛应用于各种类型的测序实验,包括但不限于:
- 常规的 RNA-Seq(转录组测序)
- DNA-Seq(基因组测序)
- ChIP-Seq(染色质免疫沉淀测序)
- 单细胞 RNA-Seq(如 10x Genomics 平台生成的单细胞测序数据)
- 全外显子组测序、小片段测序等
下载fastq文件
数据库介绍
代码下载fastq数据
Browsing NCBI with rentrez 使用rentrez访问NCBI数据库
安装Toolkits,使用prefetch下载SRA数据库的fastq数据
细胞 × 基因表达矩阵
一般不会对fastq文件进行分析,需要先通过软件将fastq文件转化为 细胞 × 基因表达矩阵(一般为10x / h5ad文件),一般最常用的是Cell ranger,后面会讲解使用教程。其他工具还有:STARsolo,Doublets等等。
细胞 × 基因表达矩阵 存储方式 介绍与读取
下面几种数据存储的核心数据都是一样的,只是格式不同。
数据读入采取scanpy库进行:scanpy库是用于单细胞数据分析的 Python 库
读取请看:单细胞数据_不同类型的数据介绍与Scanpy读取
.h5ad(anndata 数据格式)
.h5ad数据结构解释(anndata 数据格式)
官方网站:https://anndata.readthedocs.io/en/latest/ ,下面的内容官网都有
h5ad文件提供了一种可扩展的方式来记录数据及其注释 (annotation),主要包含X, obs, var, uns等多个部分,分别存储不同的信息。结构如下图所示
主要由以下几部分构成:
功能 | 数据类型 | 说明 | |
---|---|---|---|
adata.X | 表达量矩阵 | ndarray,scipy sparse,matrix, DataFrame | X用来联系obs和var,其中行代表细胞,列代表基因,每个元素的值代表该基因在该细胞中的表达量。 |
adata.obs | 观察值数据 | DataFrame,Mapping[str, Iterable[Any]] | obs从不同维度描述细胞的信息,不同数据集不同。 |
adata.var | 特征和高可变基因数据 | DataFrame,Mapping[str, Iterable[Any]] | var从不同维度描述基因的结果,不同数据集不同。 |
adata.uns | 非结构化注释 | Mapping[str, Any] | 其他注释 |
- 其余看官方解释吧
.h5 (HDF5)
Hierarchical Data Format (HDF5)文件,HDF5 是一种用于存储和组织大规模科学数据的文件格式。在单细胞数据中,可以使用 HDF5 存储表达矩阵、基因和细胞的元数据等信息。
AnnData的.h5ad文件,是基于 HDF5 的文件格式,参考h5ad即可。
注意:.h5ad和.h5两个读取方式不同
10x_mtx(cell ranger输出,三个文件)
就是cell ranger上游比对分析产生的3个文件:
├── xxx_feature_bc_matrix
│ ├── barcodes.tsv.gz:细胞标签(barcode)
│ ├── features.tsv.gz:基因ID(feature)
│ └── matrix.mtx.gz:表达数据(matrix),该文件包含了一个稀疏矩阵,其中每一行代表一个基因,每一列代表一个细胞,每个元素则表示基因在相应细胞中的表达量
具体文件格式如下:
>barcodes.tsv.gz
AAACCCAAGAAACCCA-1
AAACCCAAGAAAGTCT-1
AAACCCAAGAAATTGC-1
AAACCCAAGAACAAGG-1
============
>features.tsv.gz
ENSG00000243485 MIR1302-2HG Gene Expression
ENSG00000237613 FAM138A Gene Expression
ENSG00000186092 OR4F5 Gene Expression
ENSG00000238009 AL627309.1 Gene Expression
============
>matrix.mtx.gz
%%MatrixMarket matrix coordinate integer general
%metadata_json: {"software_version": "Cell Ranger cellranger-8.0.1", "format_version": 2}
36601 643092 12843054
19846 1 1
8208 2 1
31505 3 1
22399 4 1
对于R语言,一般先使用read10X()对这三个文件进行整合,得到行为基因、列为细胞的表达矩阵(为稀疏矩阵dgCMatrix格式,节约内存);然后再配合CreateSeuratObject()函数创建Seurat对象
tsv/csv/txt/tab(一个文件)
提醒:.gz是一种压缩格式,.gz前的只要是这几个数据类型,就可以使用。
这些文件本质都是txt,文件里面包含了转成10x_mtx 格式的所有信息:
- 第一行是条形码(基因序列)(barcodes.tsv.gz)
- 第一列是基因(features.tsv.gz)
- 其余就是0/1矩阵(reads 计数)(matrix.mtx.gz)
分析fastq数据(->10x文件 / h5ad文件)
一般不会对fastq文件进行分析,需要先通过软件将fastq文件转化为10x文件/ h5ad文件,一般常用的是Cell ranger,后面会讲解使用教程。其他工具还有:STARsolo,Doublets。
使用Cell ranger分析单细胞数据
Cell Ranger 是一组分析管道,用于处理 Chromium 单细胞数据以对齐 reads,生成特征条形码矩阵,执行聚类和其他二次分析等等。 它帮助我们生成 RNA reads 计数矩阵,我们将在学习中使用。
注意:只有10x的数据才能用Cell ranger分析,除了10x数据还有其他获取单细胞RNA-seq测序的方式
点击查看广泛应用的scRNA-seq技术汇总
转自:https://shixiangwang.github.io/posts/2023-07-13-fundamentals-of-scrnaseq-analysis
Methods | Transcript coverage | UMI possibility | Strand specific | References |
---|---|---|---|---|
Tang method | Nearly full-length | No | No | Tang et al. (2009) |
Quartz-Seq | Full-length | No | No | Sasagawa et al. (2013) |
SUPeR-seq | Full-length | No | No | X. Fan et al. (2015) |
Smart-seq | Full-length | No | No | Ramsköld et al. (2012) |
Smart-seq2 | Full-length | No | No | Picelli et al. (2013) |
MATQ-seq | Full-length | Yes | Yes | Sheng et al. (2017) |
STRT-seq STRT/C1 | 5′-only | Yes | Yes | Islam et al. (2011) |
CEL-seq | 3′-only | Yes | Yes | Hashimshony et al. (2012) |
CEL-seq2 | 3′-only | Yes | Yes | Hashimshony et al. (2016) |
MARS-seq | 3′-only | Yes | Yes | Jaitin et al. (2014) |
CytoSeq | 3′-only | Yes | Yes | H. C. Fan, Fu, and Fodor (2015) |
Drop-seq | 3′-only | Yes | Yes | Macosko et al. (2015) |
InDrop | 3′-only | Yes | Yes | Klein et al. (2015) |
Chromium | 3′-only | Yes | Yes | Zheng et al. (2017) |
SPLiT-seq | 3′-only | Yes | Yes | Rosenberg et al. (2018) |
sci-RNA-seq | 3′-only | Yes | Yes | Cao et al. (2017) |
Seq-Well | 3′-only | Yes | Yes | Gierahn et al. (2017) |
DroNC-seq | 3′-only | Yes | Yes | Habib et al. (2017) |
Quartz-Seq2 | 3′-only | Yes | Yes | Sasagawa et al. (2018) |
一些概念:
- GEM 孔(以前称为 GEM 组):来自单个 10x Chromium™ 芯片通道的分隔单元(凝胶颗粒悬浮液)集合。可以从一个 GEM 孔中获得一个或多个测序文库。
- 文库(或测序文库):从单个 GEM 孔中制备的带有 10x 条形码的测序文库。借助特征条形码或 V(D)J 分析,可以从同一个 GEM 孔中创建多个文库。文库类型可能包括基因表达、抗体捕获、CRISPR 引导捕获、TCR 富集等。
- 测序 Run(或 Flowcell): A flowcell containing data from one sequencing instrument run.(这个从英文直译上很难理解,通俗的说就是一次上机测序得到的数据流)
详细使用教程: 使用Cell ranger分析单细胞数据
质量控制
常见质量控制指标含义
以h5ad用python处理为例
(1)obs
-
n_genes_by_count:细胞中计数呈阳性的基因数量。(一个细胞中有多少种基因。)
-
total_counts:细胞的计数总数(该细胞的基因总数),这也可能称为库大小。
-
pct_counts_mt:线粒体细胞总数的比例。
(2)var
- n_cells_by_counts:所有细胞中表达该基因的细胞数目
- mean_counts:所有细胞中该基因表达的平均值
- pct_dropout_by_counts:未表达该基因的细胞占细胞总数的百分比
- total_counts:所有细胞中,基因的表达量总和
Python使用Scanpy计算质量控制指标
请看:scanpy计算n_genes_by_counts和total_counts等质量控制指标
相关教程:
-
Python 单细胞分析教程(一):质量控制
https://cloud.tencent.com/developer/article/2320174 -
单细胞测序最好的教程(十):万能的Transformer与细胞注释
https://cloud.tencent.com/developer/article/2326642 -
基于python的单细胞数据预处理-降维可视化
https://blog.csdn.net/qq_40943760/article/details/138717289 -
基于python的单细胞数据预处理-质量控制
https://blog.csdn.net/qq_40943760/article/details/138585941
R语言使用Seurat 进行分析
网上有很多,推荐一个:
使用 Seurat 进行分析:
https://shixiangwang.github.io/posts/2023-07-13-fundamentals-of-scrnaseq-analysis/#使用-seurat-进行分析