单细胞分析实录(1): 认识Cell Hashing
这是一个新系列
差不多是一年以前,我定导后没多久,接手了读研后的第一个课题。合作方是医院,和我对接的是一名博一的医学生,最开始两边的老师很排斥常规的单细胞文章思路,即各大类细胞分群、注释、描述,所以起初的几个月都在摸索一条主线,再后来有主线了,要加实验验证,周期有点长。我这边的分析基本做完。读研生活还在继续,我也不能太在意这一个课题,尽管有些时候我也很着急,尽管我在这个课题上花了很多时间。整理分析流程是个好习惯,最大的受益者还是自己,所以接下来我打算把我在处理单细胞转录组过程中,学到的用到的所有技能以这样的形式写出来,估计有二三十篇吧~
我想先从Cell Hashing这样一种改良的单细胞测序技术开始
1. CITE-seq
事实上Cell Hashing是在CITE-seq的基础上改进的,CITE-seq全称cellular indexing of transcriptomes and epitopes by sequencing,是一种同时对细胞内RNA和细胞表面蛋白进行测序的技术。
测序原理如上图,将特定的抗体连上一段序列,序列上包含与抗体信息对应的antibody barcode,像右上方表格一样,还包含一段ploy-A。该抗体复合物和细胞共培养后,细胞表面就会连上一些抗体,某种蛋白分子越多,连上的抗体就会越多。过流式之后,裂解细胞,断开二硫键,此时细胞内的RNA和抗体复合物来源的序列都会连到磁珠上,像右下图那样,这两种类型的序列长度不同,可以分开建库,调整核酸浓度,以确保两者都有合适的测序深度。
所以这样一种技术,除了提供转录组的信息,还提供了部分蛋白的信息。正如作者所说,多模态数据应用得越来越多。
支持cite-seq的R包去年看的时候,我知道有Seurat和CiteFuse,CiteFuse今年发表在Bioinformatics。
2. Cell Hashing
Cell Hashing和CITE-seq的测序原理基本一样,只是换了一个应用场景。它解决的问题是:如何将不同样本的细胞混起来测序(便宜),测完了还能区分哪个细胞来源于哪个样本,这样做也减少了批次效应。
标题里面提到了doublet检测仅针对来源于两个样本的doublet,不是指不同cell type的doublet。
背景中提到了另一种解决这类问题的方案就是提供样本的遗传多态性信息(单细胞数据比对后也能得到部分信息,和已知的样本信息比较,就能知道细胞来源于哪个样本了),当然这个信息不那么容易获取。
如图,不同的样本有不同的antibody barcode。
实验过程如上图,在选择抗体时,尽量选择普适的抗体,比如CD45,免疫细胞都表达。是用一种还是多种无所谓(原文用了4种,CD45, CD98, CD44, and CD11a),只要保证antibody barcode与样本对应即可。
原文提供了针对cell hashing数据的拆分方法,这是对应的两个图。B图中的一个点和C图中的一列表示一个液滴(或者理解为一个cellular barcode)。正常情况下,一个液滴里面只有一个细胞,那么对应的样本tag (HTO) 只有一个,也就是只有一个tag有UMI,其他tag的UMI应该为0,不然就是doublet或者空的液滴(negative)。
3. Cell Hashing测序的拆分原理
通常我们在完成测序数据比对后,能得到一个表达矩阵,行为gene列为细胞,而cell hashing的数据,比对后得到的是行为gene+tag,列为细胞。上图给出的tag x cell的一个例子,我们利用的是这个矩阵来判定每个细胞属于哪个样本。
- 第一步是对UMI矩阵标准化,式子里的i表示第几行,n表示样本(tag)的总数;
- 第二步是粗分类,最后一类要么是8个UMI都和高,要么都很小;
- 第三步,假设第9类细胞的tag x cell矩阵每一行都服从负二项分布,根据观测值拟合之后,求0.99分位数,据此来判断某一个值是positive还是negative;
- 第四步,一列一列看,如果只有一个positive,说明是有效的CB,根据较大的HTO归到对应的样本里去;两个或多个positive则是doublet;没有positive则是空液滴。
预告
- 下篇写如何从测序数据得到表达矩阵,普通10X以及cell hashing数据都适用
- 下下篇写cell hashing数据拆分实战,用seurat和citefuse两种方法
因水平有限,有错误的地方,欢迎批评指正!
单细胞分析实录(1): 认识Cell Hashing的更多相关文章
- 单细胞分析实录(2): 使用Cell Ranger得到表达矩阵
Cell Ranger是一个"傻瓜"软件,你只需提供原始的fastq文件,它就会返回feature-barcode表达矩阵.为啥不说是gene-cell,举个例子,cell has ...
- 【代码更新】单细胞分析实录(20): 将多个样本的CNV定位到染色体臂,并画热图
之前写过三篇和CNV相关的帖子,如果你做肿瘤单细胞转录组,大概率看过: 单细胞分析实录(11): inferCNV的基本用法 单细胞分析实录(12): 如何推断肿瘤细胞 单细胞分析实录(13): in ...
- 【代码更新】单细胞分析实录(21): 非负矩阵分解(NMF)的R代码实现,只需两步,啥图都有
1. 起因 之前的代码(单细胞分析实录(17): 非负矩阵分解(NMF)代码演示)没有涉及到python语法,只有4个python命令行,就跟Linux下面的ls grep一样的.然鹅,有几个小伙伴不 ...
- 单细胞分析实录(3): Cell Hashing数据拆分
在之前的文章里,我主要讲了如下两个内容:(1) 认识Cell Hashing:(2): 使用Cell Ranger得到表达矩阵.相信大家已经知道了cell hashing与普通10X转录组的差异,以及 ...
- 单细胞分析实录(5): Seurat标准流程
前面我们已经学习了单细胞转录组分析的:使用Cell Ranger得到表达矩阵和doublet检测,今天我们开始Seurat标准流程的学习.这一部分的内容,网上有很多帖子,基本上都是把Seurat官网P ...
- 单细胞分析实录(4): doublet检测
最近Cell Systems杂志发表了一篇针对现有几种检测单细胞测序doublet的工具的评估文章,系统比较了常见的例如Scrublet.DoubletFinder等工具在检测准确性.计算效率等方面的 ...
- 单细胞分析实录(17): 非负矩阵分解(NMF)代码演示
本次演示使用的数据来自2017年发表于Cell的头颈鳞癌单细胞文章:Single-Cell Transcriptomic Analysis of Primary and Metastatic Tumo ...
- 单细胞分析实录(8): 展示marker基因的4种图形(一)
今天的内容讲讲单细胞文章中经常出现的展示细胞marker的图:tsne/umap图.热图.堆叠小提琴图.气泡图,每个图我都会用两种方法绘制. 使用的数据来自文献:Single-cell transcr ...
- 单细胞分析实录(18): 基于CellPhoneDB的细胞通讯分析及可视化 (上篇)
细胞通讯分析可以给我们一些细胞类群之间相互调控/交流的信息,这种细胞之间的调控主要是通过受配体结合,传递信号来实现的.不同的分化.疾病过程,可能存在特异的细胞通讯关系,因此阐明这些通讯关系至关重要. ...
随机推荐
- python3 通过 pybind11 使用Eigen加速代码
python是很容易上手的编程语言,但是有些时候使用python编写的程序并不能保证其运行速度(例如:while 和 for),这个时候我们就需要借助c++等为我们的代码提速.下面是我使用pybind ...
- python核心高级学习总结8------动态性、__slots__、生成器、迭代器、装饰、闭包
python的动态性 什么是动态性呢,简单地来说就是可以在运行时可以改变其结构,如:新的函数.对象.代码都可以被引进或者修改,除了Python外,还有Ruby.PHP.javascript等也是动态语 ...
- moviepy音视频剪辑:与大小相关的视频变换函数crop、even_size、margin、resize介绍
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>介绍了剪辑基类的fl.fl_time.fx方法,在<movi ...
- 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出
第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...
- PyQt(Python+Qt)学习随笔:Qt Designer组件属性编辑界面中对话窗QDialog的modal属性
modal属性表示窗口执行show()操作时是以模态窗口还是非模态窗口形式展示,缺省为False,设置该值与QWidget.windowModality的值设置为 Qt.ApplicationModa ...
- Scrum冲刺_Day03
一.团队展示: 1.项目:light_note备忘录 2.队名:删库跑路队 3.团队成员 队员(不分先后) 项目角色 黄敦鸿 后端工程师.测试 黄华 后端工程师.测试 黄骏鹏 后端工程师.测试 黄源钦 ...
- 题解-CmdOI2019 口头禅
题面 CmdOI2019 口头禅 给 \(n\) 个 \(01\) 串 \(s_i\),\(m\) 个询问问 \(s_{l\sim r}\) 的最长公共子串长度. 数据范围:\(1\le n\le 2 ...
- js上 五、运算符-1
5.1.认识运算符 什么是运算符? 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算. 运算符的应用: 购物车:计算总价,数量: **Js ** 中有哪些运算符? 算术运算符.赋值运算符 ...
- react第X单元(redux)
第X单元(redux) #课程目标 理解redux解决的问题,理解redux的工作原理 熟练掌握redux的api 熟练掌握redux和react组件之间的通信(react-redux) 把redux ...
- Flink连接器-批处理-读写Hbase
Flink批处理与hbase的读写 source-hbase 父类 是模仿官方写的. import org.apache.flink.api.common.io.LocatableInputSplit ...