ResidualMatrix
类ResidualMatrix 1.6.1
基因组学中的一个常见步骤涉及计算残差回归无趣的因素的变化。然而,这样做天真地将丢弃方面潜在的矩阵表示。最明显的例子是当一个稠密矩阵稀疏的残差计算,增加下游应用程序中的内存使用和计算时间。的ResidualMatrix计划实现了ResidualMatrix
类(咄),它提供了一种有效的替代的显式计算残差。用户可以安装这个包按照通常的Bioconductor安装过程:
如果(!requireNamespace (“BiocManager”,悄悄地= TRUE)) {install.packages (BiocManager)} BiocManager::安装(“ResidualMatrix”)
ResidualMatrix
构造函数需要一个矩阵的输入值和设计矩阵,在残差在概念上计算拟合线性模型的输入矩阵的列。然而,实际的计算的残差是推迟到他们所需的外显。
< -设计模型。矩阵(~ gl(10000) #编造large-ish稀疏矩阵。库(矩阵)set.seed (100) y0 < - rsparsematrix (nrow(设计),30000年,0.01)图书馆(ResidualMatrix)渣油< ResidualMatrix渣油(y0,设计)
# # < 50000 x 30000 >矩阵类ResidualMatrix和类型的“双重”:# # [1][2][3]…[29999][30000]# # (1)-0.00176859 -0.00061002 -0.00145170。0.0014689 - -0.0001879 # # (2)-0.00176859 -0.00061002 -0.00145170。0.0014689 - -0.0001879 # # (3)-0.00176859 -0.00061002 -0.00145170。0.0014689 - -0.0001879 # # (4)-0.00176859 -0.00061002 -0.00145170。0.0014689 - -0.0001879 # # (5)-0.00176859 -0.00061002 -0.00145170。0.0014689 - -0.0001879 # #……# # (49996)-0.000179354 0.000624710 0.001578000。-5.773 e-04 6.741 e-05 # # (49997) -0.000179354 0.000624710 0.001578000。-5.773 e-04 6.741 e-05 # # (49998) -0.000179354 0.000624710 0.001578000。 -5.773e-04 6.741e-05 ## [49999,] -0.000179354 0.000624710 0.001578000 . -5.773e-04 6.741e-05 ## [50000,] -0.000179354 0.000624710 0.001578000 . -5.773e-04 6.741e-05
它简单获得的残差,说,一个单一的列。我们也可以使用DelayedArray块加工机械为块做这一次的列,允许下游代码计算残差在内存限制。
嘘(渣油[1])
事实上,涉及矩阵乘法的步骤ResidualMatrix
不需要计算残差。这意味着ResidualMatrix
对象可以有效地用于基于乘法的近似PCA算法,对随机圣言会通过如下所示BiocSingular的runPCA ()
函数。唯一的要求就是,原始矩阵有一个合理高效的矩阵乘法运算符。(随机PCA,我们还设置延迟= TRUE
以确保我们的对象不崩溃DelayedMatrix
定心;这加快了计算不改变结果,考虑到列对残差应该意味着零。)
set.seed (100) system.time(电脑。<——BiocSingular:: runPCA(渣油10 BSPARAM = BiocSingular:: RandomParam(延迟= TRUE)))
用户系统运行# # # # 7.878 0.216 8.093
str (pc.out)
# # 3 # # $标准偏差列表:num [1:10] 0.16 0.159 0.159 0.159 0.159……# # $旋转:num [1:30000 1:10] 0.001048 -0.010312 -0.000749 0.000831 -0.003602……# # . .- attr (*, dimnames) =列表2 # #……美元:零# #……美元:空空的[1:10]“PC1”“PC2”“生物”“PC4”…# # $ x: num [1:5, 1:10] -0.0172 -0.1613 0.0576 -0.1764 -0.0826……# # . .- attr (*, dimnames) =列表2 # #……美元:零# #……美元:空空的[1:10]“PC1”“PC2”“生物”“PC4”…
同样,行和列金额/手段可以有效地计算,基于矩阵乘法的机械和原始矩阵的行和列求和函数。
嘘(rowSums(渣油))
其他操作将导致ResidualMatrix
崩溃到DelayedMatrix
进行进一步处理。
我们还可以指定,我们只想回归我们的一些因素设计
。举个例子,假设我们有一个数据集和一个有趣的群结构和一个无趣的连续协变量坏
:
design2 < -模型。矩阵(~ gl (10000) design2 < - cbind (design2,坏= runif (nrow (design2))) colnames (design2)
# #[1]”(拦截)”"gl(2, 10000)2" "BAD"
我们可以指导ResidualMatrix ()
保持有趣的结构(前两个系数)而无趣的协变量的回归系数三:
#另一个large-ish稀疏矩阵。y0 < - rsparsematrix (nrow (design2), 30000年,0.01)resid2 < - ResidualMatrix (y0, design2,保持= 1:2)resid2
# # < 20000 x 30000 >矩阵类ResidualMatrix和类型的“双重”:# # [1][2][3]…[29999]# # (1)0.0003610968 -0.0005362812 -0.0006870567。-4.423137 e-04 # # (2) 0.0006099956 -0.0009059321 -0.0011606349。-7.471941 e-04 # # (3) 0.0013597619 -0.0020194441 -0.0025872107。-1.665596 e 03 # # (4) 0.0013671407 -0.0020304026 -0.0026012502。-1.674634 e 03 # # (5) 0.0009095187 -0.0013507675 -0.0017305357。-1.114085 e 03 # #……# # (19996)0.0009696272 -0.0014400373 -0.0018449037。-0.0011877129 # # (19997)0.0009091618 -0.0013502374 -0.0017298566。-0.0011136479 # # (19998)0.0009893631 -0.0014693480 -0.0018824551。 -0.0012118878 ## [19999,] 0.0018900069 -0.0028069349 -0.0035961045 . -0.0023151018 ## [20000,] 0.0014685486 -0.0021810081 -0.0027941984 . -0.0017988503 ## [,30000] ## [1,] 6.401415e-05 ## [2,] 1.081382e-04 ## [3,] 2.410545e-04 ## [4,] 2.423626e-04 ## [5,] 1.612367e-04 ## ... . ## [19996,] 0.0001718926 ## [19997,] 0.0001611735 ## [19998,] 0.0001753913 ## [19999,] 0.0003350547 ## [20000,] 0.0002603399
从这个意义上说,ResidualMatrix
实际上是一个延迟的版本吗removeBatchEffect ()
,旧的主力函数limma。
在某些情况下,我们可能只是自信的正确性设计
对我们的样品的一个子集。例如,我们可能有几个批次的观察,每一个都包含控制观测数据的一个子集。所有其他观察每一批有未知结构,但受到相同的添加剂批效果控制。我们想使用控件删除批处理效果不作假设另一个观察。
为了达到这个目标,我们设置了限制=
论点的ResidualMatrix
构造函数。只使用指定的执行模型拟合(控制)子集来估计批处理的效果。然后使用这些估计在所有观测进行回归。这个选项也可以结合保持
如果控件本身有一些结构,应该保留。
批次< - gl(1000)控制< - c (1:10 0, 1:10 0 + 1000, 1:10 0 + 2000) y < -矩阵(rnorm (30000), nrow = 3000) resid3 < - ResidualMatrix (y,设计= model.matrix(~批次),限制=控制)resid3
# # < 3000 x 10 >矩阵类ResidualMatrix和类型的“双重”:# # [1][2][3]…[9][10]# # (1)0.19825824 0.17996457 1.13936050。0.33228412 - -1.64454139 # # (2)-0.28219580 -1.15656947 0.25430702。-0.08018124 - 0.87146688 # # (3)-2.21640973 0.26290101 -0.87678574。-0.64221058 - -0.09514042 # # (4)-0.08887064 0.14095095 0.98438377。-1.05511992 - 1.02235182 # # (5)-0.99462216 0.63980424 -0.35985208。0.33789575 - -0.68093555 # #……# # (2996)-0.3511486 -2.2495602 0.3509155。0.59967323 - -1.07031924 # # (2997)-0.4235921 2.0300343 1.4830692。-0.09382277 - -3.42017897 # # (2998)1.0993104 0.4044992 -2.6605940。 1.14067257 -1.33360979 ## [2999,] -0.1802699 -1.7624554 -0.1289637 . -1.71318104 -1.96317436 ## [3000,] -0.3151365 0.1005264 0.3068870 . 1.49625115 0.39279434
sessionInfo ()
4.2.1(2022-06-23)准备# # # # R版本平台:x86_64-pc-linux-gnu(64位)# #下运行:Ubuntu 20.04.4 LTS # # # #矩阵产品:默认# #布拉斯特区:/home/biocbuild/bbs - 3.15 - bioc / R / lib / libRblas。所以# # LAPACK: /home/biocbuild/bbs - 3.15 - bioc / R / lib / libRlapack。# # # #语言环境:# # [1]LC_CTYPE = en_US。utf - 8 LC_NUMERIC = C # #[3]而= 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 = C LC_TELEPHONE = # # [11] LC_MEASUREMENT = en_US。utf - 8 LC_IDENTIFICATION = C附加基本包:# # # # # #[1]统计图形grDevices跑龙套数据集方法基础# # # #其他附加包:# # [1]ResidualMatrix_1.6.1 Matrix_1.4-1 BiocStyle_2.24.0 # # # #通过加载一个名称空间(而不是附加):# # [1]Rcpp_1.0.9 bslib_0.4.0 compiler_4.2.1 # # [4] BiocManager_1.30.18 jquerylib_0.1.4 highr_0.9 # # [7] MatrixGenerics_1.8.1 tools_4.2.1 digest_0.6.29 # # [10] jsonlite_1.8.0 evaluate_0.16 lattice_0.20-45 # # [13] rlang_1.0.4 DelayedArray_0.22.0 cli_3.3.0 # # [16] magick_2.7.3 parallel_4.2.1 yaml_2.3.5 # # [19] xfun_0.32 fastmap_1.1.0 stringr_1.4.0 # # [22] knitr_1.39 sass_0.4.2 S4Vectors_0.34.0 # # [25] IRanges_2.30.0 stats4_4.2.1 grid_4.2.1 # # [28] R6_2.5.1 BiocParallel_1.30.3 rmarkdown_2.15 # # [31] bookdown_0.28 irlba_2.3.5 BiocSingular_1.12.0 # # [34] magrittr_2.0.3 codetools_0.2-18 htmltools_0.5.3 # # [37] matrixStats_0.62.0 BiocGenerics_0.42.0 rsvd_1.0.5 # # [40] beachmat_2.12.0 ScaledMatrix_1.4.0 stringi_1.7.8 # # [43] cachem_1.0.6