单细胞分析之质控(四)
学习目标
知道如何导入和读取数据,并了解数据的质控,能够对数据进行质控和分析。
1. 质控准备
在基因表达定量后,需要将这些数据导入到 R
中,以生成用于执行 QC
(质控)。下面将讨论定量数据的格式,以及如何将其导入 R
,以便可以继续工作流程中的 QC
步骤。
2. 数据来源
在本教程中,将使用scRNA-seq
数据集,该数据集是 Kang 等人 2017[1] 年一项大规模研究的一部分。在本文中,作者提出了一种算法,该算法利用遗传变异 (eQTL
) 来确定每个包含单个细胞的液滴 (singlet) 的遗传身份,并识别包含来自不同个体的两个细胞的液滴 (doublet)。
用于测试他们算法的数据取自八名狼疮患者的外周血单核细胞 (PBMC) 组成,分为对照和干扰素 β 治疗(刺激)条件。
Raw data
该数据集在 GEO (GSE96583)
上可下载,但是可用的计数矩阵缺少线粒体读数,因此从 SRA (SRP102802)
下载了 BAM
文件。这些 BAM
文件被转换回 FASTQ
文件,然后通过 Cell Ranger
运行以获得将使用的计数数据。
注意:此数据集的计数数据也可从 10X Genomics 获得,并在 Seurat[2] 教程中使用。
Metadata
除了原始数据,还需要收集有关数据的信息;这称为Metadata
。常常有一种直接放手去做的冲动,但如果对这些数据的来源样本一无所知,这并不是一个好的习惯。
下面提供了数据集的一些相关Metadata
:
文库是使用
10X Genomics
第 2 版制备的样本在
Illumina NextSeq 500
上进行测序来自八名狼疮患者的 PBMC 样本被分成两个等分试样
一份 PBMC 被 100 U/mL 重组 IFN-β 激活 6 小时。
第二个等分样未处理。
6 小时后,将每种条件的 8 个样品汇集到两个池中。
分别鉴定了 12,138 和 12,167 个细胞,用于对照和刺激的合并样本。
由于样本是 PBMC,预计包含免疫细胞,例如:
B细胞
T细胞
NK细胞
单核细胞
巨噬细胞
巨核细胞(可能)
推荐在质控或分析前,对自己的样本有充分的了解,这对于后续的分析十分有帮助。
3. 数据准备
环境准备:> 参考文末往期推荐
数据下载:> 数据地址 [3]
4. 项目结构
涉及大量数据的研究中,最重要的部分之一是如何管理它。倾向于优先分析,但数据管理的许多其他重要方面,往往在第一次看到新数据中被忽视。哈佛大学的生物医学数据管理[4] 很好的讲述了这一过程。
数据管理的一个重要方面是组织。对于处理和分析数据的每个实验,通过创建计划的存储空间(目录结构)来组织被认为是最佳实践。
创建目录结构
single_cell_rnaseq/├── data├── results└── figures
5. 数据处理
新建 Rscript
touch quality_control.R
加载包
# 在前面创建的脚本中,用R打开library(SingleCellExperiment)library(Seurat)library(tidyverse)library(Matrix)library(scales)library(cowplot)library(RCurl)
加载 scRNA-seq count
数据
无论用于处理原始scRNA-seq
序列数据的技术或管道如何,定量后表达数据的输出通常是相同的。也就是说,对于每个单独的样本,将拥有以下三个文件:
具有细胞
ID
的文件,代表所有定量的细胞具有基因
ID
的文件,代表所有定量的基因每个细胞的每个基因的计数矩阵
以上数据存放在data/ctrl_raw_feature_bc_matrix
文件夹内。
barcodes.tsv
这是一个文本文件,其中包含该样本的所有细胞条形码。条形码按矩阵文件中显示的数据顺序列出
features.tsv
这是一个包含定量基因标识符的文本文件。标识符的来源可能是 Ensembl、NCBI、UCSC,但大多数情况下这些是官方基因符号。这些基因的顺序对应于矩阵文件中的行顺序。
matrix.mtx
这是一个包含计数值矩阵的文本文件。行与上面的基因 ID 相关联,列对应于细胞条形码。请注意,此矩阵中有许多零值。
将此数据加载到 R
中,需要将这三个数据整合为一个计数矩阵,并且考虑到减少计算的原因,此计数矩阵是一个稀疏矩阵。
不同的读取数据方法:
readMM()
: 这个函数来自Matrix
包,它将标准矩阵转换为稀疏矩阵。features.tsv
文件和barcodes.tsv
必须先单独加载到R
中,然后才能将它们组合起来。
Read10X()
: 此函数来自Seurat
包,将直接使用Cell Ranger
输出目录作为输入。使用这种方法,不需要加载单个文件,而是该函数将加载并将它们组合成一个稀疏矩阵。本文将采取这个办法。
使用 Cell Ranger
处理 10X
数据后,将拥有一个 outs
目录。在此目录中,有下列文件:
web_summary.html
: 报告不同的QC
指标,包括映射指标、过滤阈值、过滤后估计的细胞数,以及过滤后每个细胞的读数和基因数量的信息。
BAM alignment files: 用于可视化映射读取和重新创建 FASTQ
文件的文件(如果需要)
** filtered_feature_bc_matrix
:**包含使用Cell Ranger
过滤的数据构建计数矩阵所需的所有文件的文件夹
raw_feature_bc_matrix
: 包含使用原始未过滤数据构建计数矩阵所需的所有文件的文件夹
虽然 Cell Ranger
对表达计数执行过滤,但希望执行自己的 QC
和过滤。鉴于此,只对 Cell Ranger
输出中的 raw_feature_bc_matrix
文件夹感兴趣。
如果有一个样本,可以生成计数矩阵,然后创建一个 Seurat
对象:
关于Seurat[5]对象
# 如何读取单个样本的 10X 数据(输出为稀疏矩阵)ctrl_counts <- Read10X(data.dir = "data/ctrl_raw_feature_bc_matrix")
# 将计数矩阵转为 Seurat 对象ctrl <- CreateSeuratObject(counts = ctrl_counts, min.features = 100)# min.features 参数指定每个细胞需要检测的最小基因数。
min.features
参数将过滤掉质量差的细胞,这些细胞可能只是封装了随机条形码而没有任何细胞存在。通常,检测到的基因少于 100 个的细胞不被考虑用于分析。
当使用 Read10X()
函数读入数据时,Seurat
会自动为每个单元格创建一些元数据。此信息存储在Seurat
对象内的 meta.data
中。
# 探索元数据head(ctrl@meta.data)
元数据的列:
orig.ident
: 如果已知,这通常包含样本标识,但默认为“SeuratProject
”nCount_RNA
: 每个单元格的UMI
数nFeature_RNA
: 每个细胞检测到的基因数量使用
for
循环读取多个样本
在实践中,可能有几个样本需要读取数据,如果一次只读取一个,可能会变得乏味且容易出错。因此,为了使数据导入R
更有效,可以使用 for
循环,它将为给定的每个输入迭代一系列命令,并为每个样本创建 seurat
对象。
# 仅测试,无法运行。for (variable in input){ command1 command2 command3}
# 利用循环读取数据for (file in c("ctrl_raw_feature_bc_matrix", "stim_raw_feature_bc_matrix")){ seurat_data <- Read10X(data.dir = paste0("data/", file)) seurat_obj <- CreateSeuratObject(counts = seurat_data, min.features = 100, project = file) assign(file, seurat_obj) # 将对象赋值给变量}
接下来,将这些对象合并到一个单独的 Seurat
对象中。这将使两个样品组一起运行 QC
步骤变得更加容易,并能够轻松地比较所有样品的数据质量。
# 创建一个合并的 Seurat 对象merged_seurat <- merge(x = ctrl_raw_feature_bc_matrix, y = stim_raw_feature_bc_matrix, add.cell.id = c("ctrl", "stim"))
# 合并两个以上的样本merged_seurat <- merge(x = ctrl_raw_feature_bc_matrix, y = c(stim1_raw_feature_bc_matrix, stim2_raw_feature_bc_matrix, stim3_raw_feature_bc_matrix), add.cell.id = c("ctrl", "stim1", "stim2", "stim3"))
# 查看对象的元数据head(merged_seurat@meta.data)tail(merged_seurat@meta.data)
因为相同的单元格 ID 可用于不同的样本,所以使用
add.cell.id
参数为每个单元格 ID 添加一个特定于样本的前缀。
参考资料
Kang: https://www.nature.com/articles/nbt.4042
[2]
Seurat: https://satijalab.org/seurat/v3.0/immune_alignment.html
[3]
数据地址: https://www.dropbox.com/s/we1gmyb9c8jej2u/single_cell_rnaseq.zip?dl=1
[4]
数据管理: https://datamanagement.hms.harvard.edu/
[5]
Seurat: https://github.com/satijalab/seurat/wiki/Seurat
本文由 mdnice 多平台发布
单细胞分析之质控(四)相关推荐
- 单细胞分析:质控实操(五)
1. 学习目标 构建质量控制指标并评估数据质量 适当的应用过滤器去除低质量的细胞 2. 过滤目标 过滤数据以仅包含高质量的真实细胞,以便在对细胞进行聚类时更容易识别不同的细胞类型 对一些不合格样品的数 ...
- 中科院单细胞分析算法开发博士带你做单细胞转录组分析
" 福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析.宏基因组和Python课程的线上直播课.报名参加线上直播课的老师可在1年内选择参加同课程的一次 ...
- 如何使用Bioconductor进行单细胞分析?
最近的技术进步使得能够在单个细胞中分析全基因组特征.但是,单细胞数据为分析提出了独特的挑战,需要开发专用的方法和数据架构才能成功解析数据背后的生物问题.Bioconductor项目托管了社区开发的开源 ...
- 生信入门(六)——单细胞分析(Seurat)
生信入门(六)--单细胞分析(Seurat) 文章目录 生信入门(六)--单细胞分析(Seurat) 一.数据导入 1.数据来源 2.数据导入 二.标准预处理 1.QC和选择细胞进行进一步分析 2.规 ...
- 单细胞分析Seurat使用相关的10个问题答疑精选!
NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析 (重磅综述:三万字长文读 ...
- 单细胞分析可视化工具盘点
论文阅读 单细胞分析可视化工具盘点 首先:大概知道单细胞分析的十几种格式和可视化分析工具. 第二:输入格式中(下图表绿色标记):csv/txt格式是最常被接受的格式,有8个工具支持.更专业的格式,如h ...
- 单细胞测序流程(四)主成分分析——PCA
PCA PCA:线性降维,主要用于数据少的时候使用.看结果的时候,看打分的绝对值大小,而不是单独的看数据的大小,PCA 是最常用的降维方法,通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望 ...
- NBIS单细胞教程:质控(一)
此文章是通过学习瑞典国家生物信息学基础设施(NBIS) 所开放的单细胞分析教程加上网上所查找的资料,自身的理解所形成的,可能会有不足之处.该部分是对下机处理完成后的数据进行Seurat分析的质控. 参 ...
- 单细胞分析的 Python 包 Scanpy(图文详解)
文章目录 一.安装 二.使用 1.准备工作 2.预处理 过滤低质量细胞样本 3.检测特异性基因 4.主成分分析(Principal component analysis) 5.领域图,聚类图(Neig ...
最新文章
- python实现网络监控_使用python进行服务器监控
- 不用IIS运行ASP.Net网站
- Python基础05 缩进和选择
- 计算机应用基础形考模版4,计算机应用基础 形考 任务四
- Linux-Android启动之zImage生成过程详解
- duration java_Java Duration类| 带示例的get()方法
- Kibana入门安装与介绍
- 如何通过统计值z看置信水平_中恨他! 看看他如何通过这一简单技巧来改善统计信息页面...
- Oracle常用操作【自己的练习】
- java数据类型之间的转换_Java数据类型之间的转换(转)
- 在计算机上格式u盘启动,请问U盘制作成启动盘后插电脑上显示0字节,打不开也无法格式化,提示磁盘写有保护怎么回事?...
- 国产BI报表工具中低调的优秀“模范生”——思迈特软件Smartbi
- net::ERR_INTERNET_DISCONNECTED
- 计应121--实训三【李智飞(27号)--李阳持(26号)--胡俊琛(13号)--曹吉(2号)】
- 5月17号,记住这一天
- 城市规划计算机辅助设计综合实践,城市规划计算机辅助设计综合实践:AutoCAD2015/ArcGIS/PS/SU...
- Centos用mail命令登录163邮箱发邮件
- Linux更改用户名密码
- 2022-05-14 Unity核心7——2D动画
- java集合 — — lterator迭代器