SpaCET实操教程二 | 空转数据的反卷积与基因集评分分析

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

前言

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

我们在上一期的推文中介绍了使用SpaCET的算法原理和直接反卷积与细胞通讯分析部分的实操教程,感兴趣的小伙伴可以先阅读这部分内容哦。

SpaCET:基于空转数据鉴定肿瘤功能区域

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

单细胞数据辅助反卷积

与很多反卷积的工具一样,SpaCET也是能够使用单细胞数据进行辅助反卷积的,这个功能也是SpaCET唯一能用在小鼠数据上的功能哦。

空转数据的读取

如果空转数据不是10X Visium该怎么读取呢?这次我们换一种读取方式,看看通用空转数据怎么读取。

PDAC_Path = system.file("extdata""oldST_PDAC", package = 'SpaCET')
load(paste0(PDAC_Path, "/st_PDAC.rda"))

这里counts和spotCoordinates分别记录着表达矩阵和spot的空间坐标信息,展示如下。

counts[1:6,1:5]
       10x10 10x13 10x14 10x15 10x16
A1CF       0     0     0     0     0
A2M       13     0     4     0     0
A4GALT     1     0     0     0     0
A4GNT      0     0     1     0     0
AAAS       0     0     0     0     0
AACS       0     0     0     0     0
spotCoordinates[1:5, ]
       X  Y
10x10 10 10
10x13 10 13
10x14 10 14
10x15 10 15
10x16 10 16

使用下面代码创建SpaCET对象。这里imagePath指定的是H&E染色的图像,这套数据没有,所以是NA。platform是空间组学平台,可以是"Visium"、"OldST"或者"Slide-seq"。"OldST"是早期原位空间捕获技术。

SpaCET_obj = create.SpaCET.object(
  counts,
  spotCoordinates,
  imagePath = NA,
  platform = "oldST"
)

可能是由于数据质量比较好,没有需要过滤的点,官方教程在这里就没有进行质控了,但是还是养成好习惯,做做质控的好。

# calculate the QC metrics
SpaCET_obj = SpaCET.quality.control(SpaCET_obj)

# plot the QC metrics
SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "QualityControl",
  spatialFeatures = c("UMI""Gene"),
  imageBg = T
)

这样我们就得到了UMI count数和基因数在空间中的分布。我们也可以看出,这套空间组学图像长得像赛尔号是没有H&E染色的底片的,仅由空间spot组成。

单细胞数据的导入

单细胞转录组数据需要首先处理成sc_counts和sc_annotation的形式,这两个矩阵就是大家非常熟悉的counts矩阵和metadata,很容易从seurat对象得到。

sc_counts[1:61:5]
        c1 c2 c3 c4 c5
A1BG     0  0  0  0  0
A1CF     0  0  0  1  0
A2M      0  0  0  0  0
A2ML1    0  0  0  0  0
A3GALT2  0  0  0  0  0
A4GALT   0  0  0  0  0
sc_annotation[1:6,]
   cellID bio_celltype                            
c1 "c1"   "Acinar cells"                          
c2 "c2"   "Ductal - terminal ductal like"         
c3 "c3"   "Ductal - terminal ductal like"         
c4 "c4"   "Ductal - CRISP3 high/centroacinar like"
c5 "c5"   "Cancer clone A"                        
c6 "c6"   "Cancer clone A"    

这个软件非常好用的地方还在于,它可以同时对大群和亚群进行反卷积,只需要把大群对应的亚群存储在sc_lineageTree这个列表里就行了。

head(sc_lineageTree)
$Cancer
[1] "Cancer clone A" "Cancer clone B"

$Ductal
[1] "Ductal - APOL1 high/hypoxic"            "Ductal - CRISP3 high/centroacinar like"
[3] "Ductal - MHC Class II"                  "Ductal - terminal ductal like"         

$Macrophage
[1] "Macrophages A" "Macrophages B"

$mDC
[1] "mDCs A" "mDCs B"

$`Acinar cells`
[1] "Acinar cells"

$`Endocrine cells`
[1] "Endocrine cells"

反卷积

然后就是反卷积和可视化的过程,就跟之前类似,就不再赘述了。

SpaCET_obj = SpaCET.deconvolution.matched.scRNAseq(
  SpaCET_obj,
  sc_counts = sc_counts,
  sc_annotation = sc_annotation,
  sc_lineageTree = sc_lineageTree,
  coreNo = 8
)

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "CellFraction",
  spatialFeatures = c("Cancer clone A""Cancer clone B""Acinar cells""Ductal - CRISP3 high/centroacinar like"),
  nrow = 2
)

这里再将这四种细胞类型的marker基因展示一下,由此可以看出反卷积效果还是挺好的。

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "GeneExpression",
  spatialFeatures = c("TM4SF1""S100A4""PRSS1""CRISP3"),
  nrow = 2
)

最后保存SpaCET对象,后面的细胞互作分析就留作给读者的作业啦。

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

基因集评分

类似于GSVA和AUCell,SpaCET也能计算基因集评分,这里我就省略前面数据导入和质控的过程,直接计算几个基因集的分数。

Hallmark

官网位置:https://www.gsea-msigdb.org/gsea/msigdb/human/collections.jsp#H
经常做GSEA或GSVA的读者应该清楚,Hallmark是Msigdb数据库中的一个经典基因集,我们可以用下面代码对Hallmark基因集进行评分。

SpaCET_obj = SpaCET.GeneSetScore(SpaCET_obj, GeneSets = "Hallmark")

计算完成后的基因集评分矩阵存储在了result下面,可以进行查看。这里行名为基因集名,列名为spot名。

SpaCET_obj@results$GeneSetScore[1:61:6]
                                50x102      59x19      14x94      47x13     73x43      61x97
HALLMARK_ADIPOGENESIS        0.1577183 0.18533833 0.14495333 0.16393333 0.1640183 0.16843500
HALLMARK_ALLOGRAFT_REJECTION 0.2078400 0.14678500 0.15672667 0.22078000 0.1486567 0.13316000
HALLMARK_ANDROGEN_RESPONSE   0.1230528 0.14306601 0.12574917 0.12489439 0.1682046 0.15501320
HALLMARK_ANGIOGENESIS        0.1749259 0.06383333 0.09259259 0.13099074 0.1601759 0.03875000
HALLMARK_APICAL_JUNCTION     0.1428600 0.13054833 0.12602333 0.14001500 0.1462733 0.13059000
HALLMARK_APICAL_SURFACE      0.0734697 0.06328030 0.06287121 0.05065152 0.0674697 0.07623485

使用下面代码对其中两个基因集的富集分数进行可视化。

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "GeneSetScore",
  spatialFeatures = c("HALLMARK_HYPOXIA""HALLMARK_TGF_BETA_SIGNALING")
)

Cancer cell state

文献:https://www.nature.com/articles/s41588-022-01141-9 Cancer cell state基因集记录的是肿瘤细胞的各种状态对应的基因,可以采用相同的方式进行基因集评分和可视化。这里可视化了周期中肿瘤细胞和EMT转化的肿瘤细胞。

# run gene set calculation
SpaCET_obj = SpaCET.GeneSetScore(SpaCET_obj, GeneSets = "CancerCellState")

# visualize two gene sets
SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "GeneSetScore",
  spatialFeatures = c("CancerCellState_Cycle""CancerCellState_cEMT")
)

TLS

文献:https://www.researchsquare.com/article/rs-3921508 TLS就是一个单独的基因集,它包含有30个三级淋巴结构的标志基因,计算这个基因集的评分并进行可视化,可以明显看出三级淋巴结构的位置。

SpaCET_obj = SpaCET.GeneSetScore(SpaCET_obj, GeneSets = "TLS")

SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "GeneSetScore",
  spatialFeatures = "TLS"
)

自定义基因集

除了上面3种软件内置基因集,也可以根据分析需求自己定义基因集,将其整理成列表的形式就能进行分析了。这里是将T细胞和髓系细胞的marker基因创建为基因集。

gmt1 = list(
  Tcell = c("CD2""CD3E""CD3D"),
  Myeloid = c("SPI1""FCER1G""CSF1R")
)
SpaCET_obj = SpaCET.GeneSetScore(SpaCET_obj, GeneSets = gmt1)
SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "GeneSetScore",
  spatialFeatures = "Tcell"
)

在Msigdb官网上能够下载到各种通路的gmt文件,而gmt文件读取进来就是列表格式,所以能直接进行分析。这里举的例子是读取KEGG通路进行评分分析。

gmt2 = read.gmt("~/ref/human/msigdb_v2023.1.Hs_files_to_download_locally/msigdb_v2023.1.Hs_GMTs/c2.cp.kegg.v2023.1.Hs.symbols.gmt")
SpaCET_obj = SpaCET.GeneSetScore(SpaCET_obj, GeneSets = gmt2)
SpaCET.visualize.spatialFeature(
  SpaCET_obj,
  spatialType = "GeneSetScore",
  spatialFeatures = "KEGG_DNA_REPLICATION"
)

总的来说,SpaCET是一个较为强大的分析肿瘤空转数据的R包,许多功能都非常实用,并且函数的参数也很显而易见,对于新手很友好,推荐大家使用。

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


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