前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单细胞分析十八般武艺4:velocyto

单细胞分析十八般武艺4:velocyto

作者头像
生信技能树jimmy
发布2021-04-16 13:13:46
7.2K0
发布2021-04-16 13:13:46
举报
文章被收录于专栏:单细胞天地

单细胞测序技术的发展日新月异,新的分析工具也层出不穷。每个工具都有它的优势与不足,在没有权威工具和流程的单细胞生信江湖里,多掌握几种分析方法和工具,探索数据时常常会有意想不到的惊喜。

往期专题

单细胞初级8讲和高级分析8讲 单细胞分析十八般武艺1:harmony 单细胞分析十八般武艺2:LIGER 单细胞分析十八般武艺3:fastMNN

速率分析的原理

大家第一次听到RNA速率/速度,是不是感觉和我一样懵呢?再看文献提到的时间导数、微分方程和一大堆公式,是不是更搞不清作者在讲什么?我们常用的基因表达矩阵,如velocyto的作者在文献中所讲,反映的是细胞转录组的瞬间快照。其实在生命体中,每时每刻都发生着mRNA的转录、剪接和降解,它们当然都是有速度的,作者在文中用α、β和γ表示这些速度。不仅mRNA的转录、剪接和降解有速度,前体mRNA和成熟mRNA的丰度变化也有速度,作者所讲的RNA速度特指成熟mRNA的丰度变化速度。RNA速度可以通过前体mRNA和成熟mRNA的指标来估计,并且可以用来预测细胞未来数小时内的状态。在velocyto的动力学模型中,作者假定转录速度 α恒定,此时unspliced mRNA(u)和未来的spliced mRNA(s)的丰度高度相关:

系数 λ 综合了降解率和剪接率、基因调控特性、内含子和外显子长度的比值以及内部启动位点的数量等因素。绝大多数的基因在不同细胞类型中,系数 λ 固定不变,但是11%的基因在不同组织中 λ 值不同。为了证明此模型的正确性,作者使用小鼠肝脏的节律基因来验证:

总的来说:unspliced mRNA丰度与spliced mRNA丰度高度相关且具有先导性,因此可以据此推断细胞的分化方向与速率。

velocyto分析流程

  1. 使用python版velocyto将bam文件转换为包含spliced,unspliced和ambiguous三个矩阵的loom文件;
  2. 读取 loom文件并转换为surat对象;
  3. 对seurat对象执行数据标准化及降维聚类操作;
  4. 计算RNA速率;
  5. 展示细胞分化的方向。

velocyto分析示例

本文演示数据来自velocyto官方教程:http://pklab.med.harvard.edu/velocyto/notebooks/R/SCG71.nb.html

代码语言:javascript
复制
library(Seurat)
library(velocyto.R)
library(tidyverse)
library(SeuratWrappers)
##数据基础分析
# 读取loom文件
velo <- read.loom.matrices(url("http://pklab.med.harvard.edu/velocyto/mouseBM/SCG71.loom"))
# 转换为seurat对象
velo <- as.Seurat(x = velo)
# 降维聚类
velo <- velo %>% SCTransform(assay="spliced") %>% RunPCA(verbose=F) 
ElbowPlot(velo, ndims = 50)
nPC=1:20
velo <- FindNeighbors(velo, dims = nPC) %>% FindClusters() %>% 
        RunUMAP(dims = nPC) %>% RunTSNE(dims = nPC)

##给细胞分配颜色
ident.colors <- (scales::hue_pal())(n = length(x = levels(x = velo)))
names(x = ident.colors) <- levels(x = velo)
cell.colors <- ident.colors[Idents(object = velo)]
names(x = cell.colors) <- colnames(x = velo)

##速率分析
velo <- RunVelocity(velo, deltaT = 1, kCells = 25, fit.quantile = 0.02, 
        spliced.average = 0.2, unspliced.average = 0.05, ncores = 18)
#kCells:用于斜率平滑度计算最近邻细胞数量,越大越平滑,越小越能反映局部特征
#fit.quantile:0.02代表对基因表达量最高2%与最低2%的值执行gamma拟合
#spliced.average:过滤低表达丰度基因的标准,计算的是基因在cluster内的平均counts值
#unspliced.average:同上

##全局速率可视化
emb = Embeddings(velo, reduction = "umap")
vel = Tool(velo, slot = "RunVelocity")
show.velocity.on.embedding.cor(emb = emb, vel = vel, n = 200, scale = "sqrt", 
       cell.colors = ac(cell.colors, alpha = 0.5), cex = 0.8, arrow.scale = 3, 
       show.grid.flow = TRUE, min.grid.cell.mass = 0.5, grid.n = 40, 
       arrow.lwd = 1, do.par = FALSE, cell.border.alpha = 0.1)

##特定基因速率可视化
gene = "Camp"
RunVelocity(velo, deltaT=1, kCells=25, fit.quantile=0.02, old.fit=vel, 
       cell.emb=emb, cell.colors=cell.colors, show.gene=gene, do.par=T)

velocyto分析难点

  • bam转loom:bam文件转loom矩阵文件需要使用python版的velocyto,安装使用都比较困难,经常会有意想不到的报错。我可以提供有偿服务,帮大家完成bam文件的转换处理。
  • velocyto.R安装:R语言版的velocyto.R安装比较复杂,需要安装几个Linux库文件,初学者很难自己完成,建议使用我的docker镜像搭建分析环境。教程参考《华为云配置单细胞分析环境及报错处理》,最新的镜像下载地址在《kinesin_rstudio的日常升级二》中有链接。
  • Seurat与velocyto整合:很多人希望从seurat的结果中抽取一个亚群来做速率分析,但是velocyto从bam文件得到表达矩阵是所有细胞的,降维聚类的结果与seurat也有差异,因此初学者很难将两者整合在一起。

交流探讨:如果您阅读此文有所疑惑,或有不同见解,亦或其他问题,可以点击阅读原文联系探讨。

往期回顾

clustree—聚类可视化利器

单细胞分析十八般武艺3:fastMNN

肺的正常上皮细胞可以分成这5群

OSCA单细胞数据分析笔记-4 Overview pipeline




如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 往期专题
  • 速率分析的原理
  • velocyto分析流程
  • velocyto分析示例
  • velocyto分析难点
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档