利用SecAct推断空间转录组数据中每个spot的分泌蛋白活性。演示数据来自Visium平台 (直径55µm,覆盖1–10个细胞) 的肝癌转录组样本。SecAct还提供额外的模块,用于分析整张切片的signaling patterns和velocity。运行前,请确保已安装R包SecAct、SpaCET。
读取ST数据生成SpaCET对象
用create.SpaCET.object.10X创建SpaCET对象;visiumPath需指向10x Space Ranger标准输出文件夹。
library(SecAct)
library(SpaCET)
visiumPath <- paste0(file.path(system.file(package="SecAct"), "extdata/"), "Visium_HCC/")
SpaCET_obj <- create.SpaCET.object.10X(visiumPath)
SpaCET_obj <- SpaCET.quality.control(SpaCET_obj, min.genes = 1000)
SpaCET.visualize.spatialFeature(SpaCET_obj,spatialType = "QualityControl", spatialFeatures = c("UMI","Gene"), imageBg = T)
如果数据不是10x/Visium,则使用create.SpaCET.object创建对象,platform参数可为Visium、OldST、Slide-Seq。其中OldST是一种早期基于Visium开发的原位捕获方法。
oldST_Path <- system.file("extdata", 'oldST_PDAC', package = 'SpaCET')
load(paste0(oldST_Path,"/st_PDAC.rda"))
counts[1:5,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
head(spotCoordinates)
X Y
10x10 10 10
10x13 10 13
10x14 10 14
10x15 10 15
10x16 10 16
10x17 10 17
SpaCET_obj <- create.SpaCET.object(counts=counts, spotCoordinates=spotCoordinates, imagePath=NA, platform = "oldST")
推断分泌蛋白活性
加载数据后,运行SecAct.activity.inference.ST为每个spot推断分泌蛋白的活性 (内置数据里面的1000多个分泌蛋白)。结果保存在SpaCET_obj@results$SecAct_output$SecretedProteinActivity,包含以下四项:
(1) beta:回归系数;
(2) se:标准误;
(3) zscore:beta/se;
(4) pvalue:双侧置换检验p值。
SpaCET_obj <- SecAct.activity.inference.ST(inputProfile = SpaCET_obj, scale.factor = 1e5)
SpaCET_obj@results$SecAct_output$SecretedProteinActivity$zscore[1:3, 1:5]
50x102 3x43 14x94 3x117 45x115
A1BG 2.9877485 1.068970 -5.0383496 0.8635740 6.7936297
A2M 1.5463526 12.986296 8.7195348 -1.2096321 5.4726598
A2ML1 0.4440082 0.657533 0.9388323 0.6494576 -0.1023146
评估信号模式
在计算分泌蛋白活性后,使用SecAct.signaling.pattern 可进一步估计整张切片的信号模式,过程主要包含两个步骤:
首先,过滤分泌蛋白,筛选出在该切片中介导细胞间通讯的显著蛋白。实现过程:计算spot的信号活性与其邻居RNA表达的Spearman相关性,BH法校正p值,阈值为 r > 0.05 且 FDR < 0.01。
然后,用非负矩阵分解 (NMF) 估计信号模式。关键参数为分解秩k,可给k赋一个向量,如 k=2:5。函数将会选取silhouette值下降最大前的最优k。根据预计算,k=3最优。为了节省时间,可以直接设置k=3。
SpaCET_obj <- SecAct.signaling.pattern(SpaCET_obj, k = 3)
SpaCET.visualize.spatialFeature(SpaCET_obj, spatialType = "SignalingPattern", spatialFeatures = "All", imageBg = F, legend.position = "none", colors = c("#03c383", "#fbbf45", "#ef6a32"))
此外,SecAct 可根据NMF结果矩阵W为每个信号模式识别出主导分泌蛋白:若某蛋白在W的某列值至少为其他列2倍,则该模式即为该蛋白的主导模式。
pattern.gene <- SecAct.signaling.pattern.gene(SpaCET_obj, n=3)
head(pattern.gene)
1 2 3
CCL21 2.344438e+00 2.220446e-16 52.52424
PTGDS 2.344438e+00 2.220446e-16 52.52424
AOC3 2.220446e-16 2.220446e-16 50.51304
C1QTNF1 2.220446e-16 2.220446e-16 50.51304
CCDC3 2.220446e-16 2.220446e-16 50.51304
COL14A1 2.220446e-16 2.220446e-16 50.51304
signaling velocity
上面信号模式3的多个分泌蛋白与上皮-间质转化(EMT) 相关,如 COL1A1、TGFB1、SPARC。整合分泌蛋白编码基因表达与信号活性,SecAct可推断每个空间spot的signaling velocity,指示分泌信号的方向与强度。
SecAct.signaling.velocity.spotST(SpaCET_obj, gene = "SPARC")
生成动图可以直观地展示动态变化:
SecAct.signaling.velocity.spotST(SpaCET_obj, gene = "SPARC", animated=T)
解卷积ST数据
用户还可运行 SpaCET 估算每个spot的细胞类型比例。根据解卷积结果,可以查看spot里面的细胞组成成分。
SpaCET_obj <- SpaCET.deconvolution(SpaCET_obj, cancerType = "LIHC", coreNo = 8)
SpaCET.visualize.spatialFeature(SpaCET_obj, spatialType = "CellFraction", spatialFeatures = c("Malignant", "CAF", "Endothelial", "Macrophage", "Hepatocyte", "B cell", "T CD4", "T CD8"), sameScaleForFraction = T, pointSize = 0.1, nrow = 2)
hallmark打分
可以运行 SpaCET.GeneSetScore 估算每个spot的hallmark打分。可见模式3 与EMT相关。
SpaCET_obj <- SpaCET.GeneSetScore(SpaCET_obj, GeneSets = "Hallmark")
SpaCET.visualize.spatialFeature(SpaCET_obj, spatialType = "GeneSetScore", spatialFeatures = "HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION", legend.position = "right", imageBg = T, pointSize = 1.2)












网友评论