单细胞数据中到底应该如何处理线粒体基因
作者 | 周运来
什么是线粒体基因
线粒体是参与细胞凋亡启动和执行的主要细胞器之一。线粒体基因在大多数细胞中表达,其表达水平是细胞类型特异性的。也就是说这个也是和细胞类型及其状态有关系的。
为什么要处理
因为线粒体基因的高表达水平可能是:
- 样品质量差,导致大量细胞凋亡或裂解。
- 特定样本的生物学,例如肿瘤活检,可能由于代谢活动和/或坏死而增加线粒体基因表达。
凋亡细胞表达线粒体基因,并将这些转录产物输出到哺乳动物细胞的细胞质中。例如,当凋亡的细胞被放入正常的细胞悬液中,会检测到更多的线粒体基因。检测到的线粒体膜占总膜的百分比如图所示
线粒体是参与细胞凋亡启动和执行的主要细胞器之一。细胞凋亡的过程依赖于一系列信号事件,包括线粒体基因表达的增加和半胱天冬酶的激活。因此,我们在计算每个样本中源自线粒体基因表达的UMIs数量时,评估了独特转录本的比例。在> 80%活细胞的高质量样品中,我们只检测到低比例的线粒体细胞(约3%)。与预期的一样,在只包含20%活细胞(74%)的Digitonin高样本中,线粒体转录本的数量最高。相比之下,含有50%活细胞的样本只显示线粒体基因表达略有增加(5-7%),这表明存活率确实与观察到的线粒体转录本数量相关。
被裂解的细胞或细胞膜被破坏的细胞释放它们的细胞质转录本,而线粒体转录本可能仍然保留在双膜结合的线粒体内。具有完整线粒体的裂解细胞可能被gems包裹,这也增加了检测到的线粒体转录片段的概率。
如何处理
一般我们建议卡到30%以内,当然还是要看这群细胞为什么会高。建议是不卡阈值直接做降维分群,然后按分群来看小提琴图,如果只有一个或几个细胞群有差异的线粒体转录上调和低总UMI计数,这个群最有可能代表一个死亡或频临死亡的细胞群。此时,再去不迟。
另外一点,我们注意到,cellranger3比cellRanger 2检测的MT(人的是MT开头的基因,其他物种主要找到相应的基因)高的细胞更多。这主要是因为:cellRanger3或更高版本具有比版本2中的cell calling算法更敏感,新算法基于EmptyDrops方法(Lun et al., 2018)。这种方法可以检测到之前版本算法所遗漏的细胞,特别是死亡或垂死的细胞,RNA含量自然较低的细胞,或异质性样本中的细胞。
这就也是为什么我们会主动地看看细胞中MT基因表达的原因,选择从下游分析中排除这些细胞。而在cellranger count管道中,没有直接的方法可以排除线粒体丰富的细胞。但是,您可以使用下面两种方法中的任何一种来间接完成此任务。
Using Cell Ranger and Loupe Cell Browser
质量差的细胞通常有低总UMI计数,很少有上调基因(表明低总基因表达),而只有MT基因过表达。例如,在下面的图中,您可以看到基于图形的聚类t-SNE图中聚类1(顶部的青色聚类)的基因表。与上述鉴定死亡细胞的标准一致,在这个群集中只有线粒体基因上调。对cluster 9中的细胞也进行了类似的观察。
下面的图显示,与其他细胞相比,Cluster1和Cluster19中的细胞的总UMI计数也很低。
您可以从一个cellranger count 输出文件中获得Cluster1和9中细胞的条形码。默认的分群结果(基于图)在Cell Ranger输出的“ANALYSIS”路径中。例如,在下面的图中,cluster 1和cluster 9的细胞高表达了MT。这些cluster的条形码可以在输出文件中找到:outs/analysis/clustering/graphclust/cluster.csv
您也可以使用Loupe细胞浏览器下载的非MT丰富细胞。为此,首先去除富集MT的cluster1和9。然后使用“导出”功能在Loupe Cell浏览器如下。
步骤2。使用cellranger reanalyze重新运行二级分析并生成一个新的cloupe文件,不使用MT高表达的barcode。要指定条形码,需要使用——barcodes选项。
Seurat
第二种方法就是我们经典的Seurat。第三方工具如Seurat可用于筛选线粒体基因表达率高的细胞。请在这里(http://satijalab.org/seurat/pbmc3k_tutorial.html)找到更多的信息。(章节“QC和选择细胞进行进一步分析”)
References
[1]
单细胞转录组||Seurat新版教程:Guided Clustering Tutorial: https://www.jianshu.com/p/03b94b2034d5
[2]
https://kb.10xgenomics.com/hc/en-us/articles/360001086611-Why-do-I-see-a-high-level-of-mitochondrial-gene-expression-
[3]
https://kb.10xgenomics.com/hc/en-us/articles/360026505392-Why-do-I-see-more-MT-enriched-cells-from-Cell-Ranger-3-compared-to-Cell-Ranger-2-
[4]
https://kb.10xgenomics.com/hc/en-us/articles/360026508452-How-can-I-exclude-poor-quality-cells-such-as-cells-that-show-enrichment-of-MT-genes
- MySQL备份恢复第一篇(r5笔记第5天)
- 经典面试问题: Top K 之 -- 海量数据找出现次数最多或,不重复的
- Java多线程详解4【面试+工作】
- Java多线程详解5【面试+工作】
- Java多线程详解6【面试+工作】
- MySQL备份恢复第二篇(r5笔记第6天)
- SpringMVC 中配置 Swagger 插件.
- MySQL和Oracle对比学习之事务(r5笔记第4天)
- 【面试宝典】Java如何打印数组
- MySQL数据导入导出牛刀小试(r5笔记第3天)
- SpringMVC 异常处理.
- 一条简单的sql在11g和12c中的不同(r5笔记第2天)
- 浅析 SpringMVC 原理和配置.
- 使用impdp不当导致的数据丢失问题(r5笔记第1天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)
- Python爬虫之requests模块了解
- Python爬虫之数据提取概述
- Python爬虫之数据提取-jsonpath模块
- 什么是高斯混合模型
- Python爬虫之数据提取-lxml模块
- 用Python读写文件的方法
- 反编译PyInstaller打包后的exe为py源码
- Qt多线程编程实战:MD5单项加密
- 高速上云/网络穿透/视频上云网关EasyNTS组网服务平台如何通过复制穿透结果实现外网到内网的访问?
- SpringBoot常用注解的简单理解
- Qt多线程编程之线程的同步和互斥
- TS 设计模式06 - 代理模式
- TS 设计模式07 - 观察者模式
- Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制)