内容

1简介

红衣主教2为质谱(MS)成像实验的有监督和无监督分析提供了统计方法。只要有适当的实验设计和样本量,也可以进行类比较。

在进行统计分析之前,确定实验的统计目标是很重要的:

CardinalWorkflows提供真实的实验数据和统计方法的更详细的讨论,而不是在这个简要概述中覆盖。

2探索性分析

假设我们正在研究一个未标记的数据集,并希望了解数据的结构。

set.seed(2020) mse <- simulateImage(preset=2, npeaks=10, dim=c(20,20), sdnoise=0.5, peakheight=c(2,4), representation="centroid") design <- makeFactor(circle=mse$circle, square=mse$square, bg=!(mse$circle | mse$square))图像(mse,设计~ x * y,键=TRUE)

图像(mse, feature=c(1,4,7), layout=c(1,3))

2.1主成分分析(PCA)

主成分分析是一种无监督降维技术。它将数据减少到一些“主成分”,这些“主成分”是原始质量特征的线性组合,其中每个成分都与最后一个正交,并尽可能多地解释数据中的方差。

使用主成分分析()对a进行PCA分析MSImagingExperiment

pca <- pca (mse, ncomp=3)摘要(pca)
##主成分分析:## ##成分标准差## 1 1 4.7061494 ## 2 2 2.6134145 ## 3 3 0.6136734

我们可以看到,前两个主成分解释了数据中的大部分变化。

图像(pca, values="scores", superpose=FALSE, layout=c(1,3))

分量的载荷显示了每个质量特征对每个分量的贡献。

plot(pca, values="loading ", superpose=FALSE, layout=c(1,3), lwd=2)

将主成分分数相互绘制出来是可视化数据类之间分离的一种有用的方法。

pca_scores <- DataFrame(resultData(pca, 1, "scores")) plot(pca_scores, PC1 ~ PC2, groups=design, pch=20)

2.2功能colocalization

在分析MS成像实验中,寻找与特定图像共域的其他质量特征是一项常见的任务。

使用colocalize ()找到与另一张图像共域的质量特征。

Coloc <- colocalized(mse, mz=1023
##共域功能:## mz圆方相关M1 M2 ## 1 1023.7081 2.011661 4.063644 1.0000000 1.000 1.000 ## 2 1135.9335 2.434873 3.985370 0.9430259 0.875 0.875 ## 3 1200.4653 2.219637 4.166854 0.9292082 0.865 0.865 ## 4 1361.2682 0.000000 4.259568 0.6671688 0.710 0.710 ## 5 1227.9380 0.000000 4.039750 0.6671688 0.675 0.675 ## 6 1453.5096 0.000000 4.187344 0.6657311 0.695 0.695 ## 7 1858.8985 0.000000 3.970513 0.6620943 0.705 ## 8 781.2367 1.39247 0.3891237 0.650 0.650 ## 9 473.9206 2.3407990.000000 0.3632409 0.600 0.600 ## 10 788.8633 1.542205 0.000000 0.3378016 0.605 0.605

默认情况下,皮尔逊相关性用于对共域特征进行排序。还提供了Manders共域系数(M1和M2)。

Image (mse, mz= colc $mz[1:3], layout=c(1,3))

3.图像分割

对数据集进行分割(聚类)是总结MS成像实验并在样本中发现感兴趣区域的一种有效方法。

3.1空间收缩质心聚类

空间感知的最接近收缩质心聚类可以同时进行图像分割和特征选择。

平滑半径r,初始簇数k、稀疏性参数年代必须提供。

稀疏性参数越大年代,质量特征越少越有助于分割。

空间收缩的质心可能导致的簇数少于初始簇数k,因此建议使用值k这比预期的集群数量要大,并且允许该方法自动选择集群的数量。

ssc <- spatialshrinkkencentroids (mse, r=1, k=5, s=c(0,3,6,9)) summary(ssc)
##空间感知最接近的收缩中心点:## ##分割/聚类##方法=高斯##距离= chebyshev ## ##半径(r)初始化(k)收缩(s)类特征/类## 1 1 5 0 4 10.00 ## 2 1 5 33 10.00 ## 3 1 5 6 3 8.67 ## 4 1 5 9 3 7.33

绘制预测的聚类概率图可以清晰地分割到地面真实图像中。

图像(ssc,模型=列表(s=9),值="概率")

空间收缩质心计算每个片段和每个质量特征的t统计量。这些t统计量是集群中心和全局平均值之间差异的度量。

Plot (ssc, model=list(s=9), values="statistic", lwd=2)

t统计量为零的质量特征对分割没有帮助。t统计量的符号表示相对于全局平均值,在给定的聚类中质量特征是过度表达还是过表达。

使用topFeatures ()根据t统计量对质量特征进行排序。

ssc_top <- topFeatures(ssc, model=list(s=9), class == 1
##顶级功能:# # mz圆广场r k s类中心统计# # 1 473.9206 2.340799 0.000000 1 5 9 1 2.3475172 - 11.9165555 # # 2 1135.9335 2.434873 3.985370 1 5 9 1 4.3294593 - 4.0936001 # # 3 788.8633 1.542205 0.000000 1 5 9 1 0.7122964 - 0.9371928 # # 4 781.2367 1.392247 0.000000 1 5 9 1 0.6067728 - 0.3683360 # # 5 1023.7081 2.011661 4.063644 1 5 9 1 2.8075020 - 0.0000000 # # 6 1200.4653 2.219637 4.166854 1 5 9 1 2.4490113 - 0.0000000 # # 7 1858.8985 0.000000 3.970513 1 5 9 1 1.2245057 - 0.0000000 # # 8 1361.2682 - 0.0000004.259568 1 59 1 1.3563276 -0.3583295 ## 9 1453.5096 0.000000 4.187344 1 59 1 1.3431417 -1.3316029 ## 10 1227.9380 0.000000 4.039750 1 59 1 1.2913549 -2.2072382

3.2空间狄利克雷高斯混合建模

空间感知的狄利克雷高斯混合模型(spatial-DGMM)是一种单独应用于每个质量特征的图像分割方法,而不是将数据集作为一个整体。

这对于总结分子离子图像很有用,对于发现用所有质量特征聚类可能遗漏的结构也很有用。

dgmm <- spatialDGMM(mse, r=1, k=5, method="adaptive")
# # Spatially-aware狄利克雷高斯混合模型:# # # #分割组:1日run0 # # =自适应方法=切比雪夫# # # # # #距离半径(r) Init (k)功能类/组# # 1 1 5 1 2 # # 2 1 2 4 # # 3 1 5 1 # 3 # 4 1 5 4 3 # 5 # 1 5 5 3 # 6 # 1 5 6 4 # # 7 1 5 7 2 # # 8 1 5 8 2 # # 9 1 5 9 2 # # 10 1 5 10 2

不同的分割适合于每个质量特征。

图像(dgmm,模型=列表(特征=c(1,4,7)),布局=c(1,3)))

每个图像都被建模为高斯分布的混合物。

Plot (dgmm, model=list(feature=c(1,4,7)), layout=c(1,3))

空间- dgmm分割在寻找与感兴趣区域共定位的大量特征时特别有用。

当应用于SpatialDGMM对象,colocalize ()能够使用匹配分数,比使用皮尔逊相关对原始离子图像具有更高的特异性。

- colocalized(dgmm, mse$square)子集(Coloc2, select=c(-r, -k, -group))
##共域功能:## mz圆方形特征类Mscore M1 M2 ## 1 1227.9380 0.000000 4.039750 72 0.9811321 1.0000000 0.9811321 ## 2 1453.5096 0.000000 4.1873329 0.9935897 0.9687500 ## 3 1361.2682 0.9935882 0.9430380 0.9551282 0.9867550 ## 4 1858.8985 0.000000 0.000000 3.970513 102 0.9050633 0.9166667 0.9862069 ## 5 1200.4653 2.219637 4.166854 64 0.5053763 0.6025641 0.7580645 ## 6 1023.7081 2.011661 4.063644 4 0.5000000 0.6153846 0.7272727 ## 7 473.9206 2.340799 0.000000 11 0.48344370.9358974 0.5000000 ## 8 788.8633 1.542205 0.000000 3 1 0.3900000 1.0000000 0.3900000 ## 9 1135.9335 2.434873 3.985370 53 0.3880597 0.5000000 0.6341463 ## 10 781.2367 1.392247 0.000000 2 1 0.3794326 0.6858974 0.4592275

4分类和交叉验证

基于质谱将像素分类为不同的已知类别(例如,癌症vs正常)是MS成像的常见应用。

set.seed(2020) mse2 <- simulateImage(预设=7,npeaks=10, dim=c(10,10), sdnoise=0.5, nruns=3, peakdiff=2, representation="centroid") class <- makeFactor(A=mse2$circleA, B=mse2$circleB) image(mse2, class ~ x * y, key=TRUE, layout=c(1,3))

Image (mse2, feature=1, layout=c(1,3))

在进行分类时,使用交叉验证是很重要的,这样报告的准确性就不会过于乐观。

我们强烈建议确保来自同一实验运行的所有光谱属于同一褶皱,以减少由于运行效应的预测偏差。

4.1投影到潜在结构(PLS)

投影到潜在结构(PLS),又称偏最小二乘,是一种监督降维技术。它可以被认为类似于PCA,但用于分类或回归。

cv_pls <- crossValidate(mse2, .y=class, .fun=PLS, ncomp=1:5, .fold=run(mse2)) summary(cv_pls)
##交叉验证:## ## 2类分类:A B ##汇总3折叠:run0 run1 run2 ## ## ncomp精度灵敏度特异性## 11 0.6608485 0.0000000 1.0000000 ## 2 2 0.8100534 0.4811594 0.9690476 ## 3 3 0.9200094 0.8405797 0.9776557 ## 4 4 0.9132067 0.8550725 0.9553114 ## 55 0.9088528 0.7884058 0.9648352

我们可以看到,使用3 PLS组件产生最好的交叉验证精度。

pls <- pls (mse2, y=class, ncomp=3)
对潜在成分的投影:## ##对2类的分类:A b# #方法= pls ## ##成分数量精度灵敏度特异性## 1 3 0.9 0.7647059 0.9775281

我们可以画出拟合值来可视化预测。

图像(pls, values=" fitting ", layout=c(1,3))

PLS回归系数可以用来选择有影响的特征。

图(pls, values="coefficients", lwd=2)

与PCA一样,将PLS分数相互绘制出来以可视化类之间的分离是很有用的。

pls_scores <- DataFrame(resultData(pls, 1, "scores")) plot(pls_scores, C1 ~ C2, groups=class, pch=20)

注意,正交PLS (O-PLS)也可通过方法= " opls "或者用separateOPLS ()方法。通常情况下,两种方法的表现相似,尽管O-PLS有时可以产生更容易解释的回归系数。

4.2空间收缩质心分类

空间感知的最接近收缩质心分类是最接近收缩质心的扩展,将空间信息融入到模型中。

就像在空间收缩质心的聚类情况下,平滑半径r必须与稀疏性参数一起提供年代

cv_ssc <- crossValidate(mse2, .y=class, .fun= spatialshrinkkencentroids, r=1, s=c(0,3,6,9), .fold=run(mse2)) summary(cv_ssc)
##交叉验证:## ## 2类分类:A B ##汇总3折叠:run0 run1 run2 ## ## r s精度灵敏度特异性## 1 1 0 0.9661925 1.0000000 0.9505495 ## 21 3 0.9429979 0.8840580 0.9871795 ## 3 1 6 0.8593713 0.6666667 1.0000000 ## 4 19 0.7955665 0.5217391 1.0000000

我们可以看到,在这种情况下,全密度模型(s = 0)使用所有质量特征的方法对数据具有最佳的交叉验证精度。

ssc2 <- spatialshrinkkencentroids (mse2, y=class, r=1, s=0) summary(ssc2)
##空间感知最接近的收缩质心:## ## 2类分类:A b# #方法=高斯##距离= chebyshev ## ##半径(r)收缩(s)特征/类精度灵敏度特异性## 1 10 10 0.9714286 1 0.9550562

在这种情况下,绘制预测的类概率会产生比PLS更容易解释的可视化。

图像(ssc2布局= c(1、3))

t统计图显示,前三个特征在条件“B”中丰度更高。

图(ssc2, values="statistic", lwd=2)

topFeatures (ssc2类= = " B ") % > %子集(select = c(选项,- r - k - s))
##顶级功能:## mz ref circleA circleB类中心统计## 1 788.8633 0.0000000 0.8374991 2.8374991 B 4.3684041 24.463624 ## 2 781.2367 0.0000000 1.0220864 3.0220864 B 4.133.9206 0.0000000 0.9705134 2.9705134 B 2.9378242 16.611108 ## 4 1200.4653 0.0000000 1.4870747 1.4870747 B 1.4592569 6.055987 ## 5 1135.9335 0.0000000 1.2190690 1.2190690 B 1.4859448 5.847812 ## 6 1023.7081 0.0000000 0.8512596 0.8512596 B 1.0217795 2.975441 ## 7 1453.5096 0.9428803 0.0000000 0.0000000 B1.1996578 -2.614496 ## 8 1227.9380 1.0776237 0.0000000 0.0000000 b 0.5602308 -3.047349 ## 9 1858.8985 1.0152029 0.0000000 0.0000000 b 1.6275417 -3.328770 ## 10 1361.2682 1.0581255 0.0000000 0.0000000 b 1.8852220 -3.383986

5类比较

统计假设检验用于确定一个特征的丰度在两种或多种条件下是否不同。

为了考虑其他因素,如实验运行的影响,主题对主题的可变性等,这通常是最合适的使用线性模型。

本例使用了一个简单的实验,有两个条件“a”和“B”,每个条件重复三次。

set.seed(2020) mse3 <- simulateImage(预设=4,npeaks=10, dim=c(10,10), sdnoise=0.3, nruns=3, peakdiff=1, representation="centroid") trt <- makeFactor(A=mse3$circleA, B=mse3$circleB) image(mse3, trt ~ x * y, key=TRUE, layout=c(2,3))

Image (mse3, feature=1, layout=c(2,3))

从模拟的设计中我们知道,在不同的条件下,前5(10个)质量特征是不同的。

featureData (mse3)
## 10行3列的MassDataFrame ##:mz: circleA circleB diff ## <数值> <数值> <数值> <逻辑> ## 1 473.921 0.970513 1.97051 TRUE ## # 2 781.237 1.022086 2.02209 TRUE ## 3 788.863 0.837499 1.83750 TRUE ## # 4 788.863 0.837499 1.83750 TRUE ## # 5 1135.933 0.851260 1.85126 TRUE ## 5 1135.933 1.219069 2.21907 TRUE ## 6 1200.465 1.487075 1.48707 FALSE ## # 7 1227.938 1.077624 1.07762 FALSE ## # 8 1353.510 0.942880 0.94288 FALSE ## # 10 1858.899 1.015203 1.01520 FALSE

5.1分组基于意思的测试

使用meansTest ()用最基本的总结来拟合线性模型。的说明必须提供观测单元。用均值对每一组进行归纳,然后拟合线性模型。组数为有效样本量。

这里,我们指定条件作为唯一的固定效果。在内部,模型将调用两者之一lm ()lme ()这取决于是否提供了任何随机效果。

mtest <- meansTest(mse3, ~ condition, groups=run(mse3)) summary(mtest)
##方法-总结线性模型测试:## ##固定效果:~条件## ##总结6组:runA1 runA2…runB2 runB3 ## ##似然比测试固定效果:## ## Feature LR PValue FDR ## 11 6.8325 0.008951300 0.0447565 ## 22 2.2660 0.132239496 0.3305987 ## 33 1.9045 0.167580697 0.3351612 ## 44 7.0631 0.007868697 0.0447565 ## 5 5 4.1586 0.041422884 0.1380763 ## 66 0.0025 0.965241024 0.96546107 0.9654641 ## 88 0.0317 0.858660385 0.9654641 ## 9 9 0.0684 0.793731073 0.9654641 ## 10 0.1113 0.738668115 0.9654641

默认情况下,通过对零模型(没有固定效应,保留任何随机效应)执行似然比检验来总结模型。

盒须图可以用来可视化条件之间的差异(如果有的话)。

Plot (mtest, layout=c(2,5), ylab="intensity")

使用topFeatures ()提取显著结果。

topFeatures(mtest, p.adjust="fdr", AdjP < .05)
##顶级测试:~condition vs ~1 ## mz circleA circleB diff feature LR PValue AdjP ## 1 473.9206 0.9705134 1.970513 TRUE 1 6.8325 0.008951300 0.0447565 ## 2 1023.7081 0.8512596 1.851260 TRUE 4 7.0631 0.007868697 0.0447565

5.2有效的测试

的测试SpatialDGMM对象通过以下方法实现segmentationTest ().这里的关键思想是,空间- dgmm分割捕获样本内的异质性,因此在空间- dgmm片段之间进行测试比简单地根据其平均值总结整个样本更加敏感。

首先,我们必须用spatialDGMM (),同时确保每个观察单元被划分到不同的组中(如).

组数为有效样本量。

dgmm2 <- spatialDGMM(mse3, r=1, k=5, groups=run(mse3))

现在使用segmentationTest ()为了符合模型。

为了拟合模型,必须为每一组选择具有代表性的空间- dgmm段。有两种自动的方法来做到这一点classControl“Ymax”均值使用均值最高的段,和“Mscore”意思是使用与固定效果匹配得分最高的片段。

(还可以给出给出组和代表性空间- dgmm段之间显式映射的字符向量列表classControl.)

测试<- segmentationTest(dgmm2, ~ condition, classControl="Ymax")
##基于分段的线性模型测试:## ##固定效果:~条件## ##总结6组:runA1 runA2…runB2 runB3 ## ##固定效果似然比检验:# # # #半径(r) Init LR (k)特性PValue罗斯福# # 1 1 5 1 16.0126 6.292093 1.573023 e-05 e-04 # 1 # 2 5 2 2.7057 - 9.998872 e-02 1.999774 e-01 # # 3 1 5 3 35.9149 2.061274 2.061274 e-09 e-08 # # 4 1 5 4 24.6229 6.971711 3.149581 e-07 e-06 # # 5 1 5 5 24.0373 9.448743 3.149581 e-07 e-06 # # 6 1 5 6 0.1317 7.166337 8.852883 e-01 e-01 # # 7 1 5 7 0.0663 7.967595 8.852883 e-01 e-01 # # 8 1 5 8 1.9504 1.625483 2.709138 e-01 e-01 # # 9 1 5 9 0.0006 9.798723 9.798723 e-01 e-01 # # 10 1 5 10 1.0597 3.032774 4.332534 e-01 e-01

meansTest (),通过对零模型(没有固定效应,保留任何随机效应)执行似然比检验来总结模型。

盒须图可以用来直观地比较条件。

Plot (stest, layout=c(2,5), ylab="intensity")

如果一个自动化的方法classControl,它可以帮助绘制映射图,以了解使用什么段来表示每个组。

Image (stest, model=list(feature=3), values="mapping")

在这种情况下,segmentationTest ()发现了两个更显著的质量特征meansTest ()

topFeatures(stest, p.adjust="fdr", AdjP < .05) %>%子集(select=c(-diff, -r, -k))
##顶级测试:~condition vs ~1 ## mz circleA circleB feature LR PValue AdjP ## 1 788.8633 0.8374991 1.837499 3 35.9149 2.061274e-09 2.061274e-08 ## 2 1023.7081 0.8512596 1.851260 4 24.6229 6.971711e-07 3.149581e-06 ## 3 1135.9335 1.2190690 2.219069 5 24.0373 9.448743e-07 3.149581e-06 ## 4 473.9206 0.9705134 1.970513 1 16.0126 6.292093e-05 1.573023e-04

6会话信息

sessionInfo ()
## R版本4.2.0 RC (22-04-19 r82224) ##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 20.04.4 LTS ## ##矩阵产品:default ## BLAS: /home/biocbuild/bbs-3.15-bio /R/lib/libRblas. ##因此## LAPACK: /home/biocbuild/bbs-3.15-bio /R/lib/libRlapack。因此## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# [3] LC_TIME=en_GB LC_COLLATE= c# [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# [9] LC_ADDRESS=C LC_TELEPHONE= c# [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4 stats graphics grDevices utils datasets methods ## [8] base ## ##其他附加的包:## [1]Cardinal_2.14.0 ProtGenerics_1.28.0 S4Vectors_0.34.0 ## [4] EBImage_4.38.0 BiocParallel_1.30.0 BiocGenerics_0.42.0 ## [7] BiocStyle_2.24.0 ## ##通过命名空间加载(并没有附加):# [1] Rcpp_1.0.8.3 mclust_5.4.9 locfit_1.5-9.5 ## [4] lattice_0.20-45 fftwtools_0.9-11 png_0.1-7 ## [7] assertthat_0.2.1 digest_0.6.29 utf8_1.2.2 ## [10] R6_2.5.1 tiff_0.1-11 signal_0.7-7 ## [13] evaluate_0.15 highr_0.9 pillar_1.7.0 ## [16] rlang_1.0.2 irlba_2.3.5 jquerylib_0.1.4 ## [19] magick_2.7.3 Matrix_1.4-1 rmarkdown_2.14 ## [22] matter_1.22.0 string_1 .4.0 htmlwidgets_1.5.4 ## [25] RCurl_1.98-1.6 compiler_4.2.0 xfun_0.30 ## [28] pkgconfig_2.0.3 biglm_0.9-2.1 htmltools_0.5.2 ## [31]## [37] dplyr_1.0.8 MASS_7.3-57 bitoplite_1.0 -7 ## [40] grid_4.2.0 nlme_1 -157 jsonlite_1.8.0 ## [43] lifecycle_1.0.1 DBI_1.1.2 magrittr_2.0.3 ## [46] cli_3.3.0 stringi_1.7.6 sp_1.4-7 ## [49] bslib_0.3.1 ellipsis_0.3.2 generics_0.1.2 ## [52] vctrs_0.4.1 tools_0.2.0 Biobase_2.56.0 ## [55] glue_1.6.2 purrr_0.3.4 jpeg_0.1-9 ## [58] abind_1.4-5 parallel_4.2.0 fastmap_1.1.0 ## [61] yaml_2.3.5BiocManager_1.30.17 knitr_1.38 ## [64] sass_0.4.1