SpaCET实操教程一|空间转录组学数据的反卷积与细胞通讯分析

文化   2024-08-02 11:00   陕西  

前言

SpaCET是一个分析肿瘤空间转录组数据的R包,它能估计细胞谱系和肿瘤微环境中的细胞互作。SpaCET首先通过整合常见的恶性肿瘤模式推断肿瘤细胞,然后采用约束线性回归模型来校准局部组织密度,并基于全面的非恶性细胞图谱确定基质和免疫细胞谱系分数。此外,SpaCET能够揭示肿瘤微环境中假定的细胞间相互作用,特别是在肿瘤免疫界面处。值得注意的是,尽管SpaCET不需要任何参考细胞表达谱来分析肿瘤空转数据,但SpaCET仍然可以将匹配的scRNA-seq数据集作为定制参考,以对任何空转数据集进行细胞类型反卷积。


GitHub主页:https://github.com/data2intelligence/SpaCET?tab=readme-ov-file

安装

SpaCET R包主要通过github安装,命令如下

devtools::install_github("data2intelligence/SpaCET")

直接反卷积与细胞通讯

直接反卷积

创建SpaCET对象

首先需要获取10X Visium的空间转录组数据路径,这里官方文档用的是SpaCET包内置的demo数据,读者自己分析的时候就指定Space Ranger的输出文件夹就行。

visiumPath = file.path(system.file(package = "SpaCET"), "extdata/Visium_BC")

然后用下面这行代码从10X Visium数据创建SpaCET对象

SpaCET_obj = create.SpaCET.object.10X(visiumPath = visiumPath)

SpaCET的内部结构如下,input存储着输入数据信息,其中counts存储着表达矩阵的原始counts数,spotCoordinates存储着spot的空间坐标,image存储着图像信息。results部分存储分析结果,目前还没有分析结果。可以通过下面的代码提取表达矩阵,得到稀疏矩阵的格式。

SpaCET_obj@input$counts[1:8,1:6]
8 x 6 sparse Matrix of class "dgCMatrix"
            50x102 59x19 14x94 47x13 73x43 61x97
MIR1302-2HG      .     .     .     .     .     .
FAM138A          .     .     .     .     .     .
OR4F5            .     .     .     .     .     .
AL627309.1       .     .     .     .     .     1
AL627309.3       .     .     .     .     .     .
AL627309.2       .     .     .     .     .     .
AL627309.4       .     .     .     .     .     .
AL732372.1       .     .     .     .     .     .

这里小编有一点说明:作者使用@提取S4对象内部数据其实是不规范的,这不符合R面向对象编程里的封装思想。规范的做法应该是写一个函数用于提取表达矩阵,一些主流包比如Seurat、clusterProfiler等都是这样的。建议读者以后写代码的时候也尽量少用@,尽可能用函数访问S4对象内部数据,因为如果软件版本更新数据结构发生了较大变化(如Seurat v4到v5),函数还是向下兼容的。

质控

使用下面代码去除一些低质量的spot,这个demo数据集质量很好,没有spot去除。

SpaCET_obj = SpaCET.quality.control(SpaCET_obj)
[1] "0 spots are removed."
[1] "3813 spots are kept."

用下面代码能可视化UMI counts数和基因在空间中的分布

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "QualityControl",
  spatialFeatures = c("UMI""Gene"),
  imageBg = T
)

反卷积

SpaCET相比于其他反卷积的软件一大优势就是对于肿瘤的空转数据反卷积不需要依赖单细胞转录组数据,只需要输入肿瘤类型即可,降低了分析难度和工作量。用下面代码直接对肿瘤数据进行反卷积。
SpaCET的反卷积分为两个阶段,第一个阶段主要根据拷贝数变异(CNA)推断出肿瘤细胞,第二个阶段再根据基因表达模式推断非肿瘤细胞占比。

SpaCET_obj = SpaCET.deconvolution(SpaCET_obj, cancerType = "BRCA", coreNo = 8)
[1] "Stage 1. Infer malignant cell fraction."
[1] "Stage 1 - Step 1. Clustering."
[1] "Stage 1 - Step 2. Find tumor clusters."
[1] "                  > Use CNA signature: BRCA"
[1] "Stage 1 - Step 3. Infer malignant cells."
[1] "Stage 2. Hierarchically deconvolve non-malignant cell fraction."
[1] "Stage 2 - Level 1. Estimate the major lineage."
[1] "Stage 2 - Level 2. Estimate the sub lineage."

用下面代码展示反卷积的结果,由此可以看出:出现明显CNA的spot全部由肿瘤细胞组成,而剩下的“非肿瘤”的spot由很多丰富的细胞类型组成,其中也会有一定比例的肿瘤细胞。

SpaCET_obj@results$deconvolution$propMat[1:131:6]
                  50x102 59x19        14x94        47x13        73x43        61x97
Malignant   2.893773e-01     1 6.837607e-02 3.931624e-01 9.609280e-01 9.194139e-01
CAF         3.163821e-01     0 3.407073e-01 1.097036e-01 3.574226e-02 1.188087e-08
Endothelial 5.336592e-02     0 1.437305e-01 3.158819e-02 3.131874e-03 2.821070e-07
Plasma      2.357100e-02     0 1.545800e-02 1.143168e-02 2.860620e-06 6.033759e-07
B cell      1.635494e-06     0 9.124039e-02 1.428810e-01 6.024976e-07 4.950137e-03
T CD4       1.398204e-01     0 1.449732e-02 1.255919e-01 1.078390e-06 6.465675e-05
T CD8       1.912835e-03     0 4.234951e-08 1.160909e-05 1.082662e-06 3.989138e-07
NK          9.730653e-07     0 9.357629e-08 5.559072e-06 8.374730e-10 3.044708e-05
cDC         9.749215e-07     0 7.987534e-02 7.481229e-02 2.559613e-07 3.193637e-06
pDC         1.663623e-06     0 2.216760e-02 1.861948e-02 7.840768e-07 2.968179e-03
Macrophage  1.734443e-01     0 5.246404e-02 9.195832e-02 3.443742e-08 7.013026e-06
Mast        3.619528e-07     0 1.376661e-05 5.051566e-06 1.873357e-09 3.432348e-06
Neutrophil  3.077935e-09     0 2.551519e-07 9.970638e-08 1.908617e-04 9.839405e-06

可视化

使用下面代码可视化肿瘤细胞和巨噬细胞的空间分布

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "CellFraction",
  spatialFeatures = c("Malignant""Macrophage")
)

可以一次性可视化所有一级和二级细胞类型的空间分布

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "CellFraction",
  spatialFeatures = "All",
  sameScaleForFraction = T,
  pointSize = 0.1,
  nrow = 5
)

对于编程能力不太好的读者,作者也贴心地开发了交互式空间可视化功能,这样就能以点点点的形式调整展示的类型、特征,spot的大小和透明度等等,非常方便。

SpaCET.visualize.spatialFeature(SpaCET_obj,interactive=TRUE)

细胞通讯

细胞共定位分析

细胞间要通讯,首选需要保证细胞间有共定位。使用下面代码进行细胞间共定位分析

SpaCET_obj = SpaCET.CCI.colocalization(SpaCET_obj)

对细胞共定位可视化。结果左图显示出细胞类型两两共定位的相关系数和比例,右边的图横纵坐标分别表示两细胞间细胞表达谱和细胞定位的相关系数,如果两种细胞类型共定位非常相关,但是表达谱不太相关,如CAF和巨噬细胞M2,就说明这两种细胞类型的共定位不是由相似的表达谱造成的,而是其他原因。

SpaCET.visualize.colocalization(SpaCET_obj)

计算L-R互作网络

使用如下代码计算配体受体对互作网络。SpaCET首先对L-R互作网络随机打乱生成1000个网络,但保持边权重不变,然后再计算每个spot的网络分数。
但是要注意一点,SpaCET仅支持对人的数据进行L-R分析,其他物种,包括小鼠,都不支持。对于小鼠数据只支持自行提供单细胞转录组做反卷积。

SpaCET_obj = SpaCET.CCI.LRNetworkScore(SpaCET_obj, coreNo = 8)
[1] "Step 1. Permute Ligand-Receptor network."
[1] "Step 2. Calculate L-R network score."

对网络分数和p值进行可视化

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "LRNetworkScore",
  spatialFeatures = c("Network_Score""Network_Score_pv")
)

对我们感兴趣的一些共定位的细胞系,进行配受体对分析。

SpaCET_obj = SpaCET.CCI.cellTypePair(SpaCET_obj, cellTypePair = c("CAF""Macrophage M2"))
[1] "Based on colocalization analysis and L-R enrichment analysis, CAF and Macrophage M2 have potential intercellular interaction in the current tissue."

从可视化的结果可以看出:spot中CAF和巨噬细胞M2呈现一定的相关性,并且相比于单一细胞类型分布区域,共定位区域L-R互作分数更高。

SpaCET.visualize.cellTypePair(SpaCET_obj, cellTypePair = c("CAF""Macrophage M2"))

肿瘤组织边界分析

与前面介绍的许多软件一样,SpaCET也能用于揭示肿瘤组织边界。

# Identify the Tumor-Stroma Interface
SpaCET_obj = SpaCET.identify.interface(SpaCET_obj)

# Visualize the Interface
SpaCET.visualize.spatialFeature(SpaCET_obj, spatialType = "Interface", spatialFeatures = "Interface")

可以同时可视化细胞对共定位和肿瘤组织边界。

# Combine the interface and interaction spots
SpaCET_obj = SpaCET.combine.interface(SpaCET_obj, cellTypePair = c("CAF""Macrophage M2"))

# Visualize the Interface. 
SpaCET.visualize.spatialFeature(SpaCET_obj, spatialType = "Interface", spatialFeatures = "Interface&CAF_Macrophage M2")

使用下面代码计算俩细胞类型共定位spot到肿瘤组织边界的平均距离,可以发现:总体细胞类型对的共定位spot到肿瘤组织边界的平均距离服从正态分布,而CAF和巨噬细胞M2到肿瘤组织边界的距离显著高于总体平均水平。

SpaCET.distance.to.interface(SpaCET_obj, cellTypePair = c("CAF""Macrophage M2"))

肿瘤异质性亚群的揭示

为了进一步揭示肿瘤的异质性,可以进一步对于肿瘤异质性亚群进行反卷积。

SpaCET_obj = SpaCET.deconvolution.malignant(SpaCET_obj, coreNo = 8)
[1] "Identify 2 malignant cell states"

反卷积的结果也是用相同的方式提取。

SpaCET_obj@results$deconvolution$propMat[c("Malignant cell state A""Malignant cell state B"), 1:6]
                          50x102        59x19      14x94     47x13     73x43      61x97
Malignant cell state A 0.1363665 9.999900e-01 0.03247884 0.2376213 0.6831702 0.88992420
Malignant cell state B 0.1530107 1.239573e-11 0.03589714 0.1555406 0.2777569 0.02948971

对反卷积的肿瘤异质性亚群可视化

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "CellFraction",
  spatialFeatures = c("Malignant""Malignant cell state A""Malignant cell state B"),
  nrow = 1
)

这是经过分析后的SpaCET对象,第一个metrics记录的就是质控的结果。deconvolution记录着反卷积的结果,其中Ref记录着细胞类型参考表达谱和marker基因的信息,propMat就是细胞类型的评分矩阵。CCI记录着细胞互作的结果,其中colocalization记录着细胞间共定位信息,LRNetworkScore记录着配受体对互作强度信息,interaction记录着指定的细胞对互作结果,interface记录着肿瘤组织边界信息。

最后,可以将SpaCET对象保存下来。

write_rds(SpaCET_obj, "brac.deconv.rds")

好啦,今天的分享就到这里了,下期将与大家分享如何使用SpaCET工具结合单细胞数据对空转数据进行反卷积分析以及基因集打分的实操部分,我们下期再会~


关注公众号,下回更新不迷路




生信宝库
本公众号只用于生信知识的收集与传播,以及生信人之间互相交流和学习,不会涉及任何商业利益。本公众号各小编平时忙于科研,更新文章较其它同类型公众号较慢,但保持宁缺毋滥的本心,只更新对大家有用的推文。
 最新文章