Skip to content

Commit ffea057

Browse files
committed
Merge branch 'master' into fread
2 parents 810938e + bc3c8a7 commit ffea057

File tree

5 files changed

+35
-87
lines changed

5 files changed

+35
-87
lines changed
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

tests/testthat/test-csv.R

Lines changed: 35 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -100,65 +100,55 @@ test_that("read_cmdstan_csv() fails with the no params listed", {
100100
"Supplied CSV file does not contain any variable names or data!")
101101
})
102102

103-
test_that("read_cmdstan_csv() matches rstan::read_stan_csv()", {
103+
test_that("read_cmdstan_csv() matches utils::read.csv", {
104104
skip_on_cran()
105105
csv_files <- c(test_path("resources", "csv", "model1-1-warmup.csv"),
106106
test_path("resources", "csv", "model1-2-warmup.csv"))
107107

108-
draws_array <- readRDS(test_path("answers", "rstan-read-stan-csv-no-warmup.rds"))
109-
draws_array <- posterior::as_draws_array(draws_array)
110-
csv_output <- read_cmdstan_csv(csv_files)
111-
expect_equal(csv_output$post_warmup_draws[,, "mu"],
112-
draws_array[,,"mu"])
113-
expect_equal(csv_output$post_warmup_draws[,, "sigma"],
114-
draws_array[,,"sigma"])
115-
expect_equal(csv_output$post_warmup_draws[,, "lp__"],
116-
draws_array[,,"lp__"])
117-
})
108+
draws_array_1 <- utils::read.csv(test_path("resources", "csv", "model1-1-warmup.csv"), comment.char = "#")
109+
draws_array_2 <- utils::read.csv(test_path("resources", "csv", "model1-2-warmup.csv"), comment.char = "#")
110+
post_warmup_draws_array_1 <- posterior::as_draws_array(draws_array_1[101:200,,])
111+
post_warmup_draws_array_2 <- posterior::as_draws_array(draws_array_2[101:200,,])
112+
warmup_draws_array_1 <- posterior::as_draws_array(draws_array_1[1:100,,])
113+
warmup_draws_array_2 <- posterior::as_draws_array(draws_array_2[1:100,,])
118114

119-
test_that("read_cmdstan_csv() matches rstan::read_stan_csv() with save_warmup", {
120-
skip_on_cran()
121-
csv_files <- c(test_path("resources", "csv", "model1-1-warmup.csv"),
122-
test_path("resources", "csv", "model1-2-warmup.csv"))
123-
124-
draws_array <- readRDS(test_path("answers", "rstan-read-stan-csv-warmup.rds"))
125-
draws_array <- posterior::as_draws_array(draws_array)
126115
csv_output <- read_cmdstan_csv(csv_files)
127-
128-
warmup_iter <- csv_output$metadata$iter_warmup
129-
num_iter <- csv_output$metadata$iter_sampling + csv_output$metadata$iter_warmup
130-
131-
draws_array_post_warmup <- draws_array[(warmup_iter+1):num_iter,,]
132-
draws_array_warmup <- draws_array[1:warmup_iter,,]
133-
134-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_draws, "mu"),
135-
posterior::extract_variable_matrix(draws_array_post_warmup, "mu"))
136-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_draws, "sigma"),
137-
posterior::extract_variable_matrix(draws_array_post_warmup, "sigma"))
138-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_draws, "lp__"),
139-
posterior::extract_variable_matrix(draws_array_post_warmup, "lp__"))
140-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_draws, "mu"),
141-
posterior::extract_variable_matrix(draws_array_warmup, "mu"))
142-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_draws, "sigma"),
143-
posterior::extract_variable_matrix(draws_array_warmup, "sigma"))
144-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_draws, "lp__"),
145-
posterior::extract_variable_matrix(draws_array_warmup, "lp__"))
116+
for (param in c("mu", "sigma", "lp__")) {
117+
expect_equal(posterior::subset_draws(csv_output$post_warmup_draws, chain = 1, variable = param),
118+
post_warmup_draws_array_1[,,param])
119+
expect_equal(posterior::subset_draws(csv_output$warmup_draws, chain = 1, variable = param),
120+
warmup_draws_array_1[,,param])
121+
expect_equal(posterior::subset_draws(csv_output$post_warmup_draws, chain = 2, variable = param),
122+
post_warmup_draws_array_2[,,param])
123+
expect_equal(posterior::subset_draws(csv_output$warmup_draws, chain = 2, variable = param),
124+
warmup_draws_array_2[,,param])
125+
}
126+
for (diagnostic in c("divergent__", "accept_stat__", "treedepth__", "stepsize__", "n_leapfrog__", "energy__")) {
127+
expect_equal(posterior::subset_draws(csv_output$post_warmup_sampler_diagnostics, chain = 1, variable = diagnostic),
128+
post_warmup_draws_array_1[,,diagnostic])
129+
expect_equal(posterior::subset_draws(csv_output$warmup_sampler_diagnostics, chain = 1, variable = diagnostic),
130+
warmup_draws_array_1[,,diagnostic])
131+
expect_equal(posterior::subset_draws(csv_output$post_warmup_sampler_diagnostics, chain = 2, variable = diagnostic),
132+
post_warmup_draws_array_2[,,diagnostic])
133+
expect_equal(posterior::subset_draws(csv_output$warmup_sampler_diagnostics, chain = 2, variable = diagnostic),
134+
warmup_draws_array_2[,,diagnostic])
135+
}
146136
})
147137

148-
test_that("read_cmdstan_csv() matches rstan::read_stan_csv() for csv file without warmup", {
138+
test_that("read_cmdstan_csv() matches utils::read.csv for csv file without warmup", {
149139
skip_on_cran()
150140
csv_files <- c(test_path("resources", "csv", "model1-2-no-warmup.csv"))
151141

152-
draws_array <- readRDS(test_path("answers", "rstan-read-stan-csv-no-warmup-file.rds"))
142+
draws_array <- utils::read.csv(test_path("resources", "csv", "model1-2-no-warmup.csv"), comment.char = "#")
153143
draws_array <- posterior::as_draws_array(draws_array)
154144
csv_output <- read_cmdstan_csv(csv_files)
145+
expect_equal(posterior::subset_draws(csv_output$post_warmup_draws, chain = 1, variable = "mu"),
146+
draws_array[,,"mu"])
147+
expect_equal(posterior::subset_draws(csv_output$post_warmup_draws, chain = 1, variable = "sigma"),
148+
draws_array[,,"sigma"])
149+
expect_equal(posterior::subset_draws(csv_output$post_warmup_draws, chain = 1, variable = "lp__"),
150+
draws_array[,,"lp__"])
155151

156-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_draws, "mu"),
157-
posterior::extract_variable_matrix(draws_array, "mu"))
158-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_draws, "sigma"),
159-
posterior::extract_variable_matrix(draws_array, "sigma"))
160-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_draws, "lp__"),
161-
posterior::extract_variable_matrix(draws_array, "lp__"))
162152
})
163153

164154
test_that("read_cmdstan_csv() returns correct diagonal of inverse mass matrix", {
@@ -221,48 +211,6 @@ test_that("read_cmdstan_csv() returns correct dense inverse mass matrix for 2 cs
221211
7.78791, 0.0780934, 4.34037, 8.13132, 7.53072, 5.61617, 4.72335, 8.10162, 7.75486, 35.6602))
222212
})
223213

224-
test_that("read_cmdstan_csv() matches rstan::read_stan_csv() for csv file", {
225-
skip_on_cran()
226-
csv_files <- c(test_path("resources", "csv", "model1-2-warmup.csv"))
227-
228-
sampler_diagnostics <- readRDS(test_path("answers", "rstan-read-stan-csv-sampler-params.rds"))
229-
sampler_diagnostics <- posterior::as_draws_array(sampler_diagnostics[[1]])
230-
csv_output <- read_cmdstan_csv(csv_files)
231-
num_warmup <- csv_output$metadata$iter_warmup/csv_output$metadata$thin
232-
if(csv_output$metadata$save_warmup) {
233-
num_iter <- csv_output$metadata$iter_sampling + csv_output$metadata$iter_warmup
234-
} else {
235-
num_iter <- csv_output$metadata$iter_sampling
236-
}
237-
238-
# match warmup sampler info
239-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_sampler_diagnostics, "divergent__"),
240-
posterior::extract_variable_matrix(sampler_diagnostics[1:num_warmup,,], "divergent__"))
241-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_sampler_diagnostics, "accept_stat__"),
242-
posterior::extract_variable_matrix(sampler_diagnostics[1:num_warmup,,], "accept_stat__"))
243-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_sampler_diagnostics, "treedepth__"),
244-
posterior::extract_variable_matrix(sampler_diagnostics[1:num_warmup,,], "treedepth__"))
245-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_sampler_diagnostics, "stepsize__"),
246-
posterior::extract_variable_matrix(sampler_diagnostics[1:num_warmup,,], "stepsize__"))
247-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_sampler_diagnostics, "n_leapfrog__"),
248-
posterior::extract_variable_matrix(sampler_diagnostics[1:num_warmup,,], "n_leapfrog__"))
249-
expect_equal(posterior::extract_variable_matrix(csv_output$warmup_sampler_diagnostics, "energy__"),
250-
posterior::extract_variable_matrix(sampler_diagnostics[1:num_warmup,,], "energy__"))
251-
# match post-warmup sampling info
252-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_sampler_diagnostics, "divergent__"),
253-
posterior::extract_variable_matrix(sampler_diagnostics[(num_warmup+1):num_iter,,], "divergent__"))
254-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_sampler_diagnostics, "accept_stat__"),
255-
posterior::extract_variable_matrix(sampler_diagnostics[(num_warmup+1):num_iter,,], "accept_stat__"))
256-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_sampler_diagnostics, "treedepth__"),
257-
posterior::extract_variable_matrix(sampler_diagnostics[(num_warmup+1):num_iter,,], "treedepth__"))
258-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_sampler_diagnostics, "stepsize__"),
259-
posterior::extract_variable_matrix(sampler_diagnostics[(num_warmup+1):num_iter,,], "stepsize__"))
260-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_sampler_diagnostics, "n_leapfrog__"),
261-
posterior::extract_variable_matrix(sampler_diagnostics[(num_warmup+1):num_iter,,], "n_leapfrog__"))
262-
expect_equal(posterior::extract_variable_matrix(csv_output$post_warmup_sampler_diagnostics, "energy__"),
263-
posterior::extract_variable_matrix(sampler_diagnostics[(num_warmup+1):num_iter,,], "energy__"))
264-
})
265-
266214
test_that("read_cmdstan_csv() works with thin", {
267215
skip_on_cran()
268216

0 commit comments

Comments
 (0)