glmmTMB分段错误

时间:2018-07-07 20:18:53

标签: r environment mixed-models

我的模型具有以下形式:

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次。因此,我使用

在群集上安装了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”看起来不对吗?我猜几乎可以肯定这是集群环境的问题?我将非常感谢您提供有关如何解决此问题的建议,或者有关群集中可以修改或升级的内容的指针,然后我可以向本地管理员提出建议。非常感谢!

1 个答案:

答案 0 :(得分:0)

我出色的集群管理员在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)

并运行问题中描述的模型。胜利的喜悦淹没了我的感官,伴随着协变量和对数似然的可能性在屏幕上流逝,与此同时,我也流下了幸福的眼泪。