“weitrix”是一个SummarizedExperiment对象(或子类)有两个化验,一个包含实际的测量和其他相关的权重。“weitrix”元数据条目存储这些化验的名称。有几种方法可以构造一个weitrix:
as_weitrix (x,重量)
构造一个weitrix,x
是一个矩阵的测量和权重
是一个相应的权重矩阵。
可以标记为SummarizedExperiment weitrix使用bless_weitrix
。这需要指定要使用两个化验的名称。
任何limma包知道如何处理可以转换为weitrix使用as_weitrix
。weitrix包中(大多数函数将自动尝试这种转换)。
通常SummarizedExperiment可以使用访问器功能:分析
rowData
colData
元数据
此外,祝福化验访问使用:weitrix_x
weitrix_weights
weitrix
遵循Bioconductor公约行和单元的特性的观察(样品、细胞)在列。这是正常的转置R约定!
权重决定了一个观察的重要性。考虑权重的一种方法是,好像这个观察是平均在一些真正的观察。例如如果一个观察是平均超过某个数的读取,读取的数量可能被用作重量。
重量有点武断的选择。您可以使用它只是告诉模型拟合(如weitrix_components
)最关注什么。最好多注意更准确地测量观察。
重量的0表示完全缺失的数据。
权重的概念中使用这个包是一样的重量来指定lm
函数或limmalmFit
函数。
权重可以校准每一行所以他们测量的方差。当测试使用weitrix_confects
或limma校准weitrix将比一个未校准产生更好的结果。对校准重量提供了两个主要功能:
weitrix_calibrate_all
:一个模型拟合残差平方,使用预测现有的权重,进一步拟合线性模型预测,或已知的协变量。使用的是γGLM与日志链接功能。重量就变成1 /这个模型的预测。这是相似的轰
和vooma
在limma功能,但允许一个更复杂的模型。
weitrix_calibrate_trend
:一个模型是适合分散为每一行(参见下面的“分散”的一节)。使用的是γGLM与日志链接功能。重量在每一行然后按比例缩小的模型预测。这是类似于limma趋势选项易趣
函数,但允许行平均之外的其他因素。这是强大的比weitrix_calibrate_all
,还需要更少的计算和记忆。
校准应根据使用性能weitrix_calplot
函数。这可以用于情节与任何已知的协变量加权残差。适当的校准加权残差应该统一的方差,即没有趋势相对于任何已知的协变量应该是可见的。weitrix_calplot
也可以情节残差对1 /√(重量)(即预期剩余标准差),我们称之为一个“漏斗阴谋”由于其所需的形状。
的一些例子可能的测量和重量:
poly (A)尾长度测量对读取的集合。测量平均日志尾部长度(无模板A s)的数量,重量是读取的数量。保利(A)尾长度装饰图案。
几种不同的聚腺苷酸化网站观察每个基因。“转变”分数分配给每个网站:网站的所有读取upstrand比例减去所有读取downstrand的比例。在现场测量平均得分为每个阅读,和体重是读取的数量。看到可变聚腺苷酸化装饰图案。
读调整分配给特定的外显子基因。对于一个特定的示例,基因外显子,测量是读取的比例调整到外显子的读取调整基因,和总重量是读取调整基因。counts_proportions
可以用来构造一个approporiate weitrix。进一步校准可能是基于每个外显子的平均比例对所有样品(有些潦草的策略相比,使用GLM)。
weitrix包的一个重要特性是能够提取成分的变异,类似于主成分分析。PCA相比,小说的特点是,这是可能的不均匀加权矩阵和矩阵与许多缺失值。同时,默认组件是方差极大旋转提高可解释性。
这是作为一个扩展实现的想法合适的每一行的线性模型。它是实现weitrix_components
主要的功能在这个包中。可以给一个预先确定的设计矩阵(在默认情况下这只包含一个拦截术语),然后要求零个或多个附加组件。其结果是:
“上校”包含指定的设计矩阵和矩阵此外小说组件的“分数”为每个样本的变异。
为每一行包含一个“行”矩阵估计系数和另外的“载荷”小说组件的变异。
这两个矩阵相乘可以近似的原始数据。这将归咎于任何缺失的值,以及平滑现有数据。
小插曲的例子包含如何使用这个函数的例子。
构建的模型系统的变化后weitrix使用weitrix_components
蚌壳,可能与几个组件的数据,每一行的残余“色散”可以估计weitrix_dispersion
。
这个包中使用的术语“色散”类似于方差,但考虑到权重。例如,如果权重代表数字的读、read-level方差。weitrix校准后,这也是相对于校准的趋势。
为一个特定的行与测量\ (y \)、重量\ (w \)、设计矩阵\ \ (X)(包括组件发现分数),拟合系数\(β\帽子\ \),剩余的自由度\ \(ν\)(数量的零重量减去的列数\ \ (X)),色散\ \(σ^ 2 \)估计:
\[β\帽子帽子\ varepsilon = x \ \ \]
\[\帽子\σ^ 2 ={1 \ \ν}\ sum_i w_i \帽子\ varepsilon_i ^ 2 \]
类似的地方\ (R ^ 2 \)值报告,这些的比例加权变异的解释道。
使用分散孤立点检测:校准weitrix基因高分散,相对于一个简单的线性模型往往会被生物的兴趣。这是一个好的起点进行探索性分析。校准服务不再强调变化,不感兴趣的,例如高可变性由于低读计数。在校准weitrix,预期的色散是1。
使用weitrix_sd_confects
自信地寻找基因变异超过预期水平。
最自信的从线性模型拟合对比每一行可以使用功能进行了测试weitrix_confects
。在此之前的topconfects方法,发现行与自信的大尺度效应,不一定是那些最小的假定值。
如果你喜欢一个更传统的分析,weitrix可以转化为一个与limma EList对象使用weitrix_elist
。然而注意limma使用重量近似如果使用对比或者野生而不是使用t。
的美元坳
矩阵的一个组件
可能被用作设计矩阵微分分析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
。
示例设置:
库(DelayedArray)库(HDF5Array) #中间结果存储在一个目录称为__dump__ #你可能需要手动清理这个目录setRealizationBackend setHDF5DumpDir (“HDF5Array”) (“__dump__”)
并行处理在R和Bioconductor仍挑剔,但对于大型数据集是必要的。weitrix BiocParallel使用默认的并行处理设置。在需要的时候它会暂时开始工作进程。
如果weitrix挂起或产生奇怪的错误,尝试配置BiocParallel使用串行处理默认情况下:
BiocParallel::注册(BiocParallel: SerialParam ())
如果您使用的是weitrix
交互,fork-based工作进程似乎陷入困境基于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暂时开始工人池对于大型计算,并确保这是工人。如果你偏离这个默认情况下,我们假设您知道自己在做什么。