23生成报告疑难解答

23.1BBS是如何以及何时开通的?我的更改何时传播?

请记住每日构建器拉入、安装、构建和检查包每天一次。该过程每天下午2:30(14:30)左右开始(即。,UTC−05:00时).在2:30之前推送到Bioconductor的更改将反映在以下内容中在美国东部时间上午11:30左右发布的当天构建报告。生成报告具有生成时页面顶部的时间戳。之后的更改EST下午2:30将在后天才能反映,因此可能需要36-48小时。的生成报告开发释放显示为该构建反映的包版本和提交id。这个包的登录页(例如。,博科生物)在包安装/build/checks而没有ERROR之前不会更新;我们不要传播损坏的包。这可能会导致上的不同版本被推到的登录页生物导体。还请记住包始终需要有效的版本更新才能传播给用户。

软件、数据实验、注释、书籍、工作流的时间表可以是在上找到检查结果页面.英寸为了将更改包含在报告中,应将更改提交给Bioconductor git.Bioconductor.org网站在所列日期的前一天早上带有有效版本bump。

23.2如何重现生成系统错误?

为了在本地准确地重现ERROR,请记住使用R和Bioconductor的正确版本。用于生成的R版本报告可以在释放开发生成报告。一旦您使用R的正确版本确保您的所有软件包都是最新的生物经理::valid()生物管理器::install()。还有一些其他每日构建器使用的环境变量R CMD检查.

单包构建有一些额外的文档关于如何设置本地系统以使用可选环境变量。请注意,如果您查看本页上列出的文件许多附加变量;生物导体做更严格的检查传入的包比daily builder上的要多(目前)。欢迎您使用如果您愿意,可以使用这个文件,因为它是一个更全面的检查,但上面列出了应尽可能少地包含环境变量。

调试和测试的另一个选项是使用生物导体码头工人图像。可以找到使用docker图像的文档在这里。docker图像不包含在daily builder上找到了环境变量设置。

23.3常见生成报告错误

随着R的发展和成熟,或作为生物导体,通常会出现常见错误包被修改和推进。本文档提供了有关错误的一些指导以及潜在的解决方案。

23.4生物导体3.17和R 4.3

23.4.1长度=逻辑强制(1)

在R 4.3中,if语句中使用的向量的警告增加为错误。所以这个:

x=c(真、真、假)>如果(x)1[1] 1警告消息:在if(x)1中:条件的长度>1,将只使用第一个元素

现在将是:

>x=c(真、真、假)>如果(x)1if(x)1中的错误:条件的长度>1

解决方案:在大多数情况下,这是对论点长度的错误判断,而不是故意使用检查是否赋值。应审查代码以查看参数的赋值是否正确。在大多数情况下,简单的解决方案可能是使用任何()全部()围绕向量。

23.5生物导体3.11和R 4.0

R从3.x切换到4.0,这通常意味着一些重大变化。

23.5.1S3方法注册

由于中未声明的S3方法,许多包当前都失败了名称牌。R开发者博客上有一些背景信息帖子:S3方法查找

此错误在生成报告中采用了许多不同的形式。更多常见的形式包括

  • 无法将类<structure>强制为data.frame
  • 无法将类型“S4”强制为类型“double”的向量
  • <foo>没有适用于的对象的方法等级<bar
  • “X”是一个列表,但没有组件“X”和“y”
  • colMeans中出错(x,na.rm=TRUE):“x”必须是数字
  • RG中的错误\[1:2, \]:尺寸数不正确
  • 形式参数<foo>与多个实际参数匹配
  • 未找到模式“function”的对象<foo>
  • “x”和“y”长度不同

解决方案:在NAMESPACE中注册S3方法

S3方法(<功能>,<调度>)

影响许多包的一个简单示例是S3绘图方法。以下行将添加到NAMESPACE包中。

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

23.5.2条已删除R CMD配置中的设置

错误的来源是利用包配置脚本中的设置已被移除或更换。R NEWS中有一节“R CMD配置不再知道未使用的设置F77和FCPIFCPLAGS,或CXX98和类似设置。'安装包时执行配置脚本失败,并且输出包含以下行的大量消息:

  • configure:警告:标志FFLAGS=“”不起作用
  • 检查ERROR:变量“F77”是否没有信息
  • configure:警告:FFLAGS的此值不起作用。

解决方案:替换“${R}CMD配置F77“使用”${R}CMD配置FC

23.5.3条件长度>1

在R 4.0中,长度大于1的条件将产生警告。打开Bioconductor Daily Builder和Single Package Builder增加到错误。

传统上如果/当语句可以使用第一个元素作为条件值,并忽略其余值。现在这个生成一个警告,如此虚拟示例中所示,并记录在长度大于1的条件

>if(c(真,假)){}无效的警告消息:如果(c(真,假)){:条件的长度>1,将只使用第一个元素

解决方案:生物导体增加了严重性,因为在大多数情况下,这是一个错误的判断争论的长度而不是故意的。应审查代码以查看参数的赋值是否正确。在大多数情况下可能是适合使用任何()全部()围绕矢量。

另请参见邮件列表邮递

23.5.4标量/向量逻辑

这还不是R的变化,但我们已经接到通知,它即将到来并已升级为我们日常建筑商的错误准备。这种类型错误的发生&&||.双人&&||意味着标量比较而不是矢量比较&|期望。请参见下面的虚拟示例:

>c(真,真)&真c(TRUE,TRUE)和TRUE中的错误:将“length(x)=2>1”强制为“logical(1)”

解决方案:大多数情况下都是对标量用法的错误判断和误解从矢量比较中进行比较。更改双精度&&/||到单数&/|如果要进行向量比较,或者向量参数使用适当的任何()全部()围绕矢量将导致适当的标量比较。注:如果此比较是在条件中请参阅上面的部分;任何()全部()很可能是更好的选择。

另请参见邮件列表帖子

23.5.5类==vs是/继承

虽然到目前为止,这还不是R/生物导体的变化,但仍有激烈的讨论关于这种代码结构的影响和后果。更好的讨论可以找到解释当你思考类(.)==*,再想想!

总结如下类(x)==“foo”应该避免。如果类扩展了其他类,则可能会产生误导。这个更好的选择是使用是(x,“foo”)继承(x,“foo”).

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

从R4.0开始,矩阵被视为数组的扩展。

>m=矩阵()>等级(m)[1] “矩阵”“数组”>class(m)==“矩阵”[1] 真-假>if(类(m)==“矩阵”){}if(class(m)==“matrix”){中的错误:条件的长度>1

这一变化以及上一节关于条件长度结果的内容在许多错误中,用户按照if(类(m)==“矩阵”); 这是一个很好的示例,其中如下所示适当的更改if(is(m,“矩阵”)if(继承(m,“矩阵”))if(是矩阵(m)).

由于此更改而出现的另一个常见错误类似以下各项:

vapply错误(实验(对象)、类、字符(1)):值的长度必须为1,但FUN(X[[4]])结果长度为2

23.5.6data.frame字符串作为因子

在R 4.0中,data.frame参数的默认值字符串作为因子已从更改TRUE到FALSE。这种变化在测试中造成了最大的破坏是对特定因子水平或构造因子水平的检查。ERROR有许多不同的形式。简单的解决方案是更改或添加这个字符串AsFactors=真对于data.frame调用,无论维护人员希望如何重新评估代码的潜在重组或易用性。

23.5.7统计::smoothEnds

最近对的更改统计::smoothEnds(),现在返回带有输入是一个整数向量。以前它可以返回数字向量。

示例R 3.6.3

>类(smoothEnds(c(401:403))[1] “整数”>类(smoothEnds(c(401:403,555L))[1] “数字”

4.0.0中的示例

>类(smoothEnds(c(401:403))[1] “整数”>类(smoothEnds(c(401:403,555L))[1] “整数”

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

23.5.8网格包更改

关于发生了什么变化,我们没有太多细节,但我们收到了以下通知电子邮件。电子邮件的重要部分如下:

我将对“网格”单元进行一些内部更改(在某些情况下,可将机组运行速度提高100倍)。许多软件包已经修复,可以使用这些但根据我的测试,以下CRAN程序包仍将无法通过R CMD检查。其中一些是级联(“armada”、“countToFPKM”和“wilson”从“Complex Heatmap”(参见下文)和“lemon”(柠檬)中的“fingertipscharts”而“xpose”实际上是一个“ggforce”问题),但所有其他问题程序包作者已经收到通知,几个人已经在处理修复了。其中最严重的是“ComplexHeatmap”,因为它会导致多个后续故障,上述CRAN故障和BioConductor上的其他故障:再次通知了主要包作者“ComplexHeatmap”作者正在进行更新。

23.5.9打印通用移动

绘图通用性已从图形转移到基础。从中可以看到错误变化是非特定的,可以采取多种形式。我们看到一些错误

getGeneric(f,TRUE,envir,package)中出错:找不到“plot”的泛型函数

as.double(y)中的错误:无法将类型“S4”强制为类型“double”的向量

给出的解释:

“名称空间控制用于的变量的搜索策略包中的函数。如果在本地找不到,R将搜索包首先是命名空间,然后是导入,然后是基本命名空间,然后是正常搜索路径。“根据https://cran.r-project.org/doc/manuals/r-devel/r-exts.html#包-名称空间):CRAN和Bioconductor有几个“有效”的软件包,因为在正常搜索路径中找到了plot(),但现在失败了,因为它是改为调用base中的那个。

23.5.10部分参数匹配

现在对partial的参数匹配进行了更严格的检查参数匹配。以下示例最能说明问题

setGeneric(“myocolfunction”,函数(对象,中断)标准通用(“myocolfunction”)setMethod(“myocolfunction”,签名=c(object=“GRanges”,break=“GRanges”),<代码>)

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

还应避免在调用函数时进行部分参数匹配,因为最佳实践的一部分。例如

真菌嗅觉功能<-功能(x,myargum,secondarg){code}mycolfunction(x=2,myar=1:2,second=3)#错误编码!mycolfunction(x=2,myargum=1:2,secondarg=3)#良好实践!

23.5.11包输入错误:UTF-8无效

该错误于2020年春季开始出现在tokay2(windows)上。我们不确定错误的确切来源(MiKTek中的更改、R中的更改或其他?)解决方案很简单:

请放置\使用包[utf8]{inputenc}在你发誓的开始之后的小插曲\文档类行。

12月23日依赖关系问题

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

23.5.12.1CRAN二进制程序不适用于R 4.0

Bioconductor的秋季周期使用R-devel为新发布的春天的R。就CRAN的软件包依赖性。CRAN在新版本R之前的6个月内将使Windows和MacOS的二进制文件可用。当它们可用时生物导体构建器将自动添加这些二进制文件。如果二进制文件有尚未创建,它们将不可用,并导致包不可用错误.Bioconductor不会花费额外的精力来寻找安装的工作这些包;当它们可用时,将添加它们。解决方案:请耐心等待!

23.5.12.2包装已从CRAN中移除

CRAN包偶尔会被移除。不幸的是,生物导体只会允许在CRAN或Bioconductor上积极维护包的依赖性。包必须更改其包以不使用代码,也不依赖于此依赖性。你当然可以尝试复职或达到请软件包维护人员修复并提交给CRAN。祝您好运!

23.5.12.3包装已从Bioconductor中移除

我们试图更多地了解孤立的软件包和仍处于损坏状态的软件包延长时间。发生软件包弃用和删除以及软件包必须更改以不使用这些包中的代码,否则可能提出接管破损包裹的维护,但这需要原始包裹维护人员许可。Bioconductor Package将在整个过程中宣布弃用邮件列表和支持站点上的发布周期,以尝试并允许依赖软件包在删除之前调整代码的时间。此次发布最多值得注意的维护者请求从3.10中删除(因此在3.11中删除)SNPchip和基因组图。可以找到不推荐使用的软件包的完整列表不推荐的程序包列表3.10.我们还记录了我们的已删除的程序包页面

2014年12月23日生物导体构建系统中缺少系统要求

您的软件包可能无法构建或在生物导体构建系统(BBS)中检查因为您的包或其某些依赖项具有系统要求可在BBS上找到。

例如,第一个Bioconductor软件包建议安装这个档案文件CRAN包未能通过BBS的检查。构建报告指出“找不到存档包”,但包已存在在CRAN中持续数月。这个档案文件系统需求中的程序包报告这个libarchive数据库库,而BBS没有安装该库。

如果您碰巧在BBS中错过了系统依赖项,请打开类似的问题BBS问题#220,你在哪里提到哪一个是直接或间接的生物导体封装有系统要求,如果可能,请提供缺失的信息需要安装的包。如果您遵循相关的拉取请求对于这个问题,您将看到解决方案是安装libarchive-dev数据库程序包,包括在BBS和Bioconductor docker图像中。

23.5.13不推荐的函数

函数可以被弃用、失效并最终删除。生物导体尝试强制执行此进程以允许维护人员调整代码。最不推荐或者失效的功能将(应该)建议另一种选择。以下是生物导体3.11中注明

23.5.13.1范围数据

错误:RangedData对象已失效。请迁移代码以使用GRanges或GRangesList对象。请参阅?中的“重要注意事项”?范围数据

23.5.13.2规格化(Normalize)

错误:“normalize”已失效。使用“normalize,SingleCellExperiment-method”无效。请改用“logNormCounts”。

23.5.13.3计算QCMetrics

错误:“calculateQCMetrics”无效。请改用“perCellQCMetrics”。