单细胞seurat入门—— 从原始数据到表达矩阵

根据所使用的建库方法,单细胞的RNA序列(也称为读取(reads)或标签(tags))将从转录本的3'端(或5'端)(10X Genomics,CEL-seq2,Drop-seq,inDrops)或全长转录本(Smart-seq)获得。

图片来源: Papalexi E and Satija R. Single-cell RNA sequencing to explore immune cell heterogeneity, Nature Reviews Immunology 2018 (https://doi.org/10.1038/nri.2017.76)
我们可以根据自己感兴趣的生物学问题而选择不同的方法。这些方法具有以下优点:
- 3'(或5')端测序:
- 通过独特的分子标记物(molecular identifiers)来更准确地定量鉴别生物复制品和扩增(PCR)复制品
- 可以给更多的细胞测序,更好地识别细胞类群
- 每个细胞的平均测序成本更低
- 最适用于10000个以上的细胞
- 全长(Full length)测序
- 可以检测到亚型水平上的表达差异
- 可以进行等位基因(allele-specific)表达差异的检测
- 可以给少量细胞进行更深度的测序
- 最适用于细胞量少的样本
全长测序和3'端测序需要进行许多相同的分析步骤,但3'端流程越来越受欢迎,在分析过程中包含了更多的步骤。因此,我们的教程将详细分析这些3'端流程的数据,重点是基于液滴的方法(inDrops,Drop seq,10X Genomics)。
3’端测序(包括所有基于液滴的方法)
对于单细胞RNA测序的数据分析来说,理解在每次读取中获得的信息,以及我们如何在分析过程中使用这些信息是非常有帮助的。
对于3'端测序的方法,来自同一转录本不同分子的读取只能来自转录本的3'端,因此具有相同序列的可能性很高。然而,在建库过程中的PCR步骤也可能产生读取重复。为了确定一次读取是生物重复还是技术重复,这些方法使用了唯一的分子标识符(UMIs)。
- 使用不同UMI映射到同一个转录本的读取来自不同的分子,是生物学上的复制-每个读取都应该被计数。
- 具有相同UMI的读取源于同一分子,是技术上的复制-这些UMI应该合并为一个读取的计数。
- 在下图中,ACTB的读取应合并计为单个读取,而ARL1的读取应分别计为单个读取。

图片来源: modified from Macosko EZ et al. Highly Parallel Genome-wide Expression Profiling of Individual Cells Using Nanoliter Droplets, Cell 2015 (https://doi.org/10.1016/j.cell.2015.05.002)
所以我们需要追踪UMI,除此之外,我们还需要什么信息来正确量化样本中每个细胞中每个基因的表达呢?无论使用何种基于液滴的方法,在细胞水平上进行正确的定量需要以下条件:
- 样本索引 (Sample index):确定读取来自于哪个样本。在建库期间添加——需要记录
- 细胞条形码 (Celluar barcode):确定读取来自于哪个细胞。每个建库方法都有一个供在建库期间使用的细胞条形码库存(stock)
- 唯一分子标识符 (UMI):确定读取来自哪个转录分子。UMI将被用于合并PCR复制物
- 测序读取1 (Sequencing read1):1号读取序列
- 测序读取2 (Sequencing read2):2号读取序列
例如,当使用inDrops v3建库方法时,以下内容显示如何在四次读取中获取所有信息:

图片来源:Sarah Boswell, Director of the Single Cell Sequencing Core at HMS
- R1 (61bp 读取1):读取的序列(顶部红色箭头)
- R2 (8bp 索引读取1(i7)):细胞条码 —— 判断读取来自于哪个细胞(顶部紫色箭头)
- R3 (8bp 索引读取2(i5)):样本/库索引 —— 判断读取来自哪个样本(底部红色箭头)
- R4 (14bp 读取2):读取2和剩下的细胞条形码和UMI —— 读取来自于哪个转录本(底部紫色箭头)
对于不同的基于液滴的单细胞RNA测序方法,分析流程是相似的,但是对UMI、细胞ID和样本索引的分析将有所不同。例如,下面是10X序列读取的示意图,其中索引、UMI和条码的位置不同:

图片来源: Sarah Boswell, Director of the Single Cell Sequencing Core at HMS
单细胞RNA测序的工作流程
单细胞RNA测序方法将确定如何从序列读取中解析条码和UMI。因此,尽管一些具体步骤略有不同,总体工作流程通常会遵循相同的步骤,而不考虑方法的差异。一般工作流程如下:

图片来源: Luecken, MD and Theis, FJ. Current best practices in single‐cell RNA‐seq analysis: a tutorial, Mol Syst Biol 2019 (doi: https://doi.org/10.15252/msb.20188746)
工作流程的步骤是:
- 生成计数矩阵 (Generation of the count matrix):格式化读取、分离样本、映射(mapping)和定量(quantification)
- 原始计数矩阵的质量控制 (Quality control of the raw counts):过滤掉质量差的细胞
- 过滤后计数的聚类 (Clustering of filtered counts):将转录活动相似的细胞归为一类(细胞类型=不同的聚类)
- 标记识别 (Marker identification):识别每个细胞群的基因标记(marker)
- 其他可选的下游步骤 (Optional downstream steps)
不管做什么样的分析,基于每种情况的单一样本而得出关于群体的结论都是不可信的。生物学重复仍然是非常必要的!也就是说,如果你想得出与总体相对应的结论,不应该局限于单一样本。
生成计数矩阵
我们将从讨论该工作流程的第一部分开始,该部分是从原始序列数据生成计数矩阵。我们将重点关注基于液滴的3'端测序,如inDrops、10X Genomics和Drop seq。

测序后,测序设备将原始测序数据输出为BCL或FASTQ格式,或生成计数矩阵 (count matrix)。如果读取的是BCL格式,那么我们需要转换为FASTQ格式。有一个名为bcl2fastq的命令行工具可以轻松地完成此转换。
注:在工作流程的这一步,我们不进行分离。您可能已经对6个样本进行了测序,但所有样本的读取可能都出现在同一个BCL或FASTQ文件中。
在许多单细胞RNA测序方法中,从原始数据生成计数矩阵将会经历很多类似的步骤。

umis 和 zUMIs 是用来估算3'端转录本测序数据表达量的命令行工具。两种工具都包含了UMIs的合并以校正扩增偏差(amplification bias)的功能。此过程中的步骤包括:
- 格式化读写并过滤低质量的细胞条码
- 分离样本
- 比对/伪映射到转录组
- 合并UMI并量化读写
如果使用10X Genomic建库方法, Cell Ranger 流程将会被用于以上所有的步骤。
1. 格式化读写并过滤低质量的细胞条码
FASTQ文件可被用于解析细胞条码、UMI和样本条码。对于基于液滴的方法,由于以下原因,许多细胞条码将会匹配到数量较少(< 1000)的读取,这是因为:
- 封装了来自于死/濒死细胞的游离RNA
- 混入了只表达少量基因的简单细胞(如红细胞等)
- 其他因素的影响
这些多余的条码需要在读取比对之前从测序数据中过滤掉。要进行此筛选,将提取并保存每个细胞的“细胞条码”和“分子条码”。例如,如果使用了umis工具,每次读取时都会将信息添加到标题行,格式如下:
@HWI-ST808:130:H0B8YADXX:1:1101:2088:2222:CELL_GGTCCA:UMI_CCCTAGGAAGATGGAGGAGAGAAGGCGGTGAAAGAGACCTGTAAAAAGCCACCGN+@@@DDBD>=AFCF+<CAFHDECII:DGGGHGIGGIIIEHGIIIGIIDHII#
建库方法中使用的细胞条码应该是已知的,且未知的条码将会被丢弃,同时允许存在适量与已知细胞条码不匹配的现象。
2. 分离样本读取
如果测序不止一个样本,这个过程的下一步是对样本进行分离。这个步骤不是由umis工具完成,而是由zUMIs完成的。我们需要对读取的数据进行分析,以确定与每个细胞关联的样本条码。
3. 映射/伪映射至cDNA
为了确定读取源于哪个基因,可使用传统的(STAR)或轻量级方法(Kallisto/RapMap)对读取进行映射 (mapping)。
4. 合并UMI并完成对读取的定量
重复的UMI被合并,这样唯一的UMI可以使用Kallisto或featureCounts这样的工具定量。结果是一个细胞的基因计数矩阵:

图片来源:extracted from Lafzi et al. Tutorial: guidelines for the experimental design of single-cell RNA sequencing studies, Nature Protocols 2018 (https://doi.org/10.1038/s41596-018-0073-y)
矩阵中的每个值表示一个细胞中相应基因的读取数。使用计数矩阵,我们可以探索和过滤数据,只保留较高质量的细胞。

相关文章:
单细胞seurat入门—— 从原始数据到表达矩阵
根据所使用的建库方法,单细胞的RNA序列(也称为读取(reads)或标签(tags))将从转录本的3端(或5端)(10X Genomics,CEL-seq2,Drop-seq&…...
Docker部署Nacos
此篇文章使用的nacos为2.2.1版本 拉取Nacos镜像 docker pull nacos/nacos-server:v2.2.1先将容器启动起来 docker run -d \ --name nacos \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ --privilegedtrue \ -e JVM_XMS256m \ -e JVM_XMX256m \ -e MODEstandalone \ -e NA…...
1005. K 次取反后最大化的数组和
原题链接:1005. K 次取反后最大化的数组和 思路: 先把数组排序好,然后直接从下标0(最小的负数)开始反转,那么接下来有两种情况: 1.负数反转完了,k还有剩余。此时因为nums内全部都是正数,所以我…...
【云原生】什么是 Kubernetes ?
什么是 Kubernetes ? Kubernetes 是一个开源容器编排平台,管理着一系列的 主机 或者 服务器,它们被称作是 节点(Node)。 每一个节点运行了若干个相互独立的 Pod。 Pod 是 Kubernetes 中可以部署的 最小执行单元&#x…...
自建CA实战之 《0x01 Nginx 配置 https单向认证》
自建私有化证书颁发机构(Certificate Authority,CA)实战之 《0x01 Nginx 配置 https单向认证》 上一篇文章我们介绍了如何自建私有化证书颁发机构(Certificate Authority,CA),本篇文章我们将介…...
《QT从基础到进阶·三十八》QWidget实现炫酷log日志打印界面
QWidget实现了log日志的打印功能,不仅可以在界面显示,还可以生成打印日志。先来看下效果,源码放在文章末尾: LogPlugin插件类管理log所有功能,它可以获取Log界面并能打印正常信息,警告信息和错误信息&…...
JVM的小知识总结
加载时jvm做了这三件事: 1)通过一个类的全限定名来获取该类的二进制字节流 什么是全限定类名? 就是类名全称,带包路径的用点隔开,例如: java.lang.String。 即全限定名 包名类型 非限定类名也叫短名,就…...
深入理解JVM虚拟机第二十六篇:详解JVM当中的虚方法和非虚方法,并从字节码指令的角度去分析虚方法和非虚方法
😉😉 学习交流群: ✅✅1:这是孙哥suns和树哥给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824 📚📚 微信:DashuDeveloper拉你进微信群,免费领取! 一:非虚方法和虚方法 方法…...
ElasticSearch的日志配置
ElasticSearch默认情况下使用Log4j2来记录日志,日志配置文件的路径为$ES_HOME/config/log4j2.properties,配置方法见Log4j2的官方文档。 参考path-settings,通过指定path.logs,可以指定日志文件的保存路径。 在日志配置文件$ES_…...
SQL Injection (Blind)`
SQL Injection (Blind) SQL Injection (Blind) SQL盲注,是一种特殊类型的SQL注入攻击,它的特点是无法直接从页面上看到注入语句的执行结果。在这种情况下,需要利用一些方法进行判断或者尝试,这个过程称之为盲注。 盲注的主要形式有…...
NX二次开发UF_CURVE_ask_trim 函数介绍
文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_trim Defined in: uf_curve.h int UF_CURVE_ask_trim(tag_t trim_feature, UF_CURVE_trim_p_t trim_info ) overview 概述 Retrieve the current parameters of an a…...
linux的netstat命令和ss命令
1. 网络状态 State状态LISTENING监听中,服务端需要打开一个socket进行监听,侦听来自远方TCP端口的连接请求ESTABLISHED已连接,代表一个打开的连接,双方可以进行或已经在数据交互了SYN_SENT客户端通过应用程序调用connect发送一个…...
python:傅里叶分析,傅里叶变换 FFT
使用python进行傅里叶分析,傅里叶变换 FFT 的一些关键概念的引入: 1.1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete Fourier transform) 傅里叶分析方法是信号分析的最基本方法,傅里叶变换是傅里叶分析的核心&…...
云原生系列Go语言篇-编写测试Part 2
基准测试 确定代码是快或慢非常复杂。我们不用自己计算,应使用Go测试框架内置的基准测试。下面来看第15章的GitHub代码库sample_code/bench目录下的函数: func FileLen(f string, bufsize int) (int, error) {file, err : os.Open(f)if err ! …...
CMake Error:No targets specified and no makefile found
在适用cmake构建项目的时候,突然遇到了这个报错 Make Error at CMakeLists.txt:1 (project): VERSION not allowed unless CMP0048 is set to NEW – Configuring incomplete, errors occurred! make: *** No targets specified and no makefile found. Stop. CMake…...
常见树种(贵州省):019滇白珠、杜茎山、苍山越桔、黄背越桔、贵州毛柃、半齿柃、钝叶柃、细枝柃、细齿叶柃木、土蜜树、山矾、胡颓子、檵木
摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、滇白珠…...
java - 定时器
一、什么是定时器 定时器是指可以通过 Java 中的 Timer 类和 TimerTask 类所提供的功能来实现定期执行某些任务的工具。 标准库中提供了一个 Timer 类 . Timer 类的核心方法为 schedule . schedule 包含两个参数 . 第一个参数指定即将要执行的任务代码 , 第二个参数指定多…...
jQuery【菜单功能、淡入淡出轮播图(上)、淡入淡出轮播图(下)、折叠面板】(五)-全面详解(学习总结---从入门到深化)
目录 菜单功能 淡入淡出轮播图(上) 淡入淡出轮播图(下) 折叠面板 菜单功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…...
攻防非对称问题| 当前企业面临的网络攻防非对称问题及其解决途径
随着信息技术的不断发展,网络已经成为我们日常生活和商业活动中不可或缺的一部分。然而,随之而来的是网络安全问题的不断升级。网络攻防非对称问题是当前亟待解决的一个复杂而严峻的挑战。其主要的表现是攻击成本远低于防御成本以及相同投入带来的攻击能…...
Java多线程二-线程安全
1、线程安全问题 多个线程,同时操作同一个共享资源的时候,可能会出现业务安全问题。 2、实例:取钱的线程安全问题 2.1、场景 小明和小红是夫妻,他们有个共同账户,余额是十万元,如果两人同时取钱并且各自取…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
【题解-洛谷】P10480 可达性统计
题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …...
【Java】Ajax 技术详解
文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...
开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例
在工业自动化控制系统中,常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中,客户现场采用了 罗克韦尔PLC,但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控,引入了开疆智能Etherne…...
联邦学习带宽资源分配
带宽资源分配是指在网络中如何合理分配有限的带宽资源,以满足各个通信任务和用户的需求,尤其是在多用户共享带宽的情况下,如何确保各个设备或用户的通信需求得到高效且公平的满足。带宽是网络中的一个重要资源,通常指的是单位时间…...
