10X空间转录组空间高变基因分析之SPARK

hello,今天给大家分享一个检测空间高变基因的方法,分享这个内容的主要原因是下一篇我们要利用空间高变基因运用到我们的空间转录组分析,文献在Statistical analysis of spatial expression patterns for spatially resolved transcriptomic studies,nature method,IF27,软件在SPARK,不过最近作者推出了SPARK加强版,SPARK-X,我们后面也分享一下代码,其实关于10X空间转录组检测空间高变基因,大家可以参考之前的文章10X空间转录组-----空间高变基因检测之SpatialDE、10X空间转录组之基因的空间表达模式、trendsceek、HMRF,每种算法都有其优势和适用场景。对于10X空间转录组的空间高变基因该如何运用,我们下一篇分享,这一篇来看看这个软件。

SPARK软件算法通过广义线性空间模型直接对空间的count数据进行建模,用于识别从各种空间转录组学技术生成的数据中基因的空间表达模式。通讯作者是来自于美国密西根大学生物统计学的周翔教授(中国人)。

图片.png

Abstract

鉴定出空间转录组数据中呈现具有空间表达模式的基因是表征复杂组织的空间转录整体概况的重要第一步。在本文中作者提出了一种统计方法——SPARK,用于识别从空间转录组数据中基因的空间表达模式。SPARK通过广义线性空间模型直接对空间转录组数据进行建模。它依靠最新开发的统计公式进行假设检验,可有效控制I型错误并具有较高的统计能力。利用基于惩罚拟似然的高效计算算法,SPARK的应用可以扩展到包含数万个样本的数万个基因的数据集。本文中作者使用SPARK分析了四个已发表的空间转录组数据集,发现它的功效可能是现有方法的十倍之多,并揭示了新的生物学发现。

introduction

有效的基因空间表达模式分析(简写为SE)面临着重要的统计和计算挑战。当前仅有的两种SE分析方法:SpatialDE和Trendsceek都存在能效不足的问题,并且在应用于具有数百个基因且跨数百个空间位置的大型数据集时,在计算方面都存在一定的挑战。SE分析的一般步骤包括:空间表达的模型构建,对鉴定出的具有空间表达模式基因的进行统计检验以及可视化。作者提出了一种基于核函数(kernels)进行空间模式识别的SPARK算法,是一种旨在解决上述这些问题并更好地控制I类错误的新方法,可以从空间转录组数据中提取具有空间表达模式的基因。具体地说(图1),SPARK首先以原始计数的形式对空间数据进行建模,该数据呈现过度分散的Poisson分布并包含一个未知参数,该参数表示了每个位置的潜在空间随机过程,包括三个组成部分:1.观察到的解释变量(例如批效应或细胞周期信息);2.由于随机噪声引起的残余误差;3.用于描述数据空间自相关模式的广义线性空间模型(generalized linear spatial model,GLSM)。GLSM模型是基于核函数展开的,而鉴定具有空间表达模式基因的统计能力将取决于空间核函数K(s)的选择。具体地说,不同的核函数适用于具有不同空间表达模式的基因,核函数与目标基因所展现的潜在空间模式的匹配程度将决定该方法鉴定空间可变基因的能力。为了确保可靠地识别各种空间表达模式基因,作者考虑使用总共十个不同的空间核函数,包括五个具有不同周期性参数的周期核函数和五个具有不同平滑度参数的高斯核函数。为了克服解高维积分的难题,使利用GLSM实现可扩展的估计和推断成为可能,作者基于惩罚拟似然算法(penalized quasi-likelihood algorithm,PQL)来进行参数估计,通过柯西组合规则(Cauchy combination rule)得到一个最终校正后的P值

图片.png
  • 注:SPARK方法的示意图

Result

模拟数据:与Trendsceek方法不同,SpatialDE和SPARK具有基础的数据生成模型。但SPARK与SpatialDE不同的是,SPARK模型直接对数据进行计数,并依靠适当的统计过程来获得校准的P值。作者使用模拟数据来评估SPARK的性能,并将其与两种现有方法SpatialDE和Trendsceek进行了比较。在这里作者主要考察方法两个方面的性能:第一个是其控制I类错误的能力,第二是SPARK方法鉴定空间可变基因的能力。从图2b和c可以看出,在原假设条件下,SPARK在整个转录组范围内得到了最为准确的P值。Trendsceek方法中的Markvario和Vmark检验统计得到了较为合理的P值,而其他Emark统计和markcorr统计得出的P值则稍微偏保守。相比之下,SpatialDE产生的P值过于保守。图2d和e表征的是不同方法鉴别不同空间表达模式的空间可变基因的能力。结果证明,在不同FDR下, SPARK相比其他方法都更为有效。由于Trendsceek的性能相对较差。作者对第二组模拟数据进行了分析,这组数据模拟完全基于原始Trendsceek文献,在这组模拟数据中也得到了类似的结论。总体而言,SPARK在检测空间可变基因时比其他两种方法有更好控制I类错误的能力,并且检出能力更佳。

图片.png

真实数据1-小鼠嗅球数据:它由在260个位点上测得的11,274个基因组成。从图3a中可以看出,与模拟数据的结果一致,SPARK和Trendsceek均产生了较准确的P值,而SpatialDE则没有。与SpatialDE和Trendsceek相比,SPARK鉴定出更多的具有空间可变基因(图3b)。并且,仅由SPARK、SpatialDE和两者共同检测出的空间可变基因在整个空间位点上的表达量。作者发现大多数仅由SpatialDE检测到的空间可变基因的表达水平趋于零,这些基因在空间表达谱只在一个或两个位点上有表达,表明这些可能是潜在的假阳信号。相反,仅由SPARK检测到的空间可变基因通常具有与被两种方法同时检测到的空间可变基因相当的表达水平。

图片.png

为了评估由SPARK鉴定的空间可变基因的质量,作者又对由SPARK鉴定的772 基因进行了聚类分析,获得了三种主要的空间表达模式(下图):模式一代表二尖瓣细胞层;模式二代表肾小球层;模式三代表粒状细胞层。通过对三个层的先前已知的标记基因的表达谱图进行展示,可以清晰地看出三种空间表达模式(图3c和d)。进一步,在仅由SPARK检测到的空间可变基因中,三个模式每个模式随机挑选20个基因进行表达谱展示。结果显示,几乎所有这些基因都显示出清晰的空间表达模式,从而确认了SPARK的更高功效。

作者提供了另外三条证据来验证SPARK检测空间可变基因的可靠性(图3g)。首先,检查了该小鼠嗅球数据原文章中提出的嗅觉系统中比较显著的标记基因。作者对分析结果和此基因列表取交集,结果显示此基因列表中的十个的基因中SPARK能检测到八个,SpatialDE仅检测到三个,而Trendsceek未检测到。再者,作者获得了最近的有关小鼠嗅球的单细胞RNA测序研究中鉴定的2,030种细胞类型特异性标记基因的列表。结果显示,仅由SPARK鉴定出基因中有55%位于列表中,而仅由SpatialDE鉴定只有20%。第三,作者在Harmonizome数据库中获得了3,262个与嗅觉系统相关的基因。同样,仅由SPARK鉴定有26%,而仅由SpatialDE鉴定只有20%。这三个附加的验证分析证明了SPARK在鉴定SE基因方面的确更有优势。

最后,作者进行了对由SPARK和SpatialDE方法鉴定的空间可变基因的功能富集分析。对于SPARK,富集得到了1,023个GO注释和79个KEGG通路(图3h);而对SpatialDE鉴定的基因分析,得到了87个GO注释和两个KEGG通路。仅由SPARK识别的基因富集得到的许多GO注释或KEGG通路与突触组织和嗅球发育直接相关,包括嗅叶发育和催产素信号传导途径。分别单独选取模式I–III中的基因进行的深入富集分析提供了其他生物学见解,比如其揭示了突触组织在二尖瓣细胞层中的关键作用、细胞连接和突触对神经层连接的重要性以及树突形态发生和突触-树突可塑性对于颗粒层的重要性。总的来说,基因的功能富集分析也彰显出SPARK的优势。

图片.png

和第一个数据的验证方式一样,作者提供了另外三个证据来验证SPARK检测到的SE基因(图4c)。首先,作者将数据原文中得到的14个显著与癌症相关的基因与三种方法得到的结果进行交叉验证:SPARK检测到其中的十个基因,SpatialDE检测到七个基因,Trendsceek检测到两个基因。SpatialDE和Trendsceek都没有检测到三个与癌症相关的著名基因:SCGB2A2、KRT17和MMP14。图4e展示了五个仅由SPARK识别的肿瘤基因(HLA-B、EEF1A1、ERBB2、MMP14和CD44)的空间表达谱。图4e左上角的图展示了对样本进行染色后的样本图,深色表示潜在的肿瘤区域。其显示出肿瘤区域和这5种肿瘤基因的空间表达谱的模式相似。其次,作者在CancerMine数据库中收集了1144个与乳腺癌相关的基因列表。仅由SPARK鉴定的基因有14%在列表中,而仅由SpatialDE鉴定的基因有10%在列表中。其中,由大量的先前文献所证实的著名原癌基因ERBB2基因仅被SPARK鉴定。第三,作者从Harmonizome数据库中收集了3538个与乳腺癌相关的基因列表。仅由SPARK鉴定的基因的44%在列表中,而仅由SpatialDE鉴定的基因的37%在列表中。总体而言,这三个附加证据为SPARK的强大功能提供了支持。

最后,作者进行了功能富集分析(图4f)。在FDR值为5%时,SPARK识别出的空间可变基因功能富集后得到542个GO注释和20条KEGG通路,而SpatialDE识别了266个GO注释和三个KEGG通路。功能富集分析结果显示,仅由SPARK发现的许多富集的基因集与细胞外基质的组织和免疫应答有关,突显了它们在癌症发展和转移中的重要性。

讨论

在本文中,作者提出了一种统计方法SPARK,用于识别从各种空间转录组数据中具有空间表达模式的基因。SPARK通过广义线性空间模型直接对空间数据进行建模。它依靠最新开发的统计公式进行假设检验,可有效控制I类错误并具有较高的统计能力。利用基于惩罚拟似然的高效计算算法,使SPARK的应用可以扩展到包含成千上万个样本中成千上万个基因的数据集。使用SPARK分析已发布的空间转录组数据集,发现它的功效可能是现有方法的十倍之多,并揭示了现有方法无法揭示的生物学发现。SPARK直接对原始计数进行建模,以说明在空间数据中观察到的均值-方差相关性,从而使该方法检测空间可变基因的效能增加。作者综合了不同核函数的P值,以确保SPARK在各种可能的空间表达模式下的具有稳定性能,可靠地识别各种空间表达模式的基因,核函数的类型和数量的选择可以根据不同的研究需求来自行调整。总的来说,SPARK是当前用于识别空间转录组数据中具有空间表达模式基因的一种较好的统计分析方法。

最后来看看示例代码(SPARK)

SPARK 通过广义空间线性模型直接对从各种空间解析转录组学技术生成的计数数据进行建模。 它依赖于用于可扩展计算的惩罚准似然算法和最近开发的用于假设检验的统计公式,提供对 I 类错误的有效控制并产生高统计能力。

图片.png

加载

library('SPARK')
load("./Layer2_BC_Count.rds")
rawcount[1:5,1:5]

    17.907x4.967   18.965x5.003   18.954x5.995    17.846x5.993 20.016x6.019
GAPDH   1   7   5   1   2
USP4    1   0   0   0   0
MAPKAPK2    1   1   0   0   1
CPEB1   0   0   0   0   0
LANCL2  0   0   0   0   0

提取每个样本的注释信息,即位置或坐标

## extract the coordinates from the rawdata
info <- cbind.data.frame(x=as.numeric(sapply(strsplit(colnames(rawcount),split="x"),"[",1)),
                         y=as.numeric(sapply(strsplit(colnames(rawcount),split="x"),"[",2)),
                         total_counts=apply(rawcount,2,sum))
rownames(info) <- colnames(rawcount)
## filter genes and cells/spots and 
spark <- CreateSPARKObject(counts=rawcount, 
                             location=info[,1:2],
                             percentage = 0.1, 
                             min_total_counts = 10)

## total counts for each cell/spot
spark@lib_size <- apply(spark@counts, 2, sum)

## Take the first ten genes as an example
#spark@counts   <- spark@counts[1:10,]

Fit the statistical model under the null hypothesis.

## Estimating Parameter Under Null
spark <- spark.vc(spark, 
                   covariates = NULL, 
                   lib_size = spark@lib_size, 
                   num_core = 5,
                   verbose = F)

测试空间表达的模式基因。 默认情况下,核矩阵通过坐标自动计算,并检查核矩阵的正定义。 还有一个选项可以由用户提供内核矩阵。

## Calculating pval
spark <- spark.test(spark, 
                     check_positive = T, 
                     verbose = F)
head(spark@res_mtest[,c("combined_pvalue","adjusted_pvalue")])

    combined_pvalue   adjusted_pvalue
GAPDH   7.477171e-09    4.233403e-06
MAPKAPK2    1.016078e-01    1.000000e+00
MCL1    1.149519e-08    6.078909e-06
TMEM109 4.303998e-01    1.000000e+00
TMEM189 6.189064e-01    1.000000e+00
ITPK1   7.213287e-01    1.000000e+00

再来看看示例代码SPARK-X

SPARK-X 建立在强大的协方差测试框架之上,以对通过不同技术收集的各种空间转录组学数据进行建模。 它依赖于可扩展计算的代数创新以及新开发的用于假设检验的统计公式,产生校准良好的 p 值并产生高统计功效。 SPARK-X 具有很高的计算效率,并且是唯一可用于 HDST 数据的 SE 方法。

图片.png
library('SPARK')
load("./CN24_D1_unmodgtf_filtered_red_ut_HDST_final_clean.rds")
sp_count[26:30,1:5]

        1000x100 1000x103 1000x113 1000x114 1000x116
Gm42418        1        .        2        .        .
Gm10925        .        .        .        .        .
Gm7135         .        .        .        .        .
Atrx           .        .        .        .        .
Celf2          .        .        .        .        .

View the coordinates information location, each row denotes a gene and each column represents a spot.

## extract the coordinates from the rawdata
info <- cbind.data.frame(x=as.numeric(sapply(strsplit(colnames(sp_count),split="x"),"[",1)),
                         y=as.numeric(sapply(strsplit(colnames(sp_count),split="x"),"[",2)))
rownames(info)  <- colnames(sp_count)
location        <- as.matrix(info)
mt_idx      <- grep("mt-",rownames(sp_count))  ###去除线粒体基因
if(length(mt_idx)!=0){
    sp_count    <- sp_count[-mt_idx,]
}
####Analyze the data with SPARK-X
sparkX <- sparkx(sp_count,location,numCores=1,option="mixture")
## ===== SPARK-X INPUT INFORMATION ==== 
## number of total samples: 177455 
## number of total genes: 19913 
## Running with single core, may take some time 
## Testing With Projection Kernel
## Testing With Gaussian Kernel 1
## Testing With Gaussian Kernel 2
## Testing With Gaussian Kernel 3
## Testing With Gaussian Kernel 4
## Testing With Gaussian Kernel 5
## Testing With Cosine Kernel 1
## Testing With Cosine Kernel 2
## Testing With Cosine Kernel 3
## Testing With Cosine Kernel 4
## Testing With Cosine Kernel 5

输出结果

head(sparkX$res_mtest)
        combinedPval adjustedPval
Rcn2      0.11886766            1
Mycbp2    0.03704549            1
Mprip     0.10150035            1
Mroh1     0.92949857            1
Zfp560    0.28341540            1
Cacna1e   0.08444910            1

好了,下一篇我们来对空间高变基因进行实际运用

生活很好,有你更好

你可能感兴趣的:(10X空间转录组空间高变基因分析之SPARK)