glmmTMB 分段错误

glmmTMB segmentation fault

我的模型是这样的:

m1 <- glmmTMB(counts ~ fixed1*fixed2 + (1|random/nested_random) 
+ offset(log_total_counts), data = long_data_frame,
verbose=FALSE,family="nbinom2")

这是 long_data_frame 的 115 行中的前六行:

fixed1   fixed2   random    nested_random   counts    log_tot_reads_orig
0        0        1         1               643       12.89582
1        8        2         6               585       13.67509
2        25       3         11              846       13.94209
3        75       4         16              755       13.93056
4        0        5         21              1428      13.65672
6        8        6        26               1566      13.64421

模型 运行 在我的 Mac 笔记本电脑 (OS 10.13.4) 上完成。但是,我需要将此分析移植到本地集群,因为我需要这些 glmmTMB 测试的多个 300,000 运行s。因此,我使用

在集群上安装了 glmmTMB
install.packages('package_name', dependencies=TRUE)

我运行时没有抱怨:

library(glmmTMB)

但是当我 运行 集群上模型的一个单独示例时,出现以下错误:

 *** caught segfault ***
address (nil), cause 'memory not mapped'

Traceback:
 1: retape(set.defaults = TRUE)
 2: MakeADFun(data.tmb, parameters, map = mapArg, random = randomArg,     profile = NULL, silent = !verbose, DLL = "glmmTMB")
 3: eval(substitute(expr), data, enclos = parent.frame())
 4: eval(substitute(expr), data, enclos = parent.frame())
 5: with.default(TMBStruc, MakeADFun(data.tmb, parameters, map = mapArg,     random = randomArg, profile = NULL, silent = !verbose, DLL = "glmmTMB"))
 6: with(TMBStruc, MakeADFun(data.tmb, parameters, map = mapArg,     random = randomArg, profile = NULL, silent = !verbose, DLL = "glmmTMB"))
 7: fitTMB(TMBStruc)
 8: glmmTMB(copy ~ week * conc + (1 | pool/cell) + offset(log_tot_reads_orig),     data = subset(copy_raw_sub_l, copy_raw_sub_l$id == i), verbose = FALSE,     family = "nbinom2")

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace

这里是集群的一些信息:

Sys.info()
                             sysname                              release 
                             "Linux"         "2.6.32-696.18.7.el6.x86_64" 
                             version                             nodename 
"#1 SMP Thu Jan 4 17:31:22 UTC 2018"                             "login2" 
                             machine                                login 
                            "x86_64"                            "bob" 
                                user                       effective_user 
                           "bob"                            "bob" 

这是关于 glmmTMB 的信息:

installed.packages('glmmTMB')
     Package LibPath Version Priority Depends Imports LinkingTo Suggests
     Enhances License License_is_FOSS License_restricts_use OS_type Archs
     MD5sum NeedsCompilation Built

"MD5sum Needs Compilation Built"看起来不对?我猜这几乎可以肯定是我集群环境的问题?我将非常感谢有关如何解决此问题的建议,或有关可以在集群中修改或升级的内容的指示,然后我可以将其建议给我的本地管理员。非常感谢!

我出色的集群管理员在 GitHub 上向 glmmTMB 提交了关于此问题的报告:

https://github.com/glmmTMB/glmmTMB/issues/369

我们被告知,这个问题显然之前已经处理过:

https://github.com/glmmTMB/glmmTMB/issues/232

我的集群管理员建议的解决方案是创建一个名为

的文件
$HOME/.R/Makevars

内容如下:

CXX = g++
CXXSTD = -std=c++11
CXXFLAGS =-m64 -O3 -fPIC

然后我运行:

install.packages("TMB",dependencies=TRUE,type="source")

我收到以下错误消息:

ERROR: failed to lock directory ‘path/R/x86_64-pc-linux-gnu-library/3.5’ for modifying
Try removing ‘path/R/x86_64-pc-linux-gnu-library/3.5/00LOCK-TMB’

我按照建议删除了恶意目录。然后我再一次 运行:

install.packages("TMB",dependencies=TRUE,type="source")

之后是:

install.packages("glmmTMB",dependencies=TRUE,type="source")

然后我运行:

library(glmmTMB)

和运行问题中描述的模型。胜利的喜悦淹没了我的感官,因为屏幕上的协变量和对数似然 运行 与我幸福的泪水同时出现。