“weitrix”是一个总结实验对象(或其子类),包含两个分析,一个包含实际测量值,另一个包含相关权重。“weitrix”元数据条目存储这些分析的名称。构造weitrix有几种方法:
as_weitrix (x,重量)
构造一个weitrix,其中x
矩阵的测量和权重
是一个对应的权值矩阵。
一个摘要实验可以标记为一个weitrix使用bless_weitrix
.这需要指定要使用的两种分析方法的名称。
任何limma包知道如何使用的东西都可以转换为weitrixas_weitrix
.(weitrix包中的大多数函数将自动尝试这种转换。)
通常的summarizeexperiment访问函数可以使用:分析
rowData
colData
元数据
此外,被祝福的化验可使用:weitrix_x
weitrix_weights
weitrix
遵循Bioconductor惯例,将特征放在行中,观察单位(样本,细胞)放在列中。这是常规R的转置!
权重决定了观察结果的重要性。考虑权重的一种方法是,就好像这一个观测值实际上是一些真实观测值的平均值。例如,如果一个观察值是某些读取次数的平均值,则可以将读取次数用作权重。
重量的选择多少有些随意。您可以简单地使用它来告诉模型拟合(如在weitrix_components
)最应该注意什么。最好多关注更精确的测量结果。
权重为0表示完全缺失数据。
类中指定的权重的概念与此包中使用的权重相同lm
函数或界限lmFit
函数。
权重可以每行进行校准,因此它们是测量方差的1分之一。测试时使用weitrix_confects
或limma,校准的weitrix将产生比未校准的更好的结果。提供了两个主要的权重校准功能:
weitrix_calibrate_all
模型拟合残差的平方,使用现有的权重,拟合的线性模型预测,或进一步已知的协变量作为预测因子。采用了具有对数链接函数的gamma GLM。权重就变成了1除以这个模型的预测。这类似于轰
而且vooma
函数在limma中,但允许更复杂的模型。
weitrix_calibrate_trend
:每一行的离散度都拟合一个模型(见下面“离散度”一节)。采用了具有对数链接函数的gamma GLM。然后,每一行中的权重根据模型预测按比例缩小。这类似于limma的趋势选项易趣
函数,但允许行平均值以外的其他预测器。这比weitrix_calibrate_all
,但也需要较少的计算和内存。
校准性能应使用weitrix_calplot
函数。这可以用来绘制任何已知协变量的加权残差。适当校准的加权残差应具有一致的方差,即相对于任何已知的协变量,不应可见任何趋势。weitrix_calplot
也可以绘制残差除以1/根号(权重)(即期望残差标准差),由于其所需的形状,我们称之为“漏斗图”。
一些可能的测量和权重的例子:
poly(A)尾部长度是为读取集合测量的。测量是平均对数尾长(非模板“A”的数量),权重是读取的数量。见聚(A)尾巴长度小插图。
每个基因可以观察到几个不同的聚腺苷酸位点。为每个站点分配一个“shift”分数:该站点上链所有读取的比例减去该站点下链所有读取的比例。该度量是每次阅读的站点得分的平均值,权重是阅读的数量。参见替代聚腺苷酸小插图。
与基因对齐的读数被分配到特定的外显子上。对于一个特定的样本、基因和外显子,测量的是与该外显子对齐的reads在所有与该基因对齐的reads中所占的比例,权重是与该基因对齐的reads总数。counts_proportions
可以用来构造一个适当的weitrix。根据所有样本中每个外显子的平均比例,可能会有一些进一步的校准(与使用GLM相比,这是一种粗略的策略)。
weitrix包的一个重要特性是能够提取变化的成分,类似于PCA。与PCA相比,新颖的特征是,这可以用于不均匀加权的矩阵或有许多缺失值的矩阵。此外,默认情况下,组件是可变旋转的,以提高可解释性。
这是作为将线性模型拟合到每一行的思想的扩展实现的。它在weitrix_components
,是这个包中的主要主力函数。可以给出预先指定的设计矩阵(默认情况下只包含一个截距项),然后请求零个或多个附加组件。结果是:
一个“col”矩阵,包含指定的设计矩阵和每个样本的新变异成分的“分数”。
一个“行”矩阵,每行包含估计系数,另外还有新变化成分的“负荷”。
这两个矩阵可以相乘以近似原始数据。这将输入任何缺失的值,以及平滑现有数据。
示例小插图包含如何使用此函数的示例。
在构造了weitrix系统变异模型后,利用weitrix_components
,可能从数据中发现了几个分量,每一行的剩余“离散度”可以估计weitrix_dispersion
.
本软件包中使用的术语“离散度”与方差类似,但考虑了权重。例如,如果权重表示读取数,则它是读取级方差。weitrix校准后,它也相对于校准的趋势。
对于带有测量值的特定行\ (y \)、重量\ (w \),设计矩阵\ \ (X)(包括发现的成分分数),拟合系数\(β\帽子\ \),和剩余自由度\ \(ν\)(非零权重数减去中的列数\ \ (X)),即分散度\ \(σ^ 2 \)估计为:
\[\hat\varepsilon = y-X\hat\beta \]
\[\hat\sigma^2 = {1 \over \nu} \sum_i w_i \hat\varepsilon_i^2 \]
类似的地方\ (R ^ 2 \)值被报告,这些是比例加权已经解释过的变异。
利用离散度进行离群值检测:与简单线性模型相比,在校准weitrix上具有高离散度的基因通常具有生物学上的兴趣。这可以作为探索性分析的一个很好的起点。校准用于淡化不感兴趣的变化,例如由于低读取计数而引起的高变异性。在校准的weitrix中,期望色散为1。
使用weitrix_sd_confects
找到变异程度超过预期水平的基因。
可以使用该函数测试从线性模型拟合到每一行的顶部自信对比weitrix_confects
.这遵循了topconfects方法,找到具有较大效应量的行,这些行不一定具有最小的p值。
如果您更喜欢更传统的分析,可以将weitrix转换为与limma with一起使用的EList对象weitrix_elist
.但是请注意,如果使用对比或使用f检验而不是t检验,limma对权重的使用是近似的。
的美元坳
矩阵组件
可用作微分分析的设计矩阵weitrix_confects
或者用limma。警告:这可能会产生自由的结果,因为设计矩阵本身是不确定的,没有考虑到这一点。请谨慎使用。
无论使用何种方法,首先应校准权重,以消除上述已知协变量导致的趋势。这两个weitrix_confects
和limma分析估计逐行离散度,应用经验贝叶斯离散度压缩,然后在估计系数和对比估计的准确性时使用此方法。这可以看作是进一步的逐行校准步骤。
如果列数有限,那么初始校准步骤执行得越好,分散的经验贝叶斯压缩就越有效,结果也就越显著。如果你有很多列,分散体的挤压只会有很小的影响,这些考虑就变得不那么重要了。
weitrix可以使用DelayedArray检测。将使用产生weitrices的函数DelayedArray
输出分析,如果给出DelayedArray
输入化验。
Weitrix将尝试并行地按块执行计算。weitrix尝试使用DelayedArray和BiocParallel默认值。调整与DelayedArray: setRealizationBackend
,DelayedArray: setAutoBlockSize
,并使用BiocParallel:注册
调整并行处理引擎。
它总是有可能将一个分析转换回正常的R矩阵as.matrix
.
将DelayedArray实现后端设置为HDF5Array
如果weitrices太大,无法压缩到内存中。的HDF5Array
后端将数据存储在磁盘上的临时文件中。
如果使用DelayedArray:: setRealizationBackend(“HDF5Array”)
你也可以设置HDF5Array: setHDF5DumpDir
.
weitrix可以永久地存储到磁盘HDF5Array: saveHDF5SummarizedExperiment
.
示例设置:
将中间结果存储在一个名为__dump__的目录中#你可能需要手动清理这个目录setRealizationBackend("HDF5Array") setHDF5DumpDir("__dump__")
R和Bioconductor的并行处理仍然很挑剔,但对于大型数据集是必要的。weitrix使用BiocParallel的默认并行处理设置。它将在需要时临时启动工作进程。
如果weitrix挂起或产生奇怪的错误,尝试配置BiocParallel默认使用串行处理:
BiocParallel::register(BiocParallel::SerialParam())
如果你正在使用weitrix
交互地,基于fork的工作进程似乎搞砸了基于x11的绘图。在打开任何地块之前启动工人:
RhpcBLASctl: blas_set_num_threads (1) BiocParallel: bpstart ()
如果使用并行处理,多线程线性代数库只会减慢速度。如果您已经安装了OpenBLAS,则可能需要禁用多线程。你可以看到BLAS R正在使用sessionInfo ()
.方法禁用多线程RhpcBLASctl
包:
RhpcBLASctl: blas_set_num_threads (1)
这需要在使用前完成BiocParallel: bpstart ()
.默认情况下使用MulticoreParam
并且没有使用bpstart ()
, weitrix临时为大型计算启动一个工作池,并确保为工作池设置。如果你偏离了这个默认情况,我们假设你知道你在做什么。