stan-dev / rstantools

Tools for Developing R Packages Interfacing with Stan
https://mc-stan.org/rstantools
GNU General Public License v3.0
51 stars 21 forks source link

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

Closed JohnReid closed 2 years ago

JohnReid commented 5 years ago

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 commented 5 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

bgoodri commented 5 years ago

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 .

JohnReid commented 5 years ago

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 commented 5 years ago

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 .

JohnReid commented 5 years ago

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

JohnReid commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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

bgoodri commented 5 years ago

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 commented 5 years ago

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 commented 2 years ago

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.