From 697c38c88cc0e6c75ad0966b3ce8bb7362a39607 Mon Sep 17 00:00:00 2001 From: venpopov Date: Tue, 13 Feb 2024 17:54:32 +0100 Subject: [PATCH] Add release install instructions to README --- README.Rmd | 61 +++++++++++++++++------ README.md | 49 ++++++++++++++---- man/figures/README-unnamed-chunk-4-1.png | Bin 6272 -> 6134 bytes 3 files changed, 85 insertions(+), 25 deletions(-) diff --git a/README.Rmd b/README.Rmd index eb90b25e..ae809adf 100644 --- a/README.Rmd +++ b/README.Rmd @@ -60,26 +60,57 @@ bmm::supported_models() ## Installation -Currently, we are working on getting the package ready to be submitted to CRAN. -For now, you have to install the development version of bmm from -[GitHub](https://github.com/) with: +Currently, we are working on getting the package ready to be submitted +to CRAN. Until then, you can install the latest version of the package +from GitHub. + +You can install the latest beta release of bmm with: ``` r -# install.packages("devtools") -devtools::install_github("venpopov/bmm") +if (!requireNamespace("remotes")) { + install.packages("remotes") +} +remotes::install_github("venpopov/bmm@*release") ``` -All the vignettes are also available on the [bmm +This does not install the vignettes, which take a long time to build, +but they are all available on the [bmm website](https://venpopov.github.io/bmm/). -The package was significantly updated on Feb 03, 2024. If you are following -older versions (earlier than Version 6) of the [Tutorial -preprint](https://osf.io/preprints/psyarxiv/umt57), you need to install the -0.0.1 version of the bmm package with: +Because `bmm` is based on `brms` and `stan` it requires a working C++ +compiler. If you are already using `brms`, you are good to go and can +install the package as described above. If you are not using `brms` yet, +we recommend the following steps: + +- Install and configure a C++ compiler. Detailed instructions + [here](https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started#configuring-c-toolchain) +- Install + [rstan](https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started) + and/or + [cmdstanr](https://mc-stan.org/cmdstanr/articles/cmdstanr.html). We + recommend using `cmdstanr`. +- Install [brms](https://paul-buerkner.github.io/brms/#installation) +- Install `bmm` as described above + +You can also install the development version of bmm with: ``` r -# install.packages("devtools") -devtools::install_github("venpopov/bmm@v0.0.1") +if (!requireNamespace("remotes")) { + install.packages("remotes") +} +remotes::install_github("venpopov/bmm") +``` + +The package was significantly updated on Feb 03, 2024. If you are +following older versions (earlier than Version 6) of the [Tutorial +preprint](https://osf.io/preprints/psyarxiv/umt57), you need to install +the 0.0.1 version of the bmm package with: + +``` r +if (!requireNamespace("remotes")) { + install.packages("remotes") +} +remotes::install_github("venpopov/bmm@v0.0.1") ``` ## The general structure of the bmm package @@ -103,7 +134,7 @@ end users. This way researchers that face challenges in writing their own STAN code to implement such models themselves can still use these models in almost any experimental design. -### Fitting models using the bmm +## Fitting models using the bmm The core function of the bmm package is the `fit_model` function. This function takes: @@ -190,7 +221,7 @@ package](https://venpopov.github.io/bmm/articles/index.html) or [here for the development version](https://venpopov.github.io/bmm/dev/articles/index.html). -### Exploring cogntive measurement models +## Exploring cogntive measurement models To aid users in improving their intuition about what different models predict for observed data given a certain parameter set, the `bmm` package also includes @@ -225,8 +256,6 @@ ggplot(data = simData, aes(x = x)) + ``` - - ## Contributing to the `bmm` package Should be interested in contributing a model to the `bmm` package, you should diff --git a/README.md b/README.md index bc0d1b1d..c918c99a 100644 --- a/README.md +++ b/README.md @@ -65,25 +65,56 @@ bmm::supported_models() ## Installation Currently, we are working on getting the package ready to be submitted -to CRAN. For now, you have to install the development version of bmm -from [GitHub](https://github.com/) with: +to CRAN. Until then, you can install the latest version of the package +from GitHub. + +You can install the latest beta release of bmm with: ``` r -# install.packages("devtools") -devtools::install_github("venpopov/bmm") +if (!requireNamespace("remotes")) { + install.packages("remotes") +} +remotes::install_github("venpopov/bmm@*release") ``` -All the vignettes are also available on the [bmm +This does not install the vignettes, which take a long time to build, +but they are all available on the [bmm website](https://venpopov.github.io/bmm/). +Because `bmm` is based on `brms` and `stan` it requires a working C++ +compiler. If you are already using `brms`, you are good to go and can +install the package as described above. If you are not using `brms` yet, +we recommend the following steps: + +- Install and configure a C++ compiler. Detailed instructions + [here](https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started#configuring-c-toolchain) +- Install + [rstan](https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started) + and/or + [cmdstanr](https://mc-stan.org/cmdstanr/articles/cmdstanr.html). We + recommend using `cmdstanr`. +- Install [brms](https://paul-buerkner.github.io/brms/#installation) +- Install `bmm` as described above + +You can also install the development version of bmm with: + +``` r +if (!requireNamespace("remotes")) { + install.packages("remotes") +} +remotes::install_github("venpopov/bmm") +``` + The package was significantly updated on Feb 03, 2024. If you are following older versions (earlier than Version 6) of the [Tutorial preprint](https://osf.io/preprints/psyarxiv/umt57), you need to install the 0.0.1 version of the bmm package with: ``` r -# install.packages("devtools") -devtools::install_github("venpopov/bmm@v0.0.1") +if (!requireNamespace("remotes")) { + install.packages("remotes") +} +remotes::install_github("venpopov/bmm@v0.0.1") ``` ## The general structure of the bmm package @@ -104,7 +135,7 @@ cognitive measurement models for end users. This way researchers that face challenges in writing their own STAN code to implement such models themselves can still use these models in almost any experimental design. -### Fitting models using the bmm +## Fitting models using the bmm The core function of the bmm package is the `fit_model` function. This function takes: @@ -192,7 +223,7 @@ package](https://venpopov.github.io/bmm/articles/index.html) or [here for the development version](https://venpopov.github.io/bmm/dev/articles/index.html). -### Exploring cogntive measurement models +## Exploring cogntive measurement models To aid users in improving their intuition about what different models predict for observed data given a certain parameter set, the `bmm` diff --git a/man/figures/README-unnamed-chunk-4-1.png b/man/figures/README-unnamed-chunk-4-1.png index 43ef250d04544de65622ffbe0ff2b95bedb9b130..7144a535af733f917d7869528d037099c747d944 100644 GIT binary patch literal 6134 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 literal 6272 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