单细胞RNA-seq生信分析全流程——第十二篇:RNA velocity

12.1 前言

单细胞数据集允许以高分辨率研究生物过程,例如早期发育。例如,虽然分析的是单个细胞而不是整个组织,但细胞表型的变化无法随着时间的推移进行跟踪。这一事实源于单细胞测序方案的局限性。对细胞进行测序后,它会被破坏,因此无法在以后的时间点再次测量其定义特征。值得注意的是,实验技术不仅无法测量不同时间的一般细胞概况,而且无法测量这些变化发生的速度。可以使用轨迹推理(trajectory inference,TI)领域的工具来及时恢复沿发展景观的位置。然而,经典的TI方法不提供任何定向的动态信息。此外,这些算法传统上不考虑转录组读数和相似性之外的信息。

12.2 RNA velocity模型

细胞转录组谱的变化是由一系列事件触发的:广义上讲,DNA 被转录产生所谓的未剪接前体信使 RNA (pre-mRNA)。未剪接的前mRNA包含与翻译相关的区域(外显子)以及非编码区域(内含子)。这些非编码区被剪接,即去除,以形成剪接的成熟mRNA。虽然单细胞RNA测序 (scRNA-seq) 方案无法在多个时间点捕获转录组,但它们确实包含了分离未剪接和剪接mRNA读数所需的信息。

12.3 胰腺内分泌发生pancreatic endocrinogenesis中的RNA velocity推断

作为如何推断RNA velocity的实际示例,我们分析了胰腺的内分泌发育[Bastidas-Ponce et al., 2019]。在该系统中,前内分泌细胞(Ductal、Ngn3 low EP、Ngn3 high EP、Pre-endocrine)发育成四种内分泌细胞类型(Alpha、Beta、Delta、Epsilon)。在这里,我们使用scVelo[Bergen et al., 2020]来推断RNA velocity。

12.3.1 配置环境
from pathlib import Path

import scanpy as sc
import scvelo as scv
12.3.2 常规设置
scv.settings.set_figure_params("scvelo")
DATA_DIR = Path("../../data/")
DATA_DIR.mkdir(parents=True, exist_ok=True)

FILE_PATH = DATA_DIR / "pancreas.h5ad"
12.3.3 加载数据

为了使用scVelo估计RNA velocity,需要将未剪接和剪接计数存储在AnnData的层槽中。我们建议将整个计数(即未处理的数据)传递到scVelo管道。

adata = scv.datasets.pancreas(file_path=FILE_PATH)
adata
AnnData object with n_obs × n_vars = 3696 × 27998
    obs: 'clusters_coarse', 'clusters', 'S_score', 'G2M_score'
    var: 'highly_variable_genes'
    uns: 'clusters_coarse_colors', 'clusters_colors', 'day_colors', 'neighbors', 'pca'
    obsm: 'X_pca', 'X_umap'
    layers: 'spliced', 'unspliced'
    obsp: 'distances', 'connectivities'

12.4 数据预处理

由于scRNA-seq数据充满噪声且稀疏,因此必须对数据进行预处理,以便使用稳态或EM模型推断RNA velocity。第一步,我们过滤掉未剪接和剪接RNA均未充分表达的基因(此处至少20个)。接下来,对未剪接和剪接RNA的细胞大小进行归一化,并在adata.X log1p中进行计数转换,以减少异常值的影响。接下来,我们还识别和过滤高度可变的基因(此处为2000)。

scv.pp.filter_and_normalize(adata, min_shared_counts=20, n_top_genes=2000)
Filtered out 20801 genes that are detected 20 counts (shared).
Normalized count data: X, spliced, unspliced.
Extracted 2000 highly variable genes.
Logarithmized X.

到目前为止,数据预处理与经典的scRNA-seq工作流程类似。对于RNA velocity,我们还通过其附近的平均表达来观察结果。 这可以使用scVelo的moments函数来完成。

sc.tl.pca(adata)
sc.pp.neighbors(adata)
scv.pp.moments(adata, n_pcs=None, n_neighbors=None)
computing moments based on connectivities
    finished (0:00:00) --> added 
    'Ms' and 'Mu', moments of un/spliced abundances (adata.layers)

在经典的工作流程中,我们会对数据进行聚类,推断细胞类型,并以二维嵌入方式可视化数据。幸运的是,对于胰腺数据,这些信息已经被先验计算并可以直接使用。

scv.pl.scatter(adata, basis="umap", color="clusters")

12.4.1 RNA velocity推断-稳态模型

第一步,我们计算稳态模型下的RNA velocity。在这种情况下,我们用mode="deterministic"来调用scVelo的velocity函数。

scv.tl.velocity(adata, mode="deterministic")
computing velocities
    finished (0:00:00) --> added 
    'velocity', velocity vectors for each individual cell (adata.layers)

虽然我们不鼓励过度解释高维速度向量到数据低维表示的投影,但scVelo提供了一种简单的方法。

scv.tl.velocity_graph(adata, n_jobs=8)
scv.pl.velocity_embedding_stream(adata, basis="umap", color="clusters")
computing velocity graph (using 8/96 cores)
    finished (0:00:05) --> added 
    'velocity_graph', sparse matrix with cosine correlations (adata.uns)
computing velocity embedding
    finished (0:00:00) --> added
    'velocity_umap', embedded velocity vectors (adata.obsm)

12.4.2 RNA velocity推断-EM模型

为了用EM模型计算RNA velocity,需要首先推断剪接动力学参数。scVelo的recover_dynamics函数负责完成。

scv.tl.recover_dynamics(adata, n_jobs=8)
recovering dynamics (using 8/96 cores)
    finished (0:01:00) --> added 
    'fit_pars', fitted parameters for splicing dynamics (adata.var)

拼接模型的参数是通过最大化给定的可能性来推断的。为了研究哪些基因最适合scVelo,我们可以研究相应的相图以及推断的轨迹(以紫色绘制)和稳态比率(紫色虚线)。此处,显示的五个基因中的三个(Pcsk2、Top2a、Ppp1r1a)呈现出(部分)杏仁形状的相图。我们观察到单一细胞类型(Top2a、Ppp1r1a)内或跨多种细胞类型(Pcsk2,从前内分泌细胞到 Alpha 和 Beta)的明显转变。就Nfib而言,我们观察到两个处于稳态的细胞群。这很可能是对Ngn3低/高EP细胞周围表型流形进行欠采样的人为因素。类似地,Ghrl在Epsilon细胞中高度表达,但由于簇大小较小,表达量很少。虽然当前的最佳实践仅限于手动分析模型拟合度和置信度,但最近提出的方法可以帮助自动化该过程(新方向)。 在这里,Nfib和Ghrl 将被分配较低的置信度分数。

top_genes = adata.var["fit_likelihood"].sort_values(ascending=False).index
scv.pl.scatter(adata, basis=top_genes[:5], color="clusters", frameon=False)


估计动力学速率(存储为adata.obsfit_alphafit_betafit_gamma列)后,我们可以计算速度和二维UMAP嵌入的投影。

scv.tl.velocity(adata, mode="dynamical")
scv.tl.velocity_graph(adata, n_jobs=8)
scv.pl.velocity_embedding_stream(adata, basis="umap")
computing velocities
    finished (0:00:02) --> added 
    'velocity', velocity vectors for each individual cell (adata.layers)
computing velocity graph (using 8/96 cores)
    finished (0:00:02) --> added 
    'velocity_graph', sparse matrix with cosine correlations (adata.uns)
computing velocity embedding
    finished (0:00:00) --> added
    'velocity_umap', embedded velocity vectors (adata.obsm)

基于2D投影,EM模型更稳健地捕获导管细胞中的细胞周期。此外,稳态模型的投影表现出从阿尔法细胞到前内分泌细胞的“回流”。然而,为了进行严格的定量分析,我们建议使用CellRank等下游工具来评估模型差异并得出结论。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容