Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rstan_package_skeleton() gives object 'm' not found #43

Closed
JohnReid opened this issue Oct 16, 2018 · 11 comments
Closed

rstan_package_skeleton() gives object 'm' not found #43

JohnReid opened this issue Oct 16, 2018 · 11 comments

Comments

@JohnReid
Copy link

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 <NA>       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)
>

@JohnReid
Copy link
Author

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

@bgoodri
Copy link
Collaborator

bgoodri commented Oct 16, 2018 via email

@JohnReid
Copy link
Author

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.

@bgoodri
Copy link
Collaborator

bgoodri commented Oct 17, 2018 via email

@JohnReid
Copy link
Author

Great. Thanks for your help. I'll keep plugging away.

@JohnReid
Copy link
Author

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?

@JohnReid
Copy link
Author

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?

@JohnReid
Copy link
Author

Or maybe it is easy to compile the functions and expose them at package installation time?

@bgoodri
Copy link
Collaborator

bgoodri commented Oct 17, 2018

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.

@bart1
Copy link

bart1 commented Mar 12, 2019

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.

@andrjohns
Copy link
Collaborator

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants