`R` 中包 `IRanges` 的整数溢出
Integer overflow with package `IRanges` in `R`
问题
我正在使用包 [IRanges][1]
,我需要准确编码超过 2^31 约 10 倍的超长序列。
从下面看来,IRanges
用的是int32
##### INSTALLATION FROM SRC CODE ######
## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("IRanges")
##### CALL PACKAGE #####
require(IRanges)
IRanges(start=1,end=2^31-1) # Works fine
IRanges(start=1,end=2^31) # Fail
Error in .Call2("solve_user_SEW0", start, end, width, PACKAGE = "IRanges") :
solving row 1: range cannot be determined from the supplied arguments (too many NAs)
In addition: Warning message:
In .normargSEW0(end, "end") : NAs introduced by coercion to integer range
由于此包经常用于 DNA 序列,因此能够处理大于 2^32 (≈ 10^9) 的值将非常有用,因为许多生物体的基因组大小更长比那个。
问题
- 我认为这是整数溢出问题对吗?
- 您遇到同样的问题吗?
- 有办法解决这个问题吗?
- 是否可以(并且容易)找到源代码并仅修改对象类型
- 你认为这个包还有另一个版本吗?
我找到的唯一解决方案是接受降低我的准确度并将每个宽度除以 100...但我对降低我的准确度不是很满意。
R版
R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin13.4.0 (64-bit)
问题
我正在使用包 [IRanges][1]
,我需要准确编码超过 2^31 约 10 倍的超长序列。
从下面看来,IRanges
用的是int32
##### INSTALLATION FROM SRC CODE ######
## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("IRanges")
##### CALL PACKAGE #####
require(IRanges)
IRanges(start=1,end=2^31-1) # Works fine
IRanges(start=1,end=2^31) # Fail
Error in .Call2("solve_user_SEW0", start, end, width, PACKAGE = "IRanges") :
solving row 1: range cannot be determined from the supplied arguments (too many NAs)
In addition: Warning message:
In .normargSEW0(end, "end") : NAs introduced by coercion to integer range
由于此包经常用于 DNA 序列,因此能够处理大于 2^32 (≈ 10^9) 的值将非常有用,因为许多生物体的基因组大小更长比那个。
问题
- 我认为这是整数溢出问题对吗?
- 您遇到同样的问题吗?
- 有办法解决这个问题吗?
- 是否可以(并且容易)找到源代码并仅修改对象类型
- 你认为这个包还有另一个版本吗?
我找到的唯一解决方案是接受降低我的准确度并将每个宽度除以 100...但我对降低我的准确度不是很满意。
R版
R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin13.4.0 (64-bit)