空间转录组第十讲:空转的细胞分化(拟时序分析)该怎么玩

在发育过程中,细胞会对刺激做出反应,在整个生命过程中,从一种功能性“状态”转变为另一种功能性“状态”。拟时序分析(pseudo-time),它指通过构建细胞间的变化轨迹来重塑细胞随着时间的变化过程。用于拟时序分析的软件和算法很多,目前文章中用到最多的是Monocle软件,这也是是CNS主流期刊的常用软件。

对于单细胞的数据做拟时序分析基本的流程是挑选一些感兴趣并且可能有分化关系的亚群,然后来分析它们之间的分化关系。那么对于空间转录组数据有没有什么新花样呢?其实目前的空间转录组测序已发表的文章还没太注重细胞分化这一内容,可能大家做空转数据挖掘的时候还没太把关注点放到分化关系这上面吧,那么今天就来给大家写写自己的突发奇想吧!

既然是做的空间转录组,那么我们就要有效的利用起来空间位置信息。选择的亚群不能太离散。其次,我们可以分析相同细胞类型的亚群在空间位置的分化关系,也可以按照病理状态分布的渐进变化来选择区域做拟时序分化。

读取seurat对象

library(monocle)
#读取前面保存的seurat对象文件
combin.data <- readRDS("combin.data.RDS")

这里我们选择大脑皮层区的亚群作为示例进行细胞分化分析。

#展示亚群分布
SpatialDimPlot(combin.data, label = TRUE, label.size = 3)
图片
#展示皮层marker的分布
SpatialFeaturePlot(combin.data, features = c("Stx1a"))
图片

根据亚群和皮层marker STX1A的表达分布,我们选择2、5、7、9、10号群作为皮层的亚群。

#选择要分析的亚群
subdata <- subset(combin.data, idents = c(2,5,7,9,10))

导入seurat对象,构建CellDataSet对象

这里我们使用monocle2做拟时序分析。monocle2做拟时序分析需要三个矩阵文件:expression_matrix(表达矩阵,一般是raw count)、phenoData(细胞meta文件,可以包括细胞的样本、亚群等信息)、featureData(gene的meta文件,注意要包括gene_short_name这一列)。

#单细胞count文件、细胞类型注释文件、基因注释文件
expression_matrix = combin.data@assays$Spatial@counts
cell_metadata <- data.frame(group = combin.data[['orig.ident']],clusters = Idents(combin.data))
gene_annotation <- data.frame(gene_short_name = rownames(expression_matrix), stringsAsFactors = F) 
rownames(gene_annotation) <- rownames(expression_matrix)
#####新建CellDataSet object
pd <- new("AnnotatedDataFrame", data = cell_metadata)
fd <- new("AnnotatedDataFrame", data = gene_annotation)
HSMM <- newCellDataSet(expression_matrix,
                        phenoData = pd,
                        featureData = fd,
                        expressionFamily=negbinomial.size())

monocle2做拟时序分析主要包括三个步骤:

1、基因筛选。选择要作为拟时序分化依据的基因,软件官方提供了几种可选的方法。A、选择不同时间点分化差异基因,这应该是比较理想的情况,需要你提供的数据是根据不同分化时间点取样的;B、选择表达离散度高的基因,也就是在所有细胞里变化比较大的基因,如果只是想看某个亚群里细胞之间的分化选择这种方法是比较合适的;C、选择亚群间差异大的基因,一般想比较多个亚群间的分化关系选择这种方法效果会好一点;D、选择一些已知跟分化相关的基因。

2、数据降维。Monocle2使用DDRTree的非线性重建算法对细胞进行排序。

3、细胞排序。根据细胞的降维后的结果给每个细胞计算一个分化时间。不过这里有一点需要注意,做细胞排序这一步可以自己指定分化起点,要不然算法会随机选择一端作为起点,也就是说最终计算出来的分化时间有可能是倒过来的,即起点是终点,终点是起点。

#评估SizeFactors
HSMM_myo <- estimateSizeFactors(HSMM)
#计算离散度
HSMM_myo <- estimateDispersions(HSMM_myo)
#计算差异
diff_test_res1 <- differentialGeneTest(HSMM_myo,fullModelFormulaStr = '~clusters', cores = 4)
#选择差异基因
ordering_genes <- subset(diff_test_res1, qval < 0.05)[,'gene_short_name']
#基因过滤
HSMM_myo <- setOrderingFilter(HSMM_myo, ordering_genes)
#降维
HSMM_myo <- reduceDimension(HSMM_myo, max_components=2, method = 'DDRTree')
#细胞排序
HSMM_myo <- orderCells(HSMM_myo)

Monocle结果可视化:

#查看亚群分化关系
plot_cell_trajectory(HSMM_myo, color_by = "clusters",show_branch_points = F,cell_size =0.5)
图片
#按亚群分开展示
plot_cell_trajectory(HSMM_myo, color_by = "clusters",cell_size =0.5) + facet_wrap(~clusters, nrow = 4)
图片
#分样本展示
plot_cell_trajectory(HSMM_myo, color_by = "orig.ident",show_branch_points = F,cell_size =0.5)
图片

从亚群和样本的分布来看其实还是体现了一定的样本的异质性的,同一样本的亚群更容易分布到同一个分支上,这里的2、7、10号群有点分不太开,这时候我们就要思考一下,对于空转的数据有时候是不是单独分析某个样本上的分化是不是更合适一些。

选择单个样本的数据进行分析

这里我们选择小鼠大脑Sagittal-Anterior1的样本的皮层的亚群单独进行分析。

####单独绘制某个样本的图片
library("cowplot")
p1 <- SpatialPlot(combin.data,crop=FALSE,images='image')#这里Sagittal-Anterior1样本的镜像图片的名字是image,具体名称应跟前期读取镜像文件时设置的名字对应。
p2 <- SpatialFeaturePlot(combin.data, features = c("Stx1a"),images='image')
plot_grid(p1, p2)
图片

选择皮层marker高表达的2、7、10群进行拟时序分析。

#选择单个样本Sagittal-Anterior1的亚群进行分析
subdata <- subset(combin.data, orig.ident == 'Sagittal-Anterior1')
subdata <- subset(subdata, idents = c(2,4,10))
#单细胞count文件、细胞类型注释文件、基因注释文件
expression_matrix = subdata@assays$Spatial@counts
cell_metadata <- data.frame(group = subdata[['orig.ident']],clusters = Idents(subdata))
gene_annotation <- data.frame(gene_short_name = rownames(expression_matrix), stringsAsFactors = F) 
rownames(gene_annotation) <- rownames(expression_matrix)

#####新建CellDataSet object
pd <- new("AnnotatedDataFrame", data = cell_metadata)
fd <- new("AnnotatedDataFrame", data = gene_annotation)
HSMM <- newCellDataSet(expression_matrix,
                        phenoData = pd,
                        featureData = fd,
                        expressionFamily=negbinomial.size())

#评估SizeFactors
HSMM_myo <- estimateSizeFactors(HSMM)
#计算离散度
HSMM_myo <- estimateDispersions(HSMM_myo)
#计算差异
diff_test_res1 <- differentialGeneTest(HSMM_myo,fullModelFormulaStr = '~clusters', cores = 4)
#选择差异基因
ordering_genes <- subset(diff_test_res1, qval < 0.05)[,'gene_short_name']
#基因过滤
HSMM_myo <- setOrderingFilter(HSMM_myo, ordering_genes)
#降维
HSMM_myo <- reduceDimension(HSMM_myo, max_components=2, method = 'DDRTree')
#细胞排序
HSMM_myo <- orderCells(HSMM_myo)

结果可视化:

#查看亚群分化关系
plot_cell_trajectory(HSMM_myo, color_by = "clusters",show_branch_points = F,cell_size =0.5)
图片
#按亚群分开展示
plot_cell_trajectory(HSMM_myo, color_by = "clusters",cell_size =0.5) + facet_wrap(~clusters, nrow = 4)
图片

这里我们可以发现,之前选择两个样本一起的5个亚群分析的时候这3个群是有点区分不开的,在这次重新分析的时候却区分的很明显。这也说明选择的亚群范围不一样monocle得到的结果差异是很大的,究其原因可能是加入某些差异比较大的亚群或细胞后会进一步压缩原本差异比较小的亚群之间的差异分布。因为是算法同时计算多组差异变化难免会出现这种情况,所以我们在一开始选择亚群上就要稍微注意一点。

#绘制分化时间
cell_Pseudotime <- data.frame(pData(HSMM_myo)$Pseudotime)
rownames(cell_Pseudotime) <- rownames(cell_metadata)
plot_cell_trajectory(HSMM_myo, color_by = "Pseudotime",cell_size =0.5)
图片

从分化时间的分布来看三个亚群的分化大概顺序是从7号群一>10号群一>2号群,由于monocle的判断的分化起点是随机的,所以也有可能是倒过来的顺序。

我们再来看一下皮层marker基因Stx1a的在分化过程中的表达分布

#绘制Stx1a基因分化时间的变化
data_subset <- HSMM_myo['Stx1a',]
plot_genes_in_pseudotime(data_subset, color_by = "clusters")
图片

marker基因的表达分布基本是由低到高再降低的趋势。

下面重点来了!我们把细胞的分化时间对应到组织切片上!

#把分化时间对应到到组织切片位置上
combin.data[['Pseudotime']] <- 0
combin.data[['Pseudotime']][rownames(cell_Pseudotime),] <- cell_Pseudotime
SpatialFeaturePlot(combin.data, features = c("Pseudotime"),images='image')
图片

这时候我们就发现结果有点意思了,皮层细胞的分化在组织切片上是从外向内的方向的,当然也有可能实际上是反过来的,也就是从里往外的,总之就是细胞的分化是存在一定的空间位置规律的。

接着,我们再来看一下细胞分化过程中表达变化显著的基因有哪些。

#分析分化时间显著变化的基因
diff_test_res2 <- differentialGeneTest(HSMM_myo[ordering_genes,],fullModelFormulaStr = "~sm.ns(Pseudotime)",cores = 4)
#选择top50基因绘图
top50_gene = diff_test_res2[order(diff_test_res2$qval),][1:50,'gene_short_name']
plot_pseudotime_heatmap(HSMM_myo[top50_gene,], num_clusters = 6,cores = 1,show_rownames = T)
图片

从top50差异基因的情况来看,血红蛋白基因和线粒体基因在小鼠大脑皮层切片外层的表达比较高。我们也可以把所有差异基因都输出来,将不同表达趋势的基因模块分别进行功能富集,这样就可以知道随着皮层细胞的在空间位置的分化哪些功能发生了变化。

sig_gene_names <- subset(diff_test_res2, qval < 0.05)[,'gene_short_name']

今天的内容就介绍到这里啦。是不是突然发现空间转录组做拟时序分化的分析会比单细胞更有意思呢!因为示例数据里没有病理信息,如果结合病理特征来做拟时序分化分析应该能发现更多有价值的东西!

更多干货移步公众号:简生信
简生信,致力于分析单细胞、空转、其他组学生信数据挖掘分享。

空间转录组专题

空间转录组第一讲:10x空间转录组技术介绍

空间转录组第二讲:Space Ranger的使用

空间转录组第三讲:图像手动对齐

空间转录组第四讲:最详细的10x空间转录组summary网页报告解读

空间转录组第五讲:10x spaceranger aggr合并多个样本

空间转录组第六讲:数据预处理、降维、聚类(seurat)

空间转录组第七讲:多样本合并、marker基因分析

空间转录组第八讲:万字长文教你不写代码如何挖掘自己的数据

空间转录组第九讲:利用SingleR进行细胞类型注释

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

推荐阅读更多精彩内容