Skip to content

Issue #400: Rename to naive model and latent model #39

Issue #400: Rename to naive model and latent model

Issue #400: Rename to naive model and latent model #39

name: check-cmdstan
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
cancel-in-progress: true
on:
push:
paths:
- '**.stan'
branches:
- main
- develop
schedule:
- cron: '5 4 * * 1'
pull_request:
paths:
- '**.stan'
branches:
- main
- develop
merge_group:
workflow_dispatch:
jobs:
check-cmdstan:
if: "! contains(github.event.head_commit.message, '[ci skip]')"
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: cmdstan env vars
run: |
echo "CMDSTAN_PATH=${HOME}/.cmdstan" >> $GITHUB_ENV
shell: bash
- uses: actions/checkout@v4
- name: Install cmdstan Linux system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libcurl4-openssl-dev || true
sudo apt-get install -y openmpi-bin openmpi-common libopenmpi-dev || true
sudo apt-get install -y libpng-dev || true
- uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true
extra-repositories: 'https://stan-dev.r-universe.dev'
- uses: r-lib/actions/setup-r-dependencies@v2
with:
extra-packages: local::.
- name: Install cmdstan
uses: epinowcast/actions/install-cmdstan@v1
with:
cmdstan-version: 'latest'
num-cores: 2
- name: Compile model and check syntax
run: |
dummy_data <- data.frame(
pdate_lwr = as.POSIXct("2024-01-01 00:00:00"),
pdate_upr = as.POSIXct("2024-01-02 00:00:00"),
sdate_lwr = as.POSIXct("2024-01-03 00:00:00"),
sdate_upr = as.POSIXct("2024-01-04 00:00:00"),
obs_date = as.POSIXct("2024-01-05 00:00:00")
)
linelist <- epidist::as_epidist_linelist(dummy_data)
latent_model <- epidist::as_latent_model(linelist)
stancode <- epidist::epidist(
data = latent_model, fn = brms::make_stancode
)
mod <- cmdstanr::cmdstan_model(
stan_file = cmdstanr::write_stan_file(stancode), compile = FALSE
)
message <- capture.output(
mod$check_syntax(pedantic = FALSE),
type = "message"
)
# We can't use TRUE here as pendatic check return lots of false
# positives related to our use of functions.
stopifnot(
length(message) != 0 &&
all(message == "Stan program is syntactically correct")
)
shell: Rscript {0}