疑难解答构建报告

建筑物如何何时何时拉动?我的更改何时繁殖?

请记住,每日构建器每天只提取、安装、构建和检查包一次。这个过程开始于美国东部时间每天下午2:30(14:30)左右。在2:30之前推送到Bioconductor的更改将反映在第二天的构建报告中,该报告大约在美国东部时间上午11:30发布。东部标准时间下午2:30以后的变化要到后天才能反映出来,因此可能需要36-48小时。的构建报告开发释放显示包版本和为该构建所反映的提交id。的包裹的登陆页(例子Biobase将不会更新,直到包安装/构建/检查没有错误;我们不传播破损的包。这可能解释了登陆页上的版本与被推到的版本不同生物体。还请记住包装始终需要有效版本的Bump传播给用户。

如何重现构建系统错误?

为了在本地准确地重现错误,记住要使用正确的R和Bioconductor版本。用于构建报告的R版本可以在文件的顶部找到释放开发建立报告。一旦你使用了正确的R版本,确保你所有的包都是最新的BiocManager:有效的()biocmanager :: install()。daily builder在此期间使用了一些额外的环境变量R CMD检查。那些是以下内容:

export _r_check_executable_exclusions_ =false export _R_CHECK_LENGTH_1_CONDITION_=package:_R_CHECK_PACKAGE_NAME_,abort,verbose export _R_CHECK_LENGTH_1_LOGIC2_=package:_R_CHECK_PACKAGE_NAME_,abort,verbose export _R_CHECK_S3_METHODS_NOT_REGISTERED_=true

单个包构建有一些额外的功能文档如何设置本地系统以使用可选的环境变量。请注意,如果你看一下本页上列出的文件,它有许多额外的变量;生物体对传入的包进行比每日构建器(目前)更严格的检查。如果您愿意,欢迎使用这个文件,因为它是一个更全面的检查,但是上面列出的环境变量应该最少包含。

调试和测试的另一种选择是使用生物体Docker图像。可以找到使用Docker图像的文档在这里。docker镜像中包含了在daily builder中找到的环境变量设置。

常见构建报告错误

随着R的发展和成熟,或者随着生物导体封装的修改和发展,通常会出现错误。本文档提供了一些错误和潜在解决方案的指导。

Bioconductor 3.11 with R 4.0

R从3转换过来了。x到4.0,这通常意味着一些重要的变化。

(回到Bioconductor / R列表]

S3方法注册

由于命名空间中的未释录的S3方法,许多软件包当前失败。在R开发人员博客文章中找到了一些背景信息:2021欧洲杯体育投注开户S3方法查找

此错误在构建报告中占用了许多不同的表单。一些更常见的形式包括

解决方案:在命名空间中注册S3方法

S3method(<函数>、<分派>)

一个影响许多包的简单示例是S3绘图方法。下面一行将被添加到包名称空间中。

S3method(plot, TCC) #来自TCC包的示例

(返回Bioc 3.11 R 4.0]

移除R CMD配置中的设置

错误的源是利用已删除或替换的包配置脚本中的设置。有一段R新闻“R CMD Config不再了解未使用的设置F77和FCPIFCPLAGS,也不知道CXX98和类似。”安装程序包失败时执行配置脚本,输出包含以下行的大量消息:

解决方案:替换"$ {r} cmd config f77”与“${R} CMD配置FC

(返回Bioc 3.11 R 4.0]

条件必选长度>

在R 4.0中,长度大于1的条件将产生警告。在“生物导体日建用力机上”和“单封装”构建器,这增加到错误。

传统上如果/ while.语句可以接受使用第一个元素作为条件值的向量,并忽略剩余值。这现在在这个虚拟示例中似乎产生了警告并记录在长度大于1的条件

if (c(TRUE, FALSE)) {: if (c(TRUE, FALSE)){:条件长度为> 1,只使用第一个元素

解决方案:生物导体增加了严重程度,因为在大多数情况下,这是在争论长度上的错误判断,而不是故意的。应该检查代码,看看参数是否被正确赋值。在大多数情况下,使用an是合适的任何( )所有()周围的向量。

也可以看看邮件列表发布

(返回Bioc 3.11 R 4.0]

标量/向量逻辑

这不是R的变化,但我们已经被通知,它已经到来,并已升级为一个错误,我们的每日建设者准备。这种类型的错误是由于误用&&||。双&&||暗示标量比较而不是奇异的矢量比较&|预计。请参阅下面的虚拟示例:

> c(TRUE, TRUE) && TRUE c(TRUE, TRUE)中的错误&& TRUE: 'length(x) = 2 > 1'在强制到'logical(1)'

解决方案:大多数情况都被误判和误解了从矢量比较中使用标量比较。改变双人间&&/||一个单数&/|如果要进行矢量比较,或者让矢量参数使用合适的任何( )所有()围绕向量将导致适当的标量比较。注意:如果这种比较有条件,请参阅上述部分;任何( )所有()很可能是一个更好的选择。

也可以看看邮件列表发布

(返回Bioc 3.11 R 4.0]

Class == vs is/ inherited

虽然这还不是R / Bioconductor的变化,但是关于这种代码结构的影响和后果有很多讨论。可以找到更好的讨论和解释当你认为类()= = *,再想想!

结果是class(x) == "foo"应该避免。如果类扩展了其他类,就会产生误导。更好的选择是使用is(x, "foo")继承(x,“foo”)

这也是建议生物导体最佳实践

从R 4.0开始,矩阵被认为是array的扩展。

> m = matrix()> class(m)[1]“矩阵”“array”>类(m)==“矩阵”[1] true false> if(class(m)==“矩阵”){}IF(类(m)==“矩阵”)错误{:条件具有长度> 1

这个更改和上一节关于条件长度的内容一起导致了许多错误,当用户在执行以下操作时if (class(m) == "矩阵");这是一个很好的例子,下面是适当的更改如果((m,“矩阵”))如果(继承(m,“矩阵”))if(is.matrix(m))

由于此更改而导致的另一个常见错误是类似于以下内容的类似:

Error in vapply(experiments(object), class, character(1)): values must be length 1, but FUN(X[[4]]) result is length 2

(返回Bioc 3.11 R 4.0]

data.frame stringsasfactors.

在r4.0中,默认为data.frame参数stringsAsFactors由真变为假。在需要检查特定因素水平或构造因素水平的测试中,这种变化造成的破坏最大。误差有许多不同的形式。简单的解决方案是更改或添加stringAsFactors = TRUE对于data.frame调用,维护人员可能想要重新评估代码,以实现潜在的重构或易用性。

(返回Bioc 3.11 R 4.0]

统计数据::smoothEnds

最近的变化统计数据::smoothEnds (),现在返回一个整数向量,输入是一个整数向量。以前它可以返回一个数字向量。

例子R 3.6.3

>类(平滑(C(401:403)))[1]“整数”>类(平滑(C(401:403,555L))[1]“数字”

4.0.0的例子

>类(平滑(C(401:403)))[1]“整数”>类(平滑(C(401:403,555L))[1]“整数”

如果检查了类类型,这可能会导致错误。

(返回Bioc 3.11 R 4.0]

网格包更改

我们没有很多关于更改的细节,但通过电子邮件通知。电子邮件的重要部分如下:

我将提交一些对“网格”单位的内部更改(在某些情况下,单位操作速度将提高100倍)。很多包已经被修复,可以与这些变化一起工作,但是,根据我的测试,以下CRAN包仍然无法通过CMD检查。其中一些是cascades ('armada', 'countToFPKM',和'wilson'从'ComplexHeatmap' -见下图- 'fingertipscharts'从'lemon'和'xpose'实际上是'ggforce'问题),但所有其他包的作者已经得到通知,几个已经在修复。其中最严重的是“ComplexHeatmap”,因为它会导致多个后续故障,如上文提到的CRAN和BioConductor上的其他故障:同样,主要包的作者已经得到通知,而“ComplexHeatmap”的作者正在进行更新。

(返回Bioc 3.11 R 4.0]

情节一般的感动

情节的泛型已经从图像转向了基础。从这个变化中看到的错误是非特定的,可以采取多种形式。我们看到的一些误差是

Error in getGeneric(f, TRUE, environment, package): no generic function found for 'plot'

as.double(y)错误:不能将类型'S4'强制转换为类型'double'的vector

给出的解释:

命名空间控制包中函数使用的变量的搜索策略。如果没有在本地找到,R首先搜索包名称空间,然后是导入,然后是基本名称空间,然后是正常的搜索路径。CRAN和Bioconductor有几个软件包能够“工作”,因为在正常的搜索路径中找到了正确的plot(),但现在失败了,因为它调用了基地中的一个。

(返回Bioc 3.11 R 4.0]

部分参数匹配

对于部分参数匹配,现在有了更严格的参数匹配检查。最好用下面的例子来描述

标准泛型(" mycoolfunction ") setMethod(" mycoolfunction ", signature=c(object= " GRanges ", break= " GRanges "), )

注意通用用法休息而setMethod使用打破;这是一个将不再有效的部分参数匹配的例子。

临时参数匹配应避免在迎接函数时作为最佳实践的一部分。例如

myargm <- function(x, myargm, secondarg) {code}myargm =1:2, secondarg=3 #很好的练习!

(返回Bioc 3.11 R 4.0]

Package inputenc错误:无效的UTF-8

这个错误开始在春天2020年出现在tokay2(windows)上。我们不确定错误的确切来源(Miktek的更改,r,其他?),但解决方案很简单:

请将\ usepackage [utf8] {inputenc}在你的编织小品的开头,就在\ documentclass线。

(返回Bioc 3.11 R 4.0]

依赖问题

依赖性问题可以分为几个子类:

CRAN二进制文件在r4.0中不可用

生物导体的秋季循环使用R-Devel在弹簧中制备新释放R.对于从CRAN的包依赖关系,这始终是一个稍微更具破坏性的周期。在接下来的6个月内Cran导致新版本R将为Windows和MacOS制作二进制文件。随着它们的变化,Bioconductor Builders将自动添加这些二进制文件。如果尚未创建二进制文件,则它们将不可用并导致一个包不可用错误。Bioconductor不会花费额外的努力去寻找安装这些包的工作;当它们可用时,它们将被添加。解决方案:请耐心等待!

包裹已经从CRAN中移除

CRAN包偶尔会被删除。不幸的是,Bioconductor只允许在CRAN或Bioconductor上积极维护包依赖关系。一个包必须改变他们的包,不使用代码,不依赖于这个依赖。当然,您可以尝试请求CRAN恢复,或者联系包维护人员修复并提交给CRAN。好运!

包裹已经从生物导体上移除

我们试图更加了解孤儿包和包裹在延长的时间段内保持破损。发生折旧和删除的包装和删除,包必须更改为不使用这些软件包的代码,或者可能会提供潜在的提议,以维持破碎的包,但这需要原始维护者的许可。在邮件列表和支持站点上的释放周期中公布了生物导体包弃用,以尝试并允许依赖包在删除前调整代码。此释放从3.10中获取的最值得注意的维护者请求的弃用(因此在3.11中删除)是SNPCHIP和GenomeGraphs。可以找到已弃用软件包的完整列表弃用包列表3.10。我们还记录了我们的删除包删除包页面

(返回Bioc 3.11 R 4.0]

弃用功能

函数可以被弃用、失效,并最终被删除。Bioconductor试图加强这一进程,以允许维护者调整代码。大多数弃用或不存在的函数将(应该)建议采用这种替代方法。以下内容见Bioconductor 3.11

RangedData

错误:rangeddata对象是已错的。请迁移您的代码以使用granges或grangeslist对象。查看重要说明?范围

正常化

错误:'normalize'不存在。使用“normalize, singlecellexperment -method”是无效的。使用'logNormCounts'代替'。

calculateqcmetrics.

错误:'calculateQCMetrics'不存在。使用“perCellQCMetrics”代替。

(返回Bioc 3.11 R 4.0]