RNAvelocity7:scVelo实战

内分泌胰腺

胰腺内分泌发育,谱系分化有四种命运决定:α、β、δ和ε细胞。有关详细信息,请参阅此处[1]

数据来自Bastidas-Ponce et al. (2018)[2].

[1]:
import scvelo as scv
scv.logging.print_version()

Running scvelo 0.2.0 (python 3.8.2) on 2020-05-15 00:58.

[2]:
scv.settings.verbosity = 3  # show errors(0), warnings(1), info(2), hints(3)
scv.settings.presenter_view = True  # set max width size for presenter view
scv.settings.set_figure_params('scvelo')  # for beautified visualization

加载和清洗数据

以下分析基于内置胰腺数据集[3]

要对自己的数据进行速率分析,请将您的文件(loom, h5ad, xlsx, csv, tab, txt …)读取到 AnnData 对象,使用函数adata = scv.read('path/file.loom', cache=True)

如果您想将loom文件合并到已存在的 AnnData 对象中,请使用scv.utils.merge(adata, adata_loom)

[3]:
adata = scv.datasets.pancreas()
[4]:
# show proportions of spliced/unspliced abundances
scv.utils.show_proportions(adata)
adata
Abundance of ['spliced', 'unspliced']: [0.83 0.17]
[4]:
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'

预处理数据

必要的预处理包括:

  • 通过检测(以最少计数检测)和高变异性(离散度)进行基因选择。
  • 按每个细胞的初始大小和logX使每个细胞标准化

此外,我们需要在PCA空间中最近的邻居之间计算的第一和第二顺序时刻(平均值和去中心化方差)。确定速率估计需要第一个顺序,而随机估计也需要第二个顺序时刻。

[5]:
scv.pp.filter_and_normalize(adata, min_shared_counts=20, n_top_genes=2000)
scv.pp.moments(adata, n_pcs=30, n_neighbors=30)
Filtered out 20801 genes that are detected in less than 20 counts (shared).
Normalized count data: X, spliced, unspliced.
Logarithmized X.
computing neighbors
 finished (0:00:03) --> added
 'distances' and 'connectivities', weighted adjacency matrices (adata.obsp)
computing moments based on connectivities
 finished (0:00:00) --> added
 'Ms' and 'Mu', moments of spliced/unspliced abundances (adata.layers)

计算速率和速率图

基因特异性速率通过前体(未剪切)和成熟(剪切)mRNA丰度之间的比率来获得,这很好地解释了稳定状态(恒定的转录状态),然后计算观测到的丰度如何偏离稳定状态的预期。(我们将很快发布不再依赖于稳定状态假设的版本)。

每个工具都有其绘图对应函数。例如,scv.tl.velocity的结果可以使用scv.pl.velocity可视化。

[6]:
scv.tl.velocity(adata)
computing velocities
 finished (0:00:01) --> added
 'velocity', velocity vectors for each individual cell (adata.layers)

这计算了潜在细胞转换与高维空间中速率矢量的相关性。由此产生的速率图具有维度n obs×n obs,并总结了通过速率矢量很好地解释的可能细胞状态变化(通过从一个细胞过渡到另一个细胞)。例如,该图用于将速率投影到低维嵌入中。

[7]:
scv.tl.velocity_graph(adata)
computing velocity graph
 finished (0:00:12) --> added
 'velocity_graph', sparse matrix with cosine correlations (adata.uns)

绘制结果图

速率通过指定basis被投影到任何嵌入。可视化的三种可用方式:在单个细胞级别,网格级别,或如图所示的流线图。

[8]:
scv.pl.velocity_embedding_stream(adata, basis='umap')
computing velocity embedding
 finished (0:00:00) --> added
 'velocity_umap', embedded velocity vectors (adata.obsm)

[9]:
scv.pl.velocity_embedding(adata, basis='umap', arrow_length=2, arrow_size=1.5, dpi=150)

[10]:
scv.tl.recover_dynamics(adata)
recovering dynamics
 finished (0:12:24) --> added
 'fit_pars', fitted parameters for splicing dynamics (adata.var)
[11]:
scv.tl.velocity(adata, mode='dynamical')
scv.tl.velocity_graph(adata)
computing velocities
 finished (0:00:04) --> added
 'velocity', velocity vectors for each individual cell (adata.layers)
computing velocity graph
 finished (0:00:07) --> added
 'velocity_graph', sparse matrix with cosine correlations (adata.uns)
[12]:
scv.tl.latent_time(adata)
scv.pl.scatter(adata, color='latent_time', color_map='gnuplot', size=80, colorbar=True)
computing terminal states
 identified 2 regions of root cells and 1 region of end points
 finished (0:00:00) --> added
 'root_cells', root cells of Markov diffusion process (adata.obs)
 'end_points', end points of Markov diffusion process (adata.obs)
computing latent time
 finished (0:00:01) --> added
 'latent_time', shared time (adata.obs)

[13]:
top_genes = adata.var['fit_likelihood'].sort_values(ascending=False).index[:300]
scv.pl.heatmap(adata, var_names=top_genes, tkey='latent_time', n_convolve=100, col_color='clusters')

[14]:
scv.pl.scatter(adata, basis=top_genes[:10], frameon=False, ncols=5)

[15]:
scv.pl.scatter(adata, basis=['Actn4', 'Ppp3ca', 'Cpe', 'Nnat'], frameon=False)

[16]:
scv.pl.scatter(adata, x='latent_time', y=['Actn4', 'Ppp3ca', 'Cpe', 'Nnat'], frameon=False)

[17]:
scv.pl.velocity_embedding_stream(adata, basis='umap', title='', smooth=.8, min_mass=4)
computing velocity embedding
 finished (0:00:00) --> added
 'velocity_umap', embedded velocity vectors (adata.obsm)

海马齿状回数据集

此处用于速率分析的数据集来自齿状回,这是海马的一部分,参与学习、偶发性记忆形成和空间识别。

数据在 Hochgerner et al. (2018)[4],它使用10X Genomics Chromium 测量,这些数据由2,930个细胞,25,919个基因组成,形成多个谱系。

[1]:
import scvelo as scv
scv.logging.print_version()
Running scvelo 0.2.4.dev28+g688a6bd (python 3.8.0) on 2021-05-12 17:30.
[2]:
scv.settings.verbosity = 3  # show errors(0), warnings(1), info(2), hints(3)
scv.settings.presenter_view = True  # set max width size for presenter view
scv.set_figure_params('scvelo')  # for beautified visualization

加载和清洗数据

以下分析基于内置 齿状回数据集[5]

要对自己的数据进行速率分析,请将您的文件(loom, h5ad, xlsx, csv, tab, txt …)通过使用adata = scv.read('path/file.loom', cache=True)读取到AnnData 对象

如果您想将loom文件合并到已存在的 AnnData 对象中,请使用scv.utils.merge(adata, adata_loom)

[3]:
adata = scv.datasets.dentategyrus()
[4]:
# show proportions of spliced/unspliced abundances
scv.utils.show_proportions(adata)
adata
Abundance of ['spliced', 'unspliced']: [0.9 0.1]
[4]:
AnnData object with n_obs × n_vars = 2930 × 13913
 obs: 'clusters', 'age(days)', 'clusters_enlarged'
 uns: 'clusters_colors'
 obsm: 'X_umap'
 layers: 'ambiguous', 'spliced', 'unspliced'

如果您有一个非常大的数据集,您可以通过scv.utils.cleanup(adata)清除不需要的属性来保存内存。

预处理数据

必要的预处理包括:

  • 通过检测(以最少计数检测)和高变异性(分散度)进行基因选择。
  • -按每个细胞的初始大小和logX使每个单元格标准化

过滤和标准化以同一静脉应用于剪切/未剪切计数,X. 对数仅应用于 X。如果 X 已经从以前的分析中预处理,则它不会动它。

所有这些都归入一个函数pp.filter_and_normalize,基本上运行如下:

scv.pp.filter_genes(adata, min_shared_counts=10)
scv.pp.normalize_per_cell(adata)
scv.pp.filter_genes_dispersion(adata, n_top_genes=3000)
scv.pp.log1p(adata)

此外,我们需要在PCA空间中最近的邻居之间计算的第一和第二顺序时刻(平均值和非中心化方差)。确定速率估计需要第一个顺序,而随机估计也需要第二个顺序时刻。

[5]:
scv.pp.filter_and_normalize(adata, min_shared_counts=30, n_top_genes=2000)
scv.pp.moments(adata, n_pcs=30, n_neighbors=30)
Filtered out 11019 genes that are detected in less than 30 counts (shared).
Normalized count data: X, spliced, unspliced.
Logarithmized X.
computing neighbors
 finished (0:00:03) --> added
 'distances' and 'connectivities', weighted adjacency matrices (adata.obsp)
computing moments based on connectivities
 finished (0:00:00) --> added
 'Ms' and 'Mu', moments of spliced/unspliced abundances (adata.layers)

计算速率和速率图

基因特异性速率通过前体(未剪切)和成熟(剪切)mRNA丰度之间的比率来获得,这很好地解释了稳定状态(恒定的转录状态),然后计算观测到的丰度如何偏离稳定状态的预期。(我们将很快发布不再依赖于稳定状态假设的版本)。

每个工具都有其绘图对应函数。例如,scv.tl.velocity的结果可以使用scv.pl.velocity可视化。

[6]:
scv.tl.velocity(adata)
computing velocities
 finished (0:00:00) --> added
 'velocity', velocity vectors for each individual cell (adata.layers)

这计算了潜在细胞转换与高维空间中速率矢量的相关性。由此产生的速率图具有维度n obs×n obs,并总结了通过速率矢量很好地解释的可能细胞状态变化(通过从一个细胞过渡到另一个细胞)。如果您设置approx=True,将在具有 50 个组件的缩小的 PCA 空间上计算。

然后,速率图可以通过在与速率矢量相关的细胞状态变化中分配相关性,应用高斯函数转换为过渡矩阵。您可以通过scv.tl.transition_matrix产生的过渡矩阵用于以下显示的各种应用程序。例如,它用于将速率放入低维嵌入中,只需将平均过渡应用于过渡概率,即scv.tl.velocity_embedding。此外,我们可以通过scv.tl.terminal_states沿着马尔科夫链追踪细胞的起源和潜在命运,从而在轨迹中获取根细胞和终点:

[7]:
scv.tl.velocity_graph(adata)
computing velocity graph
 finished (0:00:05) --> added
 'velocity_graph', sparse matrix with cosine correlations (adata.uns)

绘制结果图

最后,速率通过指定basis被投影到以三种可用方式之一的任何嵌入上进行可视化:

单个细胞级别、网格级别或此处所示的流线图。

[8]:
scv.pl.velocity_embedding_stream(adata, basis='umap', color=['clusters', 'age(days)'])
computing velocity embedding
 finished (0:00:00) --> added
 'velocity_umap', embedded velocity vectors (adata.obsm)

[9]:
scv.pl.velocity_embedding(adata, basis='umap', arrow_length=2, arrow_size=2, dpi=150)

[10]:
scv.pl.velocity_embedding_grid(adata, color='Tmsb10',
 layer=['velocity', 'spliced'], arrow_size=1.5)

[11]:
scv.tl.rank_velocity_genes(adata, groupby='clusters')
scv.DataFrame(adata.uns['rank_velocity_genes']['names']).head()
ranking velocity genes
 finished (0:00:01) --> added
 'rank_velocity_genes', sorted scores by group ids (adata.uns)
 'spearmans_score', spearmans correlation scores (adata.var)
[11]:

Astrocytes Cajal Retzius Cck-Tox Endothelial GABA Granule immature Granule mature Microglia Mossy Neuroblast OL OPC Radial Glia-like nIPC
0 Phkg1 Utrn Golga7b Serpine2 Stmn2 Shisa9 Grasp Srgap2 Chgb Mt3 Clmn Tnr 2810459M11Rik Bzw2
1 Ctnnd2 Scg3 Irf9 Arhgap31 Vsnl1 Jph1 2010300C02Rik Clic4 Pgm2l1 Gdpd1 Gprc5b Hmgcs1 Ctnnd2 Igfbpl1
2 Lsamp Tmem47 Cplx2 Tmsb10 Lancl1 Sphkap Rtn4rl1 Qk Fxyd1 Slc38a2 Arrdc3 Luzp2 Hepacam Rps27l
3 Qk Dpysl3 Stmn2 Igf1r Mtus2 Pgbd5 Wasf1 Ssh2 Mapk6 Bzw2 Pcdh9 Elavl3 Ptn Tbrg4
4 Cspg5 Sh3glb1 Nfkbia Prex2 Elavl3 Pip5k1b Jph1 Sirt2 Osbpl6 Epha4 Gatm Ppp1r14c Lsamp Mpzl1

[12]:
var_names = ['Tmsb10', 'Camk2a', 'Ppp3ca', 'Igfbpl1']
scv.pl.velocity(adata, var_names=var_names, colorbar=True, ncols=2)

[13]:
scv.pl.velocity_graph(adata)

文中链接

[1]

此处: https://scvelo.readthedocs.io/scvelo.datasets.pancreas

[2]

Bastidas-Ponce et al. (2018): https://dev.biologists.org/content/146/12/dev173849.abstract

[3]

胰腺数据集: https://scvelo.readthedocs.io/scvelo.datasets.pancreas

[4]

Hochgerner et al. (2018): https://www.nature.com/articles/s41593-017-0056-2

[5]

齿状回数据集: https://scvelo.readthedocs.io/scvelo.datasets.dentategyrus

(0)

相关推荐

  • 图解普林斯顿微积分(重制) 04:连续与可导

    [遇见] 这里衷心感谢 @Mr.C 同学协助转成将此系列原文档中公式转成 LaTeX 格式. ★提示: 如果文中数字/公式显示较大, 请点击右上角中"刷新"即可恢复正常. ▌第5章 ...

  • 科研 | Nature Communications:t-SNE在单细胞转录组学上的应用

    编译:夕夕,编辑:十九.江舜尧. 原创微文,欢迎转发转载. 导读 单细胞转录组学产生了越来越多的数据,其中包含多达数百万个细胞中数千个基因的RNA表达水平.常见的数据分析管道包括降维步骤,用于以二维方 ...

  • 经方抓独法:领会实战抓独法!(附​:葛根汤抓独医案)

    一. 抓独法的特点 1.抓独法源流 今天我们讲抓独法.我们研究伤寒论有五法,有标本法,有聚类法,有平脉法,有截断法,还有我们的抓独法.抓独法呢,它是有源流的,在伤寒论的平脉法就讲到了."邪不 ...

  • 精集体站街:半路经典实战7类图形

    深山老牛 楼主 2019-05-10 08:31 最近很多朋友对于个股该低吸还是追高混淆,前面老牛把自己低吸的手法全部公布给了大家,以后就重点讲讲半路追涨做首板的一些方法.便于区分和选股. 以下,是我 ...

  • 实战训练!

    在采用双盲测试的条件下任意选择一只历史股票,对其做交易训练. 缠论选股操作的条件是尽可能在一个大级别的切入点位置进场,并且在大级别上没有出现终止信号之前,保持交易节奏. 不管你是有缠论基础还是新接触缠 ...

  • 四物汤实战篇!(加减脏腑病妇科病)

    一.四物汤加减脏腑病 1 血虚腹痛.微汗恶风.加官桂(七分).倍芍药. 2 嗽痰.加桑白皮.杏仁.麻黄.贝母( 各等分). 3 大便秘.加桃仁.大黄.麻仁.枳壳(减半余各等分). 4 血虚头眩.加天麻 ...

  • 欧赛斯超级品牌引擎背后的思想、方法及实战拆解(5)

    欧赛斯 品牌超级引擎™ 关注 前言:过去的品牌是一个Logo.一句广告语.一幅画.一支广告片,品牌仅仅是品牌表现,品牌那时还是是广告公司的事情:而今天的品牌是一个点.线.面.体构成的一个引擎化体系.品 ...

  • 学霸的考场作文实战示例:高考作文如何开头与结尾

    俗谚:编筐编篓,重在收口.写文章,常常是头难起,尾难收. 评卷时,开头结尾也往往是评卷人的聚焦点,基础等级和发展等级的许多点都可以从开头结尾看出来. 关于开头结尾的要求,古人有形象而精辟的说法,曰&q ...

  • 别再去买那些垃圾股了,每周2次主升浪不香吗?硬核实战技巧分享

    别再去买那些垃圾股了,每周2次主升浪不香吗?硬核实战技巧分享

  • 圆运动的实战古方总结

    天 物 太 极 相 感 朱熹有一句话"人人有一太极,物物有一太极."吴瑭把它推导到药物具体部位的升降:"盖芦主生,干与枝叶主长,花主化,子主收,根主藏,木也:草则收藏皆在 ...

  • 刘渡舟:经方实战乙肝16方证

    乙型病毒性肝炎简称"乙型肝炎",是由乙型肝炎病毒引起的肝脏炎性损害,是我国当前最常见的一种传染病.其传播途径复杂,具有病程较长.缠绵难愈的特点,同时也是肝硬化.肝癌等的重要发病基础 ...