我的模型具有以下形式:
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次。因此,我使用
在群集上安装了glmmTMBinstall.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”看起来不对吗?我猜几乎可以肯定这是集群环境的问题?我将非常感谢您提供有关如何解决此问题的建议,或者有关群集中可以修改或升级的内容的指针,然后我可以向本地管理员提出建议。非常感谢!
答案 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)
并运行问题中描述的模型。胜利的喜悦淹没了我的感官,伴随着协变量和对数似然的可能性在屏幕上流逝,与此同时,我也流下了幸福的眼泪。