Closed JohnReid closed 2 years ago
The bigger problem is that I'm trying to update my DeLorean
package to use the rstantools
recommended way to pre-compile models to fix some recent CRAN warnings/errors and I'm hitting this error there as well. See this branch: https://github.com/JohnReid/DeLorean/tree/stan-update
When you call rstan_package_skeleton
you need to specify the stan_files
argument as a character vector of paths to your Stan programs that you want
to include in DeLorean.
On Tue, Oct 16, 2018 at 11:42 AM John Reid notifications@github.com wrote:
I follow these instructions: https://cran.r-project.org/web/packages/rstantools/vignettes/minimal-rstan-package.html (2018-08-20) but get the error in the issue title. From googling about this error crops up when installing/loading packages that depend on rstan but I didn't see much about it when running rstan_package_skeleton. Presumably my installation is corrupt somehow but I can't see how (session information is below).
library("rstantools") This is rstantools version 1.5.1 rstan_package_skeleton(path = 'rstanlm') Creating package skeleton for package: rstanlm Running usethis::create_package ... ✔ Setting active project to '/home/john/tmp/rstanlm' ✔ Creating 'R/' ✔ Creating 'man/' ✔ Writing 'DESCRIPTION' ✔ Writing 'NAMESPACE' ✔ Creating 'tools/' ✔ Creating 'src/' ✔ Creating 'src/stan_files/' ✔ Creating 'src/stan_files/chunks/' ✔ Creating 'inst/' ✔ Creating 'inst/include/' Updating R directory ... Adding .travis.yml file ... Updating DESCRIPTION with necessary dependencies ... Updating NAMESPACE ... Writing NAMESPACE Running /usr/lib/R/bin/R CMD INSTALL /home/john/tmp/rstanlm \ --library=/tmp/RtmpS520NG/devtools_install_37f42e569b2e' --no-R --no-data --no-help \ --no-demo --no-inst --no-docs --no-exec --no-multiarch --no-test-load --preclean
- installing source package ‘rstanlm’ ... ** libs g++ -std=gnu++14 -I"/usr/share/R/include" -DNDEBUG -I"../inst/include" -I"`"/usr/lib/R/bin/Rscript" --vanilla -e "cat(system.file('include', 'src', package = 'StanHeaders'))"'" -DBOOST_DISABLE_ASSERTS -DEIGEN_NO_DEBUG -DBOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error -I"/home/john/lib/R/library/BH/include" -I"/home/john/lib/R/library/Rcpp/include" -I"/home/john/lib/R/library/RcppEigen/include" -I"/home/john/lib/R/library/rstan/include" -I"/home/john/lib/R/library/StanHeaders/include" -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c init.cpp -o init.o g++ -std=gnu++14 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o rstanlm.so init.o -L/usr/lib/R/lib -lR installing to /tmp/RtmpS520NG/devtools_install_37f42e569b2e/rstanlm/libs
- DONE (rstanlm) Error in is(module, "character") : object 'm' not found
devtools::session_info() Session info ----------------------------------------------------------------------------------- setting value version R version 3.5.1 (2018-07-02) system x86_64, linux-gnu ui X11 language en_GB:en collate en_GB.UTF-8 tz Europe/London date 2018-10-16
Packages --------------------------------------------------------------------------------------- package version date source assertthat 0.2.0 2017-04-11 CRAN (R 3.5.1) backports 1.1.2 2017-12-13 CRAN (R 3.5.1) base 3.5.1 2018-07-03 local base64enc 0.1-3 2015-07-28 CRAN (R 3.5.1) BH 1.66.0-1 2018-02-13 CRAN (R 3.5.1) bindr 0.1.1 2018-03-13 CRAN (R 3.5.1) bindrcpp 0.2.2 2018-03-29 CRAN (R 3.5.1) callr 3.0.0 2018-08-24 CRAN (R 3.5.1) clisymbols 1.2.0 2017-05-21 CRAN (R 3.5.1) colorout 1.2-0 2018-09-27 local colorspace 1.3-2 2016-12-14 CRAN (R 3.5.1) commonmark 1.6 2018-09-30 CRAN (R 3.5.1) compiler 3.5.1 2018-07-03 local crayon 1.3.4 2017-09-16 CRAN (R 3.5.1) datasets 3.5.1 2018-07-03 local debugme 1.1.0 2017-10-22 CRAN (R 3.5.1) desc 1.2.0 2018-05-01 CRAN (R 3.5.1) devtools 1.13.6 2018-06-27 CRAN (R 3.5.1) digest 0.6.18 2018-10-10 CRAN (R 3.5.1) dplyr 0.7.6 2018-06-29 CRAN (R 3.5.1) fs 1.2.6 2018-08-23 CRAN (R 3.5.1) ggplot2 3.0.0 2018-07-03 CRAN (R 3.5.1) glue 1.3.0 2018-07-17 CRAN (R 3.5.1) graphics 3.5.1 2018-07-03 local grDevices 3.5.1 2018-07-03 local grid 3.5.1 2018-07-03 local gridExtra 2.3 2017-09-09 CRAN (R 3.5.1) gtable 0.2.0 2016-02-26 CRAN (R 3.5.1) inline 0.3.15 2018-05-18 CRAN (R 3.5.1) lattice 0.20-35 2017-03-25 CRAN (R 3.5.1) lazyeval 0.2.1 2017-10-29 CRAN (R 3.5.1) loo 2.0.0 2018-04-11 CRAN (R 3.5.1) magrittr 1.5 2014-11-22 CRAN (R 3.5.1) Matrix 1.2-14 2018-04-09 CRAN (R 3.5.1) matrixStats 0.54.0 2018-07-23 CRAN (R 3.5.1) memoise 1.1.0 2017-04-21 CRAN (R 3.5.1) methods 3.5.1 2018-07-03 local munsell 0.5.0 2018-06-12 CRAN (R 3.5.1) parallel 3.5.1 2018-07-03 local pillar 1.3.0 2018-07-14 CRAN (R 3.5.1) pkgbuild 1.0.1 2018-09-18 CRAN (R 3.5.1) pkgconfig 2.0.2 2018-08-16 CRAN (R 3.5.1) pkgload 1.0.1 2018-10-11 CRAN (R 3.5.1) plyr 1.8.4 2016-06-08 CRAN (R 3.5.1) processx 3.2.0 2018-08-16 CRAN (R 3.5.1) ps 1.1.0 2018-08-10 CRAN (R 3.5.1) purrr 0.2.5 2018-05-29 CRAN (R 3.5.1) R6 2.3.0 2018-10-04 CRAN (R 3.5.1) Rcpp 0.12.19 2018-10-01 CRAN (R 3.5.1) RcppEigen 0.3.3.4.0 2018-02-07 CRAN (R 3.5.1) rlang 0.2.2 2018-08-16 CRAN (R 3.5.1) roxygen2 6.1.0 2018-07-27 CRAN (R 3.5.1) rprojroot 1.3-2 2018-01-03 CRAN (R 3.5.1) rstan 2.18.1 2018-10-16 CRAN (R 3.5.1) rstanlm 0.0.0.9000
local rstantools 1.5.1 2018-08-22 CRAN (R 3.5.1) rstudioapi 0.8 2018-10-02 CRAN (R 3.5.1) scales 1.0.0 2018-08-09 CRAN (R 3.5.1) setwidth 1.0-4 2015-07-07 Github (cran/setwidth@42b61c4) StanHeaders 2.18.0 2018-10-07 CRAN (R 3.5.1) stats 3.5.1 2018-07-03 local stats4 3.5.1 2018-07-03 local stringi 1.2.4 2018-07-20 CRAN (R 3.5.1) stringr 1.3.1 2018-05-10 CRAN (R 3.5.1) testthat 2.0.1 2018-10-13 CRAN (R 3.5.1) tibble 1.4.2 2018-01-22 CRAN (R 3.5.1) tidyselect 0.2.5 2018-10-11 CRAN (R 3.5.1) tools 3.5.1 2018-07-03 local usethis 1.4.0 2018-08-14 CRAN (R 3.5.1) utils * 3.5.1 2018-07-03 local whisker 0.3-2 2013-04-28 CRAN (R 3.5.1) withr 2.1.2 2018-03-15 CRAN (R 3.5.1) xml2 1.2.0 2018-01-24 CRAN (R 3.5.1)— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/stan-dev/rstantools/issues/43, or mute the thread https://github.com/notifications/unsubscribe-auth/ADOrqupGGjEFeryHTjuxf6e-A5xy4Nqdks5ulf5ygaJpZM4Xepc1 .
I called rstan_package_skeleton
in order to see the boilerplate code required to implement pre-compiled models. It sounds like you are suggesting a more direct way of updating DeLorean. Regardless of how I update DeLorean, following the vignette shouldn't produce the error message. In fact I get the same error message when I copy the boilerplate code over to the DeLorean branch. This makes me believe there is something wrong in my set up but I have not been able to work out what it is. I updated StanHeaders, rstan and rstan_tools but that didn't help.
I figured out what the problem is. The latest version of roxygen2 is trying
to load_all
of the code when it makes the documentation and this fails if
there are no Stan files. We'll fix that. Anyway, your stan-update branch
looks well on its way, but there is an error when it tries to build the
vignette. When fit.dl(dl, method='vb') calls find.good.ordering(dl,
seriation.find.orderings) and then method(dl, ...), there is an error.
On Tue, Oct 16, 2018 at 5:24 PM John Reid notifications@github.com wrote:
I called rstan_package_skeleton in order to see the boilerplate code required to implement pre-compiled models. It sounds like you are suggesting a more direct way of updating DeLorean. Regardless of how I update DeLorean, following the vignette shouldn't produce the error message. In fact I get the same error message when I copy the boilerplate code over to the DeLorean branch. This makes me believe there is something wrong in my set up but I have not been able to work out what it is. I updated StanHeaders, rstan and rstan_tools but that didn't help.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/stan-dev/rstantools/issues/43#issuecomment-430406189, or mute the thread https://github.com/notifications/unsubscribe-auth/ADOrqjYP70gYcLDkzGFGd67aJZ9EbktIks5ulk6BgaJpZM4Xepc1 .
Great. Thanks for your help. I'll keep plugging away.
I've followed the vignette through to the end. I have uncovered another problem. I need to expose some functions from my Stan code to R and this doesn't seem to be working as it should. I add a function to the top of lm.stan
in the vignette, re-build the package and then get:
> model <- stanmodels[['lm']]
> message(class(model))
stanmodel
> expose_stan_functions(model)
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘get_stancode’ for signature ‘"stanmodel"’
but the expose_stan_functions
explicitly says I should be able to pass a stanmodel
in. Something pretty similar was working with my original set up so maybe it is to do with pre-compiled models?
I would be happy passing the path to the lm.stan
model description into expose_stan_functions
but this is not installed with the package. Is this easy to do?
Or maybe it is easy to compile the functions and expose them at package installation time?
The expose_stan_functions() function is more intended for runtime. The binary it produces may not work on another computer. It is probably better to generate the C++ for the functions you want to expose once and then compile that as if you had written it by hand. @wds15 has gone through this process before I think.
Just a quick note from my side, I run into the same problem that exposing the stan functions from a package is rather tricky. I first thought it might be an option to generate the code using expose_stan_functions
copy the source to the package and then run compileAttributes
. This does not work, nor anything else that works. It would be great if there would be an example how to approach this best.
Closing this issue given its age, but feel free to re-open if it was never resolved.
Additionally, the github version of rstantools
now supports stan files comprised of only function definitions, which will be compiled and exported at installation.
I follow these instructions: https://cran.r-project.org/web/packages/rstantools/vignettes/minimal-rstan-package.html (2018-08-20) but get the error in the issue title. From googling about this error crops up when installing/loading packages that depend on rstan but I didn't see much about it when running
rstan_package_skeleton
. Presumably my installation is corrupt somehow but I can't see how (session information is below).